亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

問題是現在一調用就會導致程序崩潰,我想知道可能會是什么原因?棧沒平嗎?應該怎么做

問題是現在一調用就會導致程序崩潰,我想知道可能會是什么原因?棧沒平嗎?應該怎么做

楊魅力 2023-02-11 22:18:45
假設某程序的反匯編代碼如下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貢獻1825條經驗 獲得超4個贊

是的,你需要自己彈棧
正如你提供的代碼。
add esp,c
匯編里的函數一般都不自己進行棧操作,而是需要調用者去進行

查看完整回答
反對 回復 2023-02-15
?
翻閱古今

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,會將有用的值覆蓋掉的

查看完整回答
反對 回復 2023-02-15
  • 2 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號