Teleport Pro Version 1.29 追码、爆破、去自校验
本帖最后由 sdnyzjzx 于 2012-3-24 16:00 编辑【文章标题】: Teleport Pro Version 1.29 追码、爆破、去自校验
【文章作者】: sdnyzjzx
【作者邮箱】: [email protected]
【软件名称】: Teleport Pro Version 1.29
【软件大小】: 913,408 字节
【下载地址】: 见附件
【加壳方式】: 无壳
【保护方式】: 文件名、代码修改自校验;用户名长度检测
【编写语言】: Microsoft Visual C++ | C/C++
【使用工具】: OD
【操作平台】: xp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
软件无壳,对文件名与代码修改做了检测,对注册用户名长度有要求限制。相对来说是个练习不错的软件,分享给像我一样的菜鸟。
软件的错误提示都可以通过回朔的方式找到跳转点;或是下断 bp MessageBoxA
下面给出三个关键爆破点:
第一处:
00418346 3986 11050000 cmp dword ptr ds:,eax
//修改为
00418346 8986 11050000 mov dword ptr ds:,eax
直接把真码给 dword ptr ds:
第二处:
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:
0042B42D .83C4 0C add esp,0C
0042B430 .897424 10 mov dword ptr ss:,esi
0042B434 .3898 CD040000 cmp byte ptr ds:,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: ;用户名
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: ;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:
0042B46E .395F F8 cmp dword ptr ds:,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:
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:,eax
0041834C .59 pop ecx
0041834D 75 04 jnz short pro.00418353
这里面没有改最后一行跳转,而是把第一行中的 cmp 修改为 mov 直接得到了正确注册码的方法。
还有另两处自校验,通过回朔,直接跳过,文件名校验好理解,代码修改校验不清楚到底是校验的什么内容,以后会了,再
进一步分析。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!
2012年03月24日 16:00:52
不错!
前排学习! 感谢分享了,学习一下了
页:
[1]