批量反汇编DLL和EXE文件?

逆向工程 视窗 部件
2021-07-08 09:40:48

在 中%SYSTEMROOT%,大约有 2000 个 DLL 和 EXE 文件。我正在研究逆向工程其中一些是其他应用程序的依赖项。

但是,我最想要的是反汇编所有文件并从所有文件中获取程序集文件,以便更“快速”地搜索代码。即使我一直专注于单个函数和文件,否则我将需要单独反编译每个 DLL,这是大量重复性工作。

找到一个合适的 x64 反汇编器工具已经够难的了,让一些具有命令行选项的东西变得很长。你知道如何解决这个问题吗?

3个回答

如果您安装了任何版本的 Visual Studio 或 Visual Studio Build Tools,您就可以使用一个名为 的强大命令行工具dumpbin,其中包括一个反汇编器选项,可供您使用。

dumpbin /SECTION:.text /DISASM file.exe > file.txt

有关更多信息,请查看 MSDN 文档 dumpbin

Unix 工具是您的朋友!您可以使用 Unix 命令的组合来反汇编所有文件。这些可以通过Cygwin在 Windows 上轻松获得

find $SYSTEMROOT -name \*.exe -or -name \*.dll -print0 |
xargs -0 -n 1 dumpbin /disasm 

第一个命令查找所有.exe.dll命令。第二个适用dumpbin于每个找到的文件名,它与 Visual Studio 一起打包。您可以将输出重定向到一个文件中,也可以修改上述顺序,将每个反汇编文件的输出写入不同的输出文件中。您也可以替换dumpbin为您最喜欢的反汇编程序。

您总是可以编写一个 IDAPython 脚本来:

  1. 使用idc.LoadFile.
  2. 等待自动分析完成使用 ida_auto.auto_wait
  3. 通过调用保存生成的 IDB 文件idc.save_database

然后通过idc.LoadFile再次调用加载下一个文件

IMO,IDA 的反汇编程序与 dumpbin 实用程序相比通常会产生更好的结果。