2012-02-03 34 views
1

微软的宏汇编器和DumpBin是很棒的工具,但是你不能将DumpBin的结果提供给MASM--它缺少正确汇编所需的一些信息(比如异常处理指令),而且语法也似乎有问题。是否有可用的“往返”x86/64反汇编程序/汇编程序组合?

是否有任何的x86/64拆装,可以产生能够组装无需修改恰好原始的可执行反汇编代码?

+0

我认为你需要扩大这个问题。有许多反汇编程序将简单地将二进制文件(代码,数据,资源等)中的所有内容转换为汇编程序,然后再将汇编程序重新组装成相同的二进制文件 - 毕竟,这只是一系列的位。我假设你实际要求的是一个反汇编程序,它能够在更高层次上“解释”二进制文件,以汇编程序可以使用的这种形式生成有用的输出(例如代码+数据段等)。 – adelphus 2012-02-03 10:26:39

+0

@adelphus:是的,我非常喜欢'dumpbin',除了输出格式可以输入到汇编程序。 'dumpbin'输出所有必要的信息,这种格式太奇怪了,这真是一种遗憾。 – Mehrdad 2012-02-06 07:02:50

回答

2

除非我们在讨论非常简单的平面可执行文件,如DOS中的.COM,否则我对此表示怀疑。目前,可执行文件除了原始代码及其数据之外,还包含许多其他内容,并且全面提取所有组件并将它们重新组合起来并不是非常简单或通用的方式。

然后,不要忘记许多指令可以用几种不同的方式编码(例如mov ax, 0)。为了解决编码歧义问题,您应该明确地组装db 0b8h, 0, 0db 0c7h, 0c0h, 0, 0而不是mov ax, 0。数据库的你可以组装没有损失。

+0

嗯,我的意思是'dumpbin'几乎舍弃了我想要的任何东西 - 它只是没有可用于任何汇编程序的格式。但它似乎反编译得相当好,似乎没有遗漏任何东西......所以这看起来不太可能做到,对吧? – Mehrdad 2012-02-06 07:02:06

+0

不是不可能的,只是这很少需要(如果有的话),我很确定没有可以开箱即用的工具。 – 2012-02-06 07:50:09