int _tmain(int argc, _TCHAR* argv[])
{
00251400 55 push ebp
00251401 8B EC mov ebp,esp
00251403 81 EC C0 00 00 00 sub esp,0C0h
00251409 53 push ebx
0025140A 56 push esi
0025140B 57 push edi
0025140C 8D BD 40 FF FF FF lea edi,[ebp-0C0h]
00251412 B9 30 00 00 00 mov ecx,30h
00251417 B8 CC CC CC CC mov eax,0CCCCCCCCh
0025141C F3 AB rep stos dword ptr es:[edi]
add();
0025141E E8 B8 FD FF FF call add (02511DBh)
return 0;
00251423 33 C0 xor eax,eax
}
00251425 5F pop edi
00251426 5E pop esi
00251427 5B pop ebx
00251428 81 C4 C0 00 00 00 add esp,0C0h
0025142E 3B EC cmp ebp,esp
00251430 E8 10 FD FF FF call __RTC_CheckEsp (0251145h)
00251435 8B E5 mov esp,ebp
00251437 5D pop ebp
00251438 C3 ret
===========================================
int add(){
002513C0 55 push ebp
002513C1 8B EC mov ebp,esp
002513C3 81 EC CC 00 00 00 sub esp,0CCh
----------------------------------------------------------------------> 开辟栈帧
002513C9 53 push ebx
002513CA 56 push esi
002513CB 57 push edi
----------------------------------------------------------------------> 保存现场
002513CC 8D BD 34 FF FF FF lea edi,[ebp-0CCh]
002513D2 B9 33 00 00 00 mov ecx,33h
002513D7 B8 CC CC CC CC mov eax,0CCCCCCCCh
002513DC F3 AB rep stos dword ptr es:[edi]
----------------------------------------------------------------------> 初始化栈空间
int a = 3;
002513DE C7 45 F8 03 00 00 00 mov dword ptr [a],3
return a;
002513E5 8B 45 F8 mov eax,dword ptr [a]
----------------------------------------------------------------------> 返回结果值
}
002513E8 5F pop edi
002513E9 5E pop esi
002513EA 5B pop ebx
----------------------------------------------------------------------> 恢复现场
002513EB 8B E5 mov esp,ebp
002513ED 5D pop ebp
----------------------------------------------------------------------> 恢复栈帧
002513EE C3 ret
----------------------------------------------------------------------> call对应的返回
ret = jmp + pop
汇编地址/有效地址 | 栈的内存 | 基础寄存器 | 栈上运行的函数 | |
edi | esp | |||
esi | esp | |||
ebx | esp | |||
c | esp | |||
c | ||||
c | ||||
3 | ebp+8 | |||
c | ||||
ebp | esp/ebp | add() | ||
return address | esp | |||
esp | ||||
ebp | main() |