反汇编,更改和汇编DLL文件

时间:2011-08-22 18:54:10

标签: assembly disassembly

我有一个我已经反汇编的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 

我的工作流程错了吗?

1 个答案:

答案 0 :(得分:0)

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

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