飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4651|回复: 2

[原创] Teleport Pro Version 1.29 追码、爆破、去自校验

[复制链接]
  • TA的每日心情
    慵懒
    2024-12-4 10:07
  • 签到天数: 444 天

    [LV.9]以坛为家II

    发表于 2012-3-24 15:58:35 | 显示全部楼层 |阅读模式
    本帖最后由 sdnyzjzx 于 2012-3-24 16:00 编辑

    【文章标题】: Teleport Pro Version 1.29 追码、爆破、去自校验
    【文章作者】: sdnyzjzx
    【作者邮箱】: [email protected]
    【软件名称】: Teleport Pro Version 1.29
    【软件大小】: 913,408 字节
    【下载地址】: 见附件
    【加壳方式】: 无壳
    【保护方式】: 文件名、代码修改自校验;用户名长度检测
    【编写语言】: Microsoft Visual C++ [ver: 6.0] | C/C++
    【使用工具】: OD
    【操作平台】: xp
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      软件无壳,对文件名与代码修改做了检测,对注册用户名长度有要求限制。相对来说是个练习不错的软件,分享给像我一样的菜鸟。
      
      软件的错误提示都可以通过回朔的方式找到跳转点;或是下断 bp MessageBoxA
      
      下面给出三个关键爆破点:
      
      第一处:
      00418346      3986 11050000 cmp dword ptr ds:[esi+511],eax
      //修改为
      00418346      8986 11050000 mov dword ptr ds:[esi+511],eax
      直接把真码给 dword ptr ds:[esi+511]
      
      第二处:
      0040CE0F     /74 13         je short pro.0040CE24
      //修改为
      0040CE0F     /EB 13         jmp short pro.0040CE24
      跳过文件名是否被修改检测
      
      第三处:
      0040CE71     /74 13         je short pro.0040CE86
      //修改为
      0040CE71     /EB 13         jmp short pro.0040CE86
      跳过代码是否被修改检测
      
      保存后直接OK。
      
      追码方法:
      0042B41D   .  6A 0A         push 0A
      0042B41F   .  53            push ebx
      0042B420   .  50            push eax                                 ;  假码
      0042B421   .  E8 2F680000   call pro.00431C55
      0042B426   .  8BF0          mov esi,eax
      0042B428   .  A1 D4014900   mov eax,dword ptr ds:[4901D4]
      0042B42D   .  83C4 0C       add esp,0C
      0042B430   .  897424 10     mov dword ptr ss:[esp+10],esi
      0042B434   .  3898 CD040000 cmp byte ptr ds:[eax+4CD],bl
      0042B43A   .  0F84 33010000 je pro.0042B573
      0042B440   .  3BF3          cmp esi,ebx                              ;  用户名是否为空
      0042B442   .  BD C4604800   mov ebp,pro.004860C4                     ;  user
      0042B447   .  74 59         je short pro.0042B4A2
      0042B449   .  FFB7 D5000000 push dword ptr ds:[edi+D5]               ;  用户名
      0042B44F   .  E8 BA090000   call pro.0042BE0E
      0042B454   .  3BF0          cmp esi,eax                              ;  假码与真码16进制形式比较是否一样
      //注意这里是假码与真码的16进制形式进行比较,但是直接改下面这个跳转是不行的,因为软件是要重启验证的。
      
      0042B456   .  59            pop ecx
      0042B457   .  75 0F         jnz short pro.0042B468
      0042B459   .  53            push ebx
      0042B45A   .  53            push ebx
      0042B45B   .  FF35 A46A4800 push dword ptr ds:[486AA4]               ;  pro.0048BD6C
      0042B461   .  E8 8C550200   call pro.004509F2                        ;  Thank you
      0042B466   .  EB 75         jmp short pro.0042B4DD
      0042B468   >  8BBF D5000000 mov edi,dword ptr ds:[edi+D5]
      0042B46E   .  395F F8       cmp dword ptr ds:[edi-8],ebx             ;  是否为评估版 Evaluation
      0042B471   .  75 0A         jnz short pro.0042B47D
      0042B473   .  53            push ebx
      
      下面给出算法CALL,同时对用户名长度进行了检测,没有能力写出注册机
      0042BE0E  /$  57            push edi                                 ;  算法call
      0042BE0F  |.  8B7C24 08     mov edi,dword ptr ss:[esp+8]
      0042BE13  |.  85FF          test edi,edi
      0042BE15  |.  74 09         je short pro.0042BE20
      0042BE17  |.  57            push edi
      0042BE18  |.  E8 935A0000   call pro.004318B0                        ;  取用户名长度
      0042BE1D  |.  59            pop ecx
      0042BE1E  |.  EB 02         jmp short pro.0042BE22
      0042BE20  |>  33C0          xor eax,eax
      0042BE22  |>  83F8 05       cmp eax,5
      0042BE25  |.  73 04         jnb short pro.0042BE2B                   ;  用户名长度是否小于5
      0042BE27  |.  33C0          xor eax,eax
      0042BE29  |.  5F            pop edi
      0042BE2A  |.  C3            retn
      0042BE2B  |>  53            push ebx
      0042BE2C  |.  56            push esi
      0042BE2D  |.  BE A4E4FE5D   mov esi,5DFEE4A4
      0042BE32  |.  33DB          xor ebx,ebx
      0042BE34  |>  85FF          /test edi,edi
      0042BE36  |.  74 09         |je short pro.0042BE41
      0042BE38  |.  57            |push edi
      0042BE39  |.  E8 725A0000   |call pro.004318B0
      0042BE3E  |.  59            |pop ecx
      0042BE3F  |.  EB 02         |jmp short pro.0042BE43
      0042BE41  |>  33C0          |xor eax,eax
      0042BE43  |>  83C0 FC       |add eax,-4                              ;  再次比较用户名长度是否大于4
      0042BE46  |.  3BD8          |cmp ebx,eax
      
      
      
      
    --------------------------------------------------------------------------------
    【经验总结】
      通过回朔的方法找到弹窗提示注册不正确与注册正确信息,然后在调用算法CALL的每个位置上下断,找到关键跳转位置
      00418346      3986 11050000 cmp dword ptr ds:[esi+511],eax
      0041834C   .  59            pop ecx
      0041834D      75 04         jnz short pro.00418353
      
      这里面没有改最后一行跳转,而是把第一行中的 cmp 修改为 mov 直接得到了正确注册码的方法。
      
      还有另两处自校验,通过回朔,直接跳过,文件名校验好理解,代码修改校验不清楚到底是校验的什么内容,以后会了,再
      进一步分析。
      
    --------------------------------------------------------------------------------
    【版权声明】: 本文原创于看PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                           2012年03月24日 16:00:52


    Teleport Pro 1.29.rar (648.17 KB, 下载次数: 3)

    评分

    参与人数 1飘云币 +40 收起 理由
    月之精灵 + 40 很给力!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2012-3-24 22:22:36 | 显示全部楼层
    不错!
    前排学习!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 1693 天

    [LV.Master]伴坛终老

    发表于 2012-3-31 12:09:23 | 显示全部楼层
    感谢分享了,学习一下了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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