将c++ DLL大致反汇编为机器码

disassemble c++ dll roughly to machine code

本文关键字:反汇编 机器码 c++ DLL      更新时间:2023-10-16

我知道你不能有一个c++ dll,并期望有它作为源代码,我是对的吗?但同时,当我将c++ dll还原为原始数据时,使用DUMPBIN,然后可以做一些事情来解释它,对吧?例如,我们知道大多数常用操作符的基本映射。

是否有一种工具可以粗略地将原始机器数据解释为看起来更像代码或指令的东西?问题是我没有足够的时间自己从头开始写!所以我在找一个工具或东西来做这件事。

您需要一个反汇编器,这是一个接受二进制对象(如已编译的文件、库或甚至可执行文件)并尝试将其内容重新解释为汇编的工具。

使用这样的工具通常可以检索内部符号的名称(当然,除非二进制图像被剥离,但这不是动态类库的情况)。

对于c++来说,由于名称混淆,这有点困难。

试着看一下Objdump

您可以反汇编DUMPBIN/DISASS的代码部分-但是如果您想要像c++那样的"代码",那么您需要一个反编译器。然而,它们远不是很好,而且经常产生相当难以读的代码——是的,这是你可以输入编译器的东西,但它几乎不是我所说的"人类可读"。

在我看来,最好的反汇编器是IDA(交互式反汇编器)。它有点贵,因为它的目标是专业使用,但有一个免费的(旧的)版本,你可以尝试:

http://www.hex-rays.com/products/ida/support/download_freeware.shtml

Hex-Rays反编译器(IDA的附加组件)可以从反汇编中生成C伪代码,这些伪代码在许多情况下可以重新编译。