Re: [問題] ret
※ 引述《braveforever (braveforever)》之銘言:
: 當procedure執行到ret n 時,
: 投影片上說會有兩個動作,先把 EIP=SS:ESP ---(1)
這裡因該打 EIP=SS:[ESP] 會比較好一點.
因為是取 ESP 所指向的記憶体內容
: 然後 ESP=ESP+4+n ---(2)
: 但是在執行(1)之後,CPU下一個執行的指令該為EIP所指到的那一行,
: 那麼(2)就不會被執行到?!
(2) 還是會被執行到的,因為那是 CPU 自己幫你作掉的動作,
而且那個 n 是指 Byte 如果你今天是在 32 bits 的環境下,
那他就是 4 的部數,也就是看你在 CALL 指令的上面要還原多少。
你可以用 Ollydbg 去看看 Win32 API 的作法,__stdcall 的這種方式,
都是使用 ret n 的方法在清參數的 .
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.99.35
討論串 (同標題文章)