%SYSTEMROOT%中,大约有2000个DLL和EXE文件。我正在研究其中的一些逆向工程,这些逆向工程是其他应用程序的依赖项。快速编写更多代码。即使我一直专注于单个函数和文件,否则我仍然需要分别反编译每个DLL,这是很多重复的工作。带有命令行选项的东西。您知道如何解决此问题吗?

#1 楼

如果安装了任何版本的Visual Studio或Visual Studio Build Tools,则将拥有一个名为dumpbin的强大命令行工具,其中包括反汇编程序选项供您使用。 />有关更多信息,请参阅dumpbin上的MSDN文档

评论


这真太了不起了!从来不知道VS工具链中为此内置了工具。由于您已经描述了最完整的核心问题(如何反编译文件),因此我将接受您的回答并同时支持这两个问题。然后,我将找到脚本解决方案(cygwin,LINQPad等)

–bytecode77
17年12月3日在10:25

#2 楼

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

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


第一个命令查找所有.exe.dll命令。第二个适用于dumpbin(随Visual Studio一起提供)在每个找到的文件名上。您可以将输出重定向到文件中,也可以修改以上顺序以将每个反汇编文件的输出写入不同的输出文件。您也可以用自己喜欢的反汇编程序替换dumpbin

评论


我没有看到任何名为“ dumpbin”的软件包。如果“ disasm”是任何反汇编程序命令行工具的占位符,那么我首先需要一个。对我而言,真正的复杂性是找到并使用适当的工具。拥有一个已经足够了,因为有很多方法可以调用它,cygwin只是其中之一。

–bytecode77
17年2月2日在22:39

dumpbin是Visual Studio工具

– fpmurphy
17年12月3日,下午2:54

@DiomidisSpinellis:这些天来,我总是推荐Windows版Git附带的所有基本工具。我的主要论点:这是一个代码签名的发行版。

– 0xC0000022L♦
18年6月17日在20:04

@ 0xC0000022L我喜欢Cygwin通过其包管理器允许您从数百个项目中进行选择,从而使您与之一起成长。 Windows的Git不受此区域限制吗?

– Diomidis Spinellis
18年6月18日在21:06

#3 楼

您始终可以编写一个IDAPython脚本,该脚本将:


使用idc.LoadFile加载文件。通过调用ida_auto.auto_wait保存生成的IDB文件。

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

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