2011-08-22 71 views
0

我有一個反彙編的DLL,只是爲了測試我的項目是否能夠正常工作。我試過再次裝配它,但沒有運氣。拆卸,更改和組裝DLL文件

我得到不同種類的錯誤。

我已經用IDA Pro免費軟件進行反彙編,然後將該文件導出爲.asm文件,嘗試重新組裝它。我試圖使用A86彙編器和平面彙編器。

也許我正在反彙編錯誤的DLL或使用錯誤的彙編程序,但有人可能會指點我一些工具和/或資源嗎?

數據:

A86,IDA沒有分析拆卸完成:

C:\Users\Ma\Documents\sap assembler\a86\Temp>a86 TEST.ASM
A86 macro assembler, V4.02 Copyright 1995 Eric Isaacson
Source:
TEST.ASM [COMPAT.8
Sorry, no such file

平彙編1.69.32,IDA沒有分析拆卸完成:

illegal instruction
instruction: .686p

平彙編1.69。 32,IDA分析完成拆卸:

error: invalid name
_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 

是我的工作流程錯了嗎?

+0

你能指定你得到的錯誤嗎? – m0skit0

回答

0

IDA的輸出主要針對MASM語法,但不保證即使通過它也不能重新裝配。它用於忠實地表示二進制文件的一些結構可能不被任何彙編程序支持。

您將需要編輯生成的文件以使其可接受。例如,用於表示未命名的C聯合體或結構的:: $將需要用標識符的適當字符替換,例如,下劃線。

+0

這似乎是一個很大的挑戰,裝配是10000多條線。有沒有適合某些反彙編程序生成的代碼的彙編器? 我也看過更改程序集,它似乎也更改了十六進制,然後在原始文件上執行某種類型的十六進制修補程序? 這聽起來似乎合理嗎? –

+0

是的,如果你需要做一些小改動,修補文件可能是一件容易的事情。 –

+0

嘿伊戈爾,感謝您的幫助,您可能沒有鏈接到「教程」文章關於此? :)或者,我是至少使用正確的工具:) –