【Win32彙編】__declspec(naked)裸函數

使用 __declspec(naked) 定義的函數,編譯器只會負責參數壓棧、執行CALL指令,和釋放參數的內存(堆棧平衡),除此之外啥也沒有,比如提升堆棧,寄存器的保存和恢復,或者是函數返回,這些都要自己添加。 上圖是一個裸函數,因爲連參數都沒有,編譯器做的事情就是一個CALL。由於沒有RET,所以程序會出錯。 調用處生成的CALL 跳轉到函數體,全是INT3,沒有RET,函數無法返回到調用處,
相關文章
相關標籤/搜索