thunk9
来源:互联网 发布:手机转帖软件 编辑:程序博客网 时间:2024/05/01 13:06
void free(int a){
00EA13C0 push ebp 把ebp寄存器所存内容压栈
00EA13C1 mov ebp,esp 让ebp现在保存现在esp寄存器所存内容,即push ebp后的栈顶指针
00EA13C3 sub esp,0CCh 让esp向上指向新的栈顶,0CCh是预留空间
00EA13C9 push ebx
00EA13CA push esi
00EA13CB push edi
00EA13CC lea edi,[ebp-0CCh]
00EA13D2 mov ecx,33h
00EA13D7 mov eax,0CCCCCCCCh
00EA13DC rep stos dword ptr es:[edi]
int b = 1;
00EA13DE mov dword ptr [b],1给b复制,这里[b] == [esp + 4],vc 6.0就是这样显示的
}
00EA13E5 pop edi
00EA13E6 pop esi
00EA13E7 pop ebx
00EA13E8 mov esp,ebp 让esp重新指向push ebp后的esp,因为ebp正保存着它呢
00EA13EA pop ebp 因为这时esp所指内存空间里存的就是ebp,所以ebp的值得以恢复
00EA13EB ret 让EIP指向当前esp寄存器中保存的地址,调转到free(1)之后那条指令,