求助调用子程序只有一个RETN的调用的作用
代码如下:CPU Disasm
地址 十六进制数据 汇编代码 注释
1000513F 90 nop ; EBX EBP的值是判断授权类型,确认序列号是否匹配,重点研究
10005140/$81EC 880C00 sub esp,0C88 ; crp32dll.ExplainErr(guessed Arg1,Arg2)
10005146|.53 push ebx
10005147|.8B9C24 940C mov ebx,dword ptr ; 12F0DC传值过来FFFFFFFB=-1
1000514E|.55 push ebp
1000514F|.8BAC24 940C mov ebp,dword ptr ; 12F0D8传值过来FFFFFFFB=3
10005156|.56 push esi
10005157|.57 push edi
10005158|.53 push ebx ; /<%d> =>
10005159|.55 push ebp ; |<%d> =>
1000515A|.68 7C660110 push offset 1001667C ; |Format = ">>ExplainErr(%d, %d)
"
1000515F|.E8 4CF2FFFF call 100043B0 ; \crp32dll.100043B0, 不用跟,只有返回语名
10005164|.83C4 0C add esp,0C
10005167|.85DB test ebx,ebx ; EBX=-1
10005169|.7D 0A jge short 10005175 ; 高于等于,或者进位标志转移清零跳转
1000516B|.8BC3 mov eax,ebx
1000516D|.F7D8 neg eax ; =0-EBX
1000516F|.894424 10 mov dword ptr ,eax ; ESP+10=12EBEC
10005173|.EB 04 jmp short 10005179
10005175|>895C24 10 mov dword ptr ,ebx
10005179|>83FD 08 cmp ebp,8
1000517C|.0F85 840000 jne 10005206 ; 下面EBX EBP的值是判断授权类型
10005182|.83FB E5 cmp ebx,-1B ; Cascaded IF (例 FFFFFFE4..FFFFFFE53 退出)
10005185|.75 3D jne short 100051C4
10005187|.68 50660110 push offset 10016650 ; /Format = "The requested License Server was not found", case FFFFFFE5 of cascaded IF crp32dll.10005182
1000518C|.68 14890110 push offset 10018914 ; |Arg1 = ASCII "PROGRAM MOVED OR SITEKEY BAD PASSWORD"
10005191|.E8 711C0000 call 10006E07 ; \crp32dll.10006E07
10005196|.68 40660110 push offset 10016640 ; /Format = "<<ExplainErr("
1000519B|.E8 10F2FFFF call 100043B0 ; \crp32dll.100043B0
100051A0|.68 14890110 push offset 10018914 ; /<%s> = "PROGRAM MOVED OR SITEKEY BAD PASSWORD"
100051A5|.68 0C650110 push offset 1001650C ; |Format = ""%s")
"
100051AA|.E8 01F2FFFF call 100043B0 ; \crp32dll.100043B0
100051AF|.83C4 14 add esp,14
100051B2|.B8 14890110 mov eax,offset 10018914 ; ASCII "PROGRAM MOVED OR SITEKEY BAD PASSWORD"
100051B7|.5F pop edi
100051B8|.5E pop esi
100051B9|.5D pop ebp
100051BA|.5B pop ebx
100051BB|.81C4 880C00 add esp,0C88
100051C1|.C2 0800 retn 8
在地址
1000515F|.E8 4CF2FFFF call 100043B0
这个调用只有一个返回 RETN,不知什么作用,百思不得其解?
在地址
10005167|.85DB test ebx,ebx ; EBX=-1
10005169|.7D 0A jge short 10005175 ; 高于等于,或者进位标志转移清零跳转
10005167只影响Z标志,怎么会控制JGE的跳转呢?
本人菜鸟一个,请高手帮指点
自己看了好久,是不是编程程忘记删除的无用语句呢?对进程好像没影响。
页:
[1]