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

时间:2013-01-03 08:14:31

标签: c++ assembly binary-data

我知道你不能拥有一个C ++ DLL并期望将它作为源代码,我是对的吗?但与此同时,当我使用DUMPBIN将C ++ dll恢复为原始数据时,有一些东西可以用来解释它,对吧?例如,我们知道大多数流行运营商和所有运营商的基本映射。

是否有一种工具可以粗略地将原始机器数据解释为更符合代码或指令的内容?问题是我没有足够的时间自己写它!所以我正在寻找一种工具或其他东西来做到这一点。

3 个答案:

答案 0 :(得分:0)

你需要一个反汇编程序,这是一个获取二进制对象(如编译文件,库,甚至是可执行文件)的工具,并尝试将其内容重新解释为程序集。

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

同样对于C ++,由于名称mangling,这有点困难。

尝试一眼Objdump

答案 1 :(得分:0)

你可以反汇编DUMPBIN / DISASS的代码部分 - 但如果你想要像C ++这样的“代码”,那么你需要一个反编译器。然而,它们远非伟大,并且经常制作相当难以理解的代码 - 是的,它可以提供给编译器,但它几乎不是我所谓的“人类可读”。

答案 2 :(得分:0)

根据我的偏见,最好的反汇编者是IDA(Interactive Disassembler)。它有点贵,因为它的目标是专业用途,但你可以尝试一个免费软件(旧版):

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

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