这段花指令代码为什么使用:mov eax,[MessageBox+4],sub eax,4前后加减4是什么作用?
;花指令反反汇编与反跟踪示例 by AoGo
;欢迎访问我的站点:aogo.yeah.net
;这段代码很简单,但是使用Win32DASM反汇编此程序,不但无法正常显示出输入/输出函数名与字符串列表,并且会让它反汇编出错误的代码.
;同样这段代码能对付SoftICE,使用SoftICE下MessagBoxA中断,中断后,你会发现SoftICE列出的代码一样是面目全非.
;本站有些例子相关的文章,标题为"MASM的反反汇编技术",希望对软件保护者能有帮助.
.386
.Model Flat, StdCall
Option Casemap :None ; 不区分大小写(对API与API常数无效)
;___________________________________________________________________________
Include windows.inc
Include user32.inc
Include kernel32.inc
IncludeLib user32.lib
IncludeLib kernel32.lib
.data ;数据段
.data?
.CODE
START:
push 0
push 0
push offset Welcome
push 0
jz @F
jnz @F
Welcome db "Welcome",0
@@:
mov eax,[MessageBox+4]
sub eax,4
jnz @F
Welcome1 db "Welcome",0
@@:
call eax
;在这里写入代码
invoke ExitProcess,0
END START
这段花指令代码为什么使用:mov eax,[MessageBox+4],sub eax,4前后加减4是什么作用?
另外jz @F,jnz @F代码里面没有那个@F标签,这个为什么不报错?
请教请教