【逆向知識】堆棧圖-匯編中的函數
阿新 • • 發佈:2018-02-17
ring %d 保留 you all this 返回 執行 寄存器
push ebp ; 提升堆棧 mov ebp,esp sub esp,0CCh ------------------------------------------ push ebx ; 保留現場,函數在執行的時候會用到一些寄存器,但這些寄存器中 push esi ; 值很可能會被程序用到,所以要先存儲到內存中 push edi push ecx ------------------------------------------ lea edi,[ebp-0CCh] ; 向分配的空間填充數據 mov ecx,33h mov eax,0CCCCCCCCh rep stos dword ptr es:[edi] ---------------------------------- pop ecx ; 函數實際實現的功能 mov dword ptr [this],ecx mov eax,dword ptr [this] mov dword ptr [eax+4],1 mov eax,dword ptr [nID] push eax push offset string "\r\nID:%d Who is your God? I am!\r\n"... (0EC6E94h) call _printf (0E33D73h) add esp,8 ---------------------------------------- pop edi ; 恢復現場,將之前保留的寄存器的值恢復 pop esi pop ebx ----------------------------------------- add esp,0CCh ; 堆棧平衡 cmp ebp,esp call __RTC_CheckEsp (0E32356h) mov esp,ebp ; 降低堆棧 pop ebp ; 恢復棧底 ret 4 ; 函數執行完畢,返回到調用處,等同於pop eip
【逆向知識】堆棧圖-匯編中的函數