簡體   English   中英

如何確定二進制文件中調用的函數?

[英]How do I determine what functions are being called in a binary?

答案不是“查看導入地址表”。

我希望對我生成的一些二進制文件進行一些分析,特別是為了更好地了解我正在使用的庫和Windows API函數。 我已經使用Dependency Walker來看一下這個,但是我做過的一些測試向我表明,可能會有很多額外的函數調用放入IAT,即使它們沒有被調用。

我正在尋找的是一種確定調用函數的方法......而不僅僅是IAT中的內容。

最好的方法可能是扭轉它並查看所有'CALL',但我也不知道這樣做的好方法。

做這個的最好方式是什么?

  1. 啟動WinDbg(Windows的調試工具)
  2. 打開要分析的可執行文件。
  3. 運行以下命令

    • !logexts.loge
    • !logexts.logo ev(啟用詳細日志記錄)
    • !logexts.logo et(啟用文本記錄)
    • G

打開logviewer工具自帶windows調試工具查看api,默認日志路徑是desktop \\ logexts

如果您使用link.exe鏈接二進制文件,請在鏈接時傳遞/ MAP標記。 這將生成一個MAP文件(binary.map)...它將具有使用的功能(不是所有功能)。

我不知道這是不是“最好的方式”,但我有點同意你的建議,所有的CALL都給出了很好的概述。

使用“Ollydbg”調試器,您可以加載程序,轉到進程的exe模塊,然后右鍵單擊 - >搜索 - >所有模塊間調用。

這為您提供了一個很好的可排序,可搜索的列表,列出了模塊中出現的所有“CALL”,並指向其他模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM