码迷,mamicode.com
首页 > 其他好文 > 详细

反汇编理解函数调用过程

时间:2016-06-18 22:18:58      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

 

void main()
{
013A4600  push        ebp  
013A4601  mov         ebp,esp  
013A4603  sub         esp,0CCh  
013A4609  push        ebx  
013A460A  push        esi  
013A460B  push        edi  
013A460C  lea         edi,[ebp-0CCh]  
013A4612  mov         ecx,33h  
013A4617  mov         eax,0CCCCCCCCh  
013A461C  rep stos    dword ptr es:[edi]  
    int result = sum(1, 2, 3, 4);
013A461E  push        4  
013A4620  push        3  
013A4622  push        2  
013A4624  push        1  
013A4626  call        sum (013A1442h)  
013A462B  add         esp,10h  
013A462E  mov         dword ptr [result],eax  
}
013A4631  xor         eax,eax  
013A4633  pop         edi  
013A4634  pop         esi  
013A4635  pop         ebx  
013A4636  add         esp,0CCh  
013A463C  cmp         ebp,esp  
013A463E  call        __RTC_CheckEsp (013A12D5h)  
013A4643  mov         esp,ebp  
013A4645  pop         ebp  
013A4646  ret  

 

 

int sum(int a, int b, int m, int n)
{
013A5160  push        ebp  
013A5161  mov         ebp,esp  
013A5163  sub         esp,0CCh  
013A5169  push        ebx  
013A516A  push        esi  
013A516B  push        edi  
013A516C  lea         edi,[ebp-0CCh]  
013A5172  mov         ecx,33h  
013A5177  mov         eax,0CCCCCCCCh  
013A517C  rep stos    dword ptr es:[edi]  
    int c = 11;
013A517E  mov         dword ptr [c],0Bh  
    return a + b + c;
013A5185  mov         eax,dword ptr [a]  
013A5188  add         eax,dword ptr [b]  
013A518B  add         eax,dword ptr [c]  
}
013A518E  pop         edi  
013A518F  pop         esi  
013A5190  pop         ebx  
013A5191  mov         esp,ebp  
013A5193  pop         ebp  
013A5194  ret 

 

 

一张图说明我的理解:

技术分享

画的是新开辟栈帧的过程,退出当前栈帧的过程与之相反。pop edi ,pop esi , pop ebx ,mov esp,ebp ,pop ebp 。之后,edi,esi,ebx恢复原来状态,ebp指向上一个栈帧栈底,esp指向上一个栈帧栈顶。

 

反汇编理解函数调用过程

标签:

原文地址:http://www.cnblogs.com/rixiang/p/5596960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!