1

我有一个我已经反汇编的 DLL,只是为了测试我的项目是否可以工作。我已经尝试再次组装它,但没有运气。

我收到不同类型的错误。

我用 IDA Pro 免费软件完成的反汇编,然后将文件导出为 .asm,再次尝试组装我尝试使用 A86 汇编器和平面汇编器。

也许我错误地反汇编了 DLL 或使用了错误的汇编程序,但有人可能会向我指出一些关于此的工具和/或资源吗?

数据:

A86,IDA 没有对拆机做分析:

C:\Users\Ma\Documents\sap assembler\a86\Temp>a86 TEST.ASM
A86 宏汇编程序,V4.02 版权所有 1995 Eric Isaacson
来源:
TEST.ASM [COMPAT.8
抱歉,没有这样的文件

Flat assembler 1.69.32,IDA 没有对反汇编进行分析:

非法指令
指令:.686p

Flat assembler 1.69.32,IDA 分析在反汇编时完成:

错误:无效名称
_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E struc

a86,拆卸时在 IDA 中进行分析:

~^
#ERROR messages will be removed if you leave these first two lines in     @@@@#

ICreateErrorInfo struc ; (sizeof=0x4, standard type)
lpVtbl dd ?     ; offset
ICreateErrorInfo ends


fd_set struc ; (sizeof=0x104, standard type)
fd_count dd ?
fd_array dd 64 dup(?)
fd_set ends


_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E struc ; (sizeof=0x8, standard type)
~              ^
#ERROR 06: Symbol Required                                                @@@@#
LowPart dd ?
HighPart dd ?
_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ends
~              ^
#ERROR 40: Conflicting Multiple Definition Not Allowed                    @@@@#


LARGE_INTEGER union ; (sizeof=0x8, standard type)
~ ^
#ERROR 01: Unknown Mnemonic                                               @@@@#
anonymous_0 _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ?
~ ^
#ERROR 01: Unknown Mnemonic                                               @@@@#
u _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ?
~ ^
#ERROR 01: Unknown Mnemonic 

我的工作流程错了吗?

4

1 回答 1

1

IDA 的输出主要面向 MASM 语法,但即使它也不能保证可重新组装。它用来忠实地表示二进制文件的一些结构可能不受任何汇编程序的支持。

您将需要编辑生成的文件以使其可接受。例如,用于表示未命名的 C 联合或结构的 ::$ 将需要替换为标识符的适当字符,例如下划线。

于 2011-08-22T20:29:37.693 回答