正常下:
ebp:為上一層函式棧底
ebp+4:進入call下一條執行指令位址,也可以叫做返回位址
ebp+8:從左往右看的話算是第乙個引數 (如果這個函式是有引數的話)
ebp+0c:第二引數 (如果這個函式是有引數的話)
ebp+10:第三個引數 (如果這個函式是有引數的話)
ebp-***:一般為區域性變數
執行函式的流程:
1.傳入引數
2.儲存函式下一條位址做返回位址
3.儲存當前函式的棧底
4.申請空間cccccccc
5.儲存暫存器(防止等下當前函式開始實際執行,使用了暫存器,而打亂上一層暫存器原本數值)
6.開始該函式要實現的事情(前面鋪墊都是為了這一步)
7.函式實現完成後,恢復暫存器,
8.釋放申請空間
9.恢復原本棧底
10.把返回位址給eip
11.內平棧或外平棧(由呼叫約定決定)
C反彙編例項(詳細註解版)(一)
呵,好久沒寫 csdn 文章了,來湊個熱鬧。最近我閱讀了楚狂人 wowocock 寫的 天書夜讀 試讀本,對 c反彙編感觸頗深,書中有一例演算法反彙編,其對彙編的閱讀確實富有挑戰,而該書中也未詳解,在此,我謹將此例詳細分析如下,幫助大家更好理解 c反彙編 若有任何錯誤,請大家批評指正!該例的要求是求...
C反彙編例項(詳細註解版)(三)
上次我分析了一下,debug 模式下反彙編後的演算法部分 天才的您可能覺得不算糟,想再搞點花樣,那麼本文就能滿足你的需求。天書夜讀上其實還貼出來了 release 模式下的 它經過 vc編譯器 o2的優化,我初次看到反彙編 時,還真汗了一把。不過定下心來細細品位還是可以看懂的,儘管正如原書所說,連語...
C反彙編例項(詳細註解版)(三)
上次我分析了一下,debug 模式下反彙編後的演算法部分 天才的您可能覺得不算糟,想再搞點花樣,那麼本文就能滿足你的需求。天書夜讀上其實還貼出來了 release 模式下的 它經過 vc編譯器 o2的優化,我初次看到反彙編 時,還真汗了一把。不過定下心來細細品位還是可以看懂的,儘管正如原書所說,連語...