空程式:
int main()
;各指標出棧
00411380 pop edi ;
彈出edi
00411381 pop esi ;
彈出esi
00411382 pop ebx ;
彈出ebx
00411383 mov esp,ebp ;esp
復原00411385 pop ebp ;
彈出ebp,也復原
00411386 ret ;返回
函式呼叫:
int _tmain(int argc, _tchar* argv)
恢復現場
0041141c
pop edi
0041141d pop esi
0041141e pop ebx
以下全為執行時esp檢查:
先恢復因為為main預留空間而改變的棧指標
0041141f
add esp,0f0h
00411425 cmp ebp,esp
00411427 call @ilt+320(__rtc_checkesp) (411145h)
正常時只需要以下兩句就可以正常恢復esp,再出棧,又可以恢復ebp.
0041142c
mov esp,ebp
0041142e pop ebp
0041142f
ret ;main返回
int fun1(int a, int b, int c)
恢復現場
00411abe pop edi
00411abf pop esi
00411ac
0 pop ebx
以下全為執行時esp檢查:
先恢復因為預留函式儲存控制項而改變的棧指標,
00411ac
1 add esp,0e4h
再比較ebp,esp,假如程式執行正確,兩個值應該相等.
00411ac
7 cmp ebp,esp
00411ac
9 call @ilt+320(__rtc_checkesp) (411145h)
正常時只需要以下兩句就可以正常恢復esp,再出棧,又可以恢復ebp.
00411ace mov esp,ebp
00411ad0 pop ebp
返回main
從pop堆疊中的eip開始執行
00411ad1 ret
int fun2(int a, int b, int c, int d, int e)
恢復現場
00412097 pop edi
00412098 pop esi
00412099 pop ebx
0041209a
mov esp,ebp
0041209c
pop ebp
0041209d ret ;返回fun1
,從pop堆疊中的eip開始執行
C 函式呼叫原理理解
空程式 int main 各指標出棧 00411380 pop edi 彈出edi 00411381 pop esi 彈出esi 00411382 pop ebx 彈出ebx 00411383 mov esp,ebp esp復原 00411385 pop ebp 彈出ebp,也復原 00411386...
CSS 原理理解
網頁製作最初,html規定了 normal document stream 標準文件流 來規範元素在網頁中的顯示法則 標準文件流中元素分兩種 塊內元素,行內元素。行內元素的特點 span標籤 豎直margin中的塌陷現象,上下緊密排列的元素的外邊距並不是兩個元素外邊距之和,而是選取那個最大的外邊距作...
Spring IOC原理理解
ioc,inversion of control,控制倒轉。這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。di,dependency injection,依賴注入。在系統執行中,動態的向某個物件提供它所需要的其他物件...