跳躍後稱這可能是容易的,但我感到困惑了一段時間:回裝配
假設我有類似
main:
...
call some_fun
...
some_fun:
...
jmp op
...
op:
...
ret
將這個RET正確返回通話開始的地方?如果沒有,那麼ret如何正確返回?
跳躍後稱這可能是容易的,但我感到困惑了一段時間:回裝配
假設我有類似
main:
...
call some_fun
...
some_fun:
...
jmp op
...
op:
...
ret
將這個RET正確返回通話開始的地方?如果沒有,那麼ret如何正確返回?
如果在所提供的例子,你要下指令其執行它返回到是後呼叫some_fun在指令之後,然後是它會做正是你想要的,前提是您在返回前清理堆棧幀。
假設您正在使用x86彙編,以下是正在發生的事情。
希望這會有所幫助。
感謝您的解釋 – user2304942 2013-05-05 17:32:15
@ user2304942 - 你非常歡迎。 – Sparky 2013-05-05 18:25:33
如果它仍然崩潰然後嘗試
移動DWORD [STAK],ESP;劈頭
和結束
MOV ESP,[STAK]
RET
kinda thing
gl
自從我做了任何程序集已經很長時間了,但我認爲在'some_fun'中,你必須在跳轉之前在棧上存儲返回地址。我認爲。 :/ – GJK 2013-05-03 23:08:55