3

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

我希望对我正在生成的一些二进制文件进行一些分析,特别是为了更好地了解我正在使用哪些库和 Windows API 函数。我已经使用 Dependency Walker 来查看这一点,但我所做的一些测试表明,IAT 中可能有很多额外的函数调用,即使它们没有被调用。

我正在寻找的是一种确定正在调用哪些函数的方法......而不仅仅是放在 IAT 中的内容。

最好的方法可能是扭转它并查看所有的'CALL',但我也不知道这样做的好方法。

做这个的最好方式是什么?

4

3 回答 3

1

如果您使用 link.exe 链接二进制文件,请在链接时传递 /MAP 标志。这将生成一个 MAP 文件(binary.map)...它将具有使用的功能(不是所有功能)。

于 2013-10-22T11:30:25.060 回答
1
  1. 启动WinDbg(windows的调试工具)
  2. 打开要分析的可执行文件。
  3. 运行以下命令

    • !logexts.loge
    • !logexts.logo ev(启用详细日志记录)
    • !logexts.logo et(启用文本记录)
    • G

打开logviewer工具自带的windows调试工具查看api的,默认日志路径为desktop\logexts

于 2013-10-21T14:20:43.173 回答
0

我不知道这是否是“最佳方式”,但我有点同意你的建议,即所有 CALL 都提供了一个很好的概述。

使用“Ollydbg”调试器,您可以加载程序,进入进程的 exe 模块并右键单击 -> 搜索 -> 所有模块间调用。

这为您提供了一个很好的可排序、可搜索的列表,其中列出了出现在您的模块中并通向其他模块的所有“CALL”。

于 2013-10-16T23:17:17.697 回答