IDA問題相關


1.當想使用F5時出現“please position the cursor within a function”,那么就創建函數,但是創建時出現“The function has undefined instruction/data at the specified address.
Your request has been put in the autoanalysis queue.”則需要對選定代碼創建函數。IDA默認到下一個函數開頭(或者固定函數結尾標志),所以難免會出現問題。

轉:https://bbs.pediy.com/thread-158896.htm

高手飄過~,本文章只想讓搜索引擎收錄,以便那些新手查找的。

如圖,


代碼是紅色的,就是說IDA沒有分析出來,為了方便分析,我們會用快捷鍵P(Create Function) 來創建函數.只是我們在函數頭部 按P的時候 總會提示

The function has undefined instruction/data at the specified address.
Your request has been put in the autoanalysis queue.

大家注意 retn  后面兩行多余的代碼,這是罪魁禍首.如果我們不能創建函數,就不能使用F5來分析代碼了,想讓這些代碼變綠色的方法(創建函數)很簡單.
用鼠標從函數頭部開始到 retn 結尾 拖一下,變成灰色.



然后用快捷鍵 P 或者右鍵菜單,CreateFunction 來創建函數就可以了。

用拖的方法,去創建一個函數的好處是,我們可以選擇任意的一部分IDA分析不出來的代碼(就是紅色代碼),成為一個綠色的代碼(IDA可識別的代碼).

當然了,到這里也不算完.下圖是代碼變綠色的,我用上面的方法創建函數了,可還是不能F5,



我們通過Stack Pointer 發現這個函數的堆棧是不平衡的.此時我們需要找接近retn 的 最后一個Call 然后去修正堆棧.



我們看到 retn 左邊綠色的數字是 28,我們通過ALT + k 修正堆棧,把 28 retn 改成 0 就可以了。
修正堆棧的時候一定要選擇 Call 然后修正堆棧,下圖是修正后的 代碼



很簡單的一個東西,篇幅有點大了,可能存在一些問題,不過我的目的是F5就可以了 嘿嘿.

 ----------------------

-call analysis failed
成因:調用分析失敗,未能成功解析參數位置和參數個數  程序會崩潰,程序會提供一個地址
對於間接調用類似call eax可使用設置調用地址
對於直接調用,查看調用目標的type 是否正確,可變參數是引發這種錯誤的主要原因之一
解決方法,找到出錯的地址,對該指令使用快捷鍵y,修改目標函數的參數個數,參數個數根據push的個數而定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM