- UID
- 65892
注册时间2010-3-1
阅读权限50
最后登录1970-1-1
感悟天道
TA的每日心情 | 慵懒 2024-12-4 10:07 |
---|
签到天数: 444 天 [LV.9]以坛为家II
|
本帖最后由 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)
|
评分
-
查看全部评分
|