问题描述
使用 MASM 从 IDA 编译导出的程序集时,出现以下两个错误:
test.exe.asm(32767) : Fatal error A1019: invalid debug and browser data; file exceeds line limit
test.exe.asm(2697) : error A2068: instruction prefix not allowed
mov eax,ds:dword_40D028
test eax,eax
jz short loc_401D40
rep retn <----- Line 2697
首先:这些错误是怎么发生的?原来的 .exe 工作正常。显然反汇编不能产生准确的原始程序集,但它至少应该产生工作代码,不是吗?
其次:我该如何解决这个问题?
编辑:尝试使用 JWASM 编译程序集时,我不再遇到超出行数限制的错误,而是出现以下错误:
test.exe.asm(40764) : Error A2150: Missing operator in expression
test.exe.asm(40767) : Error A2150: Missing operator in expression
test.exe.asm(40768) : Error A2150: Missing operator in expression
test.exe.asm(40769) : Error A2150: Missing operator in expression
test.exe.asm(40772) : Error A2150: Missing operator in expression
test.exe.asm(40773) : Error A2150: Missing operator in expression
test.exe.asm(40774) : Error A2150: Missing operator in expression
test.exe.asm(40777) : Error A2150: Missing operator in expression
test.exe.asm(40778) : Error A2150: Missing operator in expression
test.exe.asm(40779) : Error A2150: Missing operator in expression
test.exe.asm(40782) : Error A2150: Missing operator in expression
test.exe.asm(40783) : Error A2150: Missing operator in expression
test.exe.asm(40815) : Error A2150: Missing operator in expression
test.exe.asm(40816) : Error A2150: Missing operator in expression
test.exe.asm(40817) : Error A2150: Missing operator in expression
test.exe.asm(40818) : Error A2150: Missing operator in expression
test.exe.asm(40819) : Error A2150: Missing operator in expression
test.exe.asm(40820) : Error A2150: Missing operator in expression
test.exe.asm(40821) : Error A2150: Missing operator in expression
test.exe.asm(40822) : Error A2150: Missing operator in expression
test.exe.asm(40823) : Error A2150: Missing operator in expression
test.exe.asm(40824) : Error A2150: Missing operator in expression
test.exe.asm(40825) : Error A2150: Missing operator in expression
test.exe.asm(40826) : Error A2150: Missing operator in expression
test.exe.asm(40827) : Error A2150: Missing operator in expression
test.exe.asm(40828) : Error A2150: Missing operator in expression
test.exe.asm(40829) : Error A2150: Missing operator in expression
test.exe.asm(40830) : Error A2150: Missing operator in expression
test.exe.asm(40831) : Error A2150: Missing operator in expression
test.exe.asm(40832) : Error A2150: Missing operator in expression
; Segment type: Pure data <----- Line 40759
; Segment permissions: Read
imports segment para public 'DATA' use32
assume cs:imports
;org 40E000h
__IMPORT_DESCRIPTOR_kernel32 dd rva off_40E098 ; Import Name Table
dd 0 ; Time stamp
dd 0 ; Forwarder Chain
dd rva aKernel32Dll ; DLL Name
dd rva AllocConsole ; Import Address Table
__IMPORT_DESCRIPTOR_user32 dd rva byte_40E12C+4 ; Import Name Table
dd 0 ; Time stamp
dd 0 ; Forwarder Chain
dd rva aUser32Dll ; DLL Name
dd rva MessageBoxA ; Import Address Table
__IMPORT_DESCRIPTOR_msvcrt dd rva byte_40E13C+4 ; Import Name Table
dd 0 ; Time stamp
dd 0 ; Forwarder Chain
dd rva aMsvcrtDll ; DLL Name
dd rva printf ; Import Address Table
__IMPORT_DESCRIPTOR_Advapi32 dd rva byte_40E154+4 ; Import Name Table
dd 0 ; Time stamp
dd 0 ; Forwarder Chain
dd rva aAdvapi32Dll ; DLL Name
dd rva CryptAcquireContextA ; Import Address Table
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
aKernel32Dll db 'kernel32.dll',0 ; DATA XREF: imports:0040E00C\u2191o
align 2
aUser32Dll db 'user32.dll',0 ; DATA XREF: imports:0040E020\u2191o
align 2
aMsvcrtDll db 'msvcrt.dll',0 ; DATA XREF: imports:0040E034\u2191o
align 2
aAdvapi32Dll db 'Advapi32.dll',0 ; DATA XREF: imports:0040E048\u2191o
align 4
;
; Import names for kernel32.dll
;
off_40E098 dd rva word_40E170 ; DATA XREF: imports:__IMPORT_DESCRIPTOR_kernel32\u2191o
dd rva unk_40E180
dd rva word_40E18E
dd rva word_40E19E
dd rva word_40E1AE
dd rva word_40E1C4
dd rva word_40E1D6
dd rva word_40E1E6
dd rva word_40E1F6
dd rva word_40E20A
dd rva word_40E21E
dd rva unk_40E230
dd rva unk_40E244
dd rva word_40E256
dd rva word_40E26C
dd rva word_40E280
dd rva word_40E28E
dd rva word_40E29E
dd 0
imports ends
test.exe.asm(40884) : Error A2209: Syntax error: :
test.exe.asm(40890) : Error A2209: Syntax error: :
test.exe.asm(40897) : Error A2209: Syntax error: :
从第 40882 行开始的代码:
extrn LoadLibraryA:dword <------ line 40882
extrn CreateThread:dword
extrn byte_40E12C:byte:0Ch
; DATA XREF: imports:__IMPORT_DESCRIPTOR_user32\u2191o
;
; Imports from user32.dll
;
extrn MessageBoxA:dword ; DATA XREF: imports:0040E024\u2191o
extrn byte_40E13C:byte:10h
; DATA XREF: imports:__IMPORT_DESCRIPTOR_msvcrt\u2191o
;
; Imports from msvcrt.dll
;
extrn printf:dword ; DATA XREF: imports:0040E038\u2191o
extrn memset:dword
extrn byte_40E154:byte:10h
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)