飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2580|回复: 1

[求助] 求助调用子程序只有一个RETN的调用的作用

[复制链接]
  • TA的每日心情
    难过
    2016-6-15 22:46
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2016-5-30 13:33:05 | 显示全部楼层 |阅读模式
    代码如下:
    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 [esp+0C94]  ; 12F0DC传值过来FFFFFFFB=-1
    1000514E  |.  55          push ebp
    1000514F  |.  8BAC24 940C mov ebp,dword ptr [esp+0C94]  ; 12F0D8传值过来FFFFFFFB=3
    10005156  |.  56          push esi
    10005157  |.  57          push edi
    10005158  |.  53          push ebx                      ; /<%d> => [Arg2]
    10005159  |.  55          push ebp                      ; |<%d> => [Arg1]
    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 [esp+10],eax    ; ESP+10=12EBEC
    10005173  |.  EB 04       jmp short 10005179
    10005175  |>  895C24 10   mov dword ptr [esp+10],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的跳转呢?
    本人菜鸟一个,请高手帮指点
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2016-6-15 22:46
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2016-6-11 00:25:07 | 显示全部楼层
    自己看了好久,是不是编程程忘记删除的无用语句呢?对进程好像没影响。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表