【发布时间】:2014-01-03 07:18:31
【问题描述】:
我用 VB Decompiler 反编译了一个程序,它说我的目标函数(我想查看代码的那个)位于地址 0x00617B70。因此,一旦我反汇编了应用程序,我就会转到那个内存地址,我看到了:
CALL 0861BBA1
ADD BYTE PTR [EAX], DH
IN AL, 0
XOR AL, 0
ADD BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
SBB BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
SBB AL, 0
ADD BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
ADD AL, 0
ADD BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
OR AL, FF
ADD EAX, DWORD PTR [EAX]
JE 00617B99
ADD DWORD PTR [EAX], EAX
INSB
INC DWORD PTR [EBX]
ADD BYTE PTR [EAX-1], DH
ADD EAX, DWORD PTR [EAX]
AND BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
ADD BYTE PTR [EAX], AL
ADD EAX, 0
ADD BYTE PTR [EAX-1], AL
ADD DWORD PTR [EAX], EAX
INC ESP
INC DWORD PTR [EBX]
ADD BYTE PTR [EAX-1], BL
ADD AL, BYTE PTR [EAX]
XOR BH, BH
ADD AL, BYTE PTR [EAX]
ADC BH, BH
ADD AL, BYTE PTR [EAX]
INSB
OR AL, 0
OR BYTE PTR [EAX], CL
ADD BYTE PTR [ESI], AL
INC EAX
ADD BYTE PTR [EAX+71], AL
PUSHAD
--
SHL BYTE PTR [EAX-1], 1
PUSH ES
ADD AH, BH
ADC AL, 8
OR BYTE PTR [EAX], AL
MOV DWORD PTR [EAX+6E70AD00], EAX
--
SHL BYTE PTR [EAX-1], 1
POP ES
ADD AH, BH
ADC AL, 8
OR BYTE PTR [EAX], AL
MOV DWORD PTR [EDX+6C70AD00], EAX
JMP FAR FWORD PTR [EBX+6E]
这看起来不像是一个函数,对吧?我对 ASM 一无所知,但我希望是这样的:
PUSH EBP
MOV EBP, ESP
SUB ESP, 8
...more stuff here...
RETN
特别是 RETN 指令说它是关于一个函数的,对吧?
任何想法我做错了什么?
【问题讨论】:
-
可以显示可执行文件的反汇编的相关部分吗? 内存区域的反汇编几乎可以肯定是数据,因此不打算执行。还有反编译的代码。
-
add [eax], al为 0。你在反汇编一个错误的东西。 -
抱歉,我还不懂 ASM。拆解的相关部分有哪些?当我在第一条 ASM 行中单击鼠标右键 > 选择函数时,该代码是 MHS6.1 自动选择的代码。
-
你说你用VB反编译器反编译过。你确定你的可执行文件是用 VB 语言编写的吗?
-
是的,100% 确定。可能是vbdecompiler显示函数地址错误?
标签: assembly vb6 x86 disassembly