假設某程序的反匯編代碼如下ESP:00000000push ebx 這句執行后:ESP:00000004push esi 這句執行后:ESP:00000008push eax 這句執行后:ESP:0000000ccall 50b890 這句執行后:ESP:0000000cadd esp,c 這句執行后:ESP:00000000retn------------------我現在要自編一段代碼注入的程序中,目的是要從外部調用50b890那個CALL代碼如下:pushadpush ebxpush esipush eaxcall 50b890add esp,cpopadretn
2 回答

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
信息不全,不好解決。
call 50b890 ,其中50b890 是哪里的外部調用。是在目標進程空間的調用嗎?
call 50b890 有幾個參數?push ebx push esi 不知道是保護環境的還是參數。
call 50b890 是什么方式平棧的?deiphi的和vc的有區別,(應該不是系統API的吧)
你試試add esp,4看看,可能它只有一個參數(push eax),同時還需要pop ebx, pop esi?;蛘邔⑦@句取消,它內部已經平棧了?;蛘邔⑦@句取消,并且加pop ebx, pop esi恢復環境。
如果你能調試,那就好判斷了。pushad后的esp和popad前的應該一致。
還有一個,你的call 50b890 需要做什么操作,CALL返回后的寄存器里的值是否有用,如果有用,就不能popad,會將有用的值覆蓋掉的
- 2 回答
- 0 關注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消