- UID
- 40684
注册时间2007-12-7
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
【文章标题】: 软柿子eXeScope算法跟踪
【文章作者】: gtboy
【软件名称】: eXeScope
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: ollydbg,破解计算器
【操作平台】: 盗版xp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
很老的软件,拿来练手也是一时兴起。软件很古老了,算法也很简单,适合新手练习,就当最简单的crackme啦,呵呵。差不多是明码比较了。
吃完饭准备看个教程,感谢天草前辈的无私奉献。对我等菜鸟很有帮助。里面带了个eXeScope,就拿来练练手。算法一窍不通,就练习下,不爆破了。peid查壳,Borland Delphi 6.0 - 7.0 [Overlay],没壳,假注册了下,提示无效的ID或名字。od载入,查找字符串,定位到如下:
004C2B5E |. B8 F02B4C00 mov eax,eXeScope.004C2BF0 ; 无效的 id 或名字
向上找到段首下断,单步跟踪
004C2A55 |. 55 push ebp
004C2A56 |. 68 A12B4C00 push eXeScope.004C2BA1
004C2A5B |. 64:FF30 push dword ptr fs:[eax]
004C2A5E |. 64:8920 mov dword ptr fs:[eax],esp
004C2A61 |. A1 5CFC4C00 mov eax,dword ptr ds:[4CFC5C]
004C2A66 |. 8038 00 cmp byte ptr ds:[eax],0
004C2A69 |. 74 0F je short eXeScope.004C2A7A
004C2A6B |. C783 4C020000 0>mov dword ptr ds:[ebx+24C],2
004C2A75 |. E9 FF000000 jmp eXeScope.004C2B79
004C2A7A |> 8D55 FC lea edx,[local.1]
004C2A7D |. 8B83 F8020000 mov eax,dword ptr ds:[ebx+2F8]
004C2A83 |. E8 F4F8FAFF call eXeScope.0047237C ; 取用户名,不参与运算
004C2A88 |. 8B55 FC mov edx,[local.1]
004C2A8B |. A1 E8FE4C00 mov eax,dword ptr ds:[4CFEE8]
004C2A90 |. E8 4F1FF4FF call eXeScope.004049E4
004C2A95 |. 8D55 F8 lea edx,[local.2]
004C2A98 |. 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
004C2A9E |. E8 D9F8FAFF call eXeScope.0047237C ; 取假码
004C2AA3 |. 8B55 F8 mov edx,[local.2]
004C2AA6 |. A1 4CFE4C00 mov eax,dword ptr ds:[4CFE4C]
004C2AAB |. E8 341FF4FF call eXeScope.004049E4
004C2AB0 |. 8B15 4CFE4C00 mov edx,dword ptr ds:[4CFE4C] ; eXeScope.004D2E58
004C2AB6 |. 8B12 mov edx,dword ptr ds:[edx]
004C2AB8 |. A1 54FC4C00 mov eax,dword ptr ds:[4CFC54]
004C2ABD |. 8B00 mov eax,dword ptr ds:[eax]
004C2ABF |. E8 B8940000 call eXeScope.004CBF7C ; 比较cll,跟进
004C2AC4 |. 84C0 test al,al
004C2AC6 0F84 8D000000 je eXeScope.004C2B59 ; 关键跳
进去后:
004CBF7C /$ 55 push ebp
004CBF7D |. 8BEC mov ebp,esp
004CBF7F |. 51 push ecx
004CBF80 |. 53 push ebx
004CBF81 |. 8955 FC mov [local.1],edx
004CBF84 |. 8B45 FC mov eax,[local.1]
004CBF87 |. E8 B48EF3FF call eXeScope.00404E40
004CBF8C |. 33C0 xor eax,eax
004CBF8E |. 55 push ebp
004CBF8F |. 68 1BC04C00 push eXeScope.004CC01B
004CBF94 |. 64:FF30 push dword ptr fs:[eax]
004CBF97 |. 64:8920 mov dword ptr fs:[eax],esp
004CBF9A |. 33DB xor ebx,ebx
004CBF9C |. 8B45 FC mov eax,[local.1]
004CBF9F |. E8 AC8CF3FF call eXeScope.00404C50
004CBFA4 |. 83F8 0A cmp eax,0A ; 注册码位数为10
004CBFA7 |. 75 5C jnz short eXeScope.004CC005
004CBFA9 |. 8B55 FC mov edx,[local.1]
004CBFAC |. B8 30C04C00 mov eax,eXeScope.004CC030 ; a1910
004CBFB1 |. E8 DE8FF3FF call eXeScope.00404F94
004CBFB6 |. 48 dec eax ; (初始 cpu 选择)
004CBFB7 |. 74 10 je short eXeScope.004CBFC9 ; A1910开头的就验证数字部分
004CBFB9 |. 8B55 FC mov edx,[local.1]
004CBFBC |. B8 40C04C00 mov eax,eXeScope.004CC040 ; a1423
004CBFC1 |. E8 CE8FF3FF call eXeScope.00404F94
004CBFC6 |. 48 dec eax
004CBFC7 |. 75 3C jnz short eXeScope.004CC005 ; A1423开头的也可以
004CBFC9 |> B8 02000000 mov eax,2
004CBFCE |> 8B55 FC /mov edx,[local.1] ; EDX中为假码
004CBFD1 |. 8A5402 FF |mov dl,byte ptr ds:[edx+eax-1]
004CBFD5 |. 80FA 30 |cmp dl,30
004CBFD8 |. 72 2B |jb short eXeScope.004CC005
004CBFDA |. 80FA 39 |cmp dl,39
004CBFDD |. 77 26 |ja short eXeScope.004CC005
004CBFDF |. 40 |inc eax
004CBFE0 |. 83F8 0B |cmp eax,0B
004CBFE3 |.^ 75 E9 \jnz short eXeScope.004CBFCE ; 注册码为0~9之间的数字
004CBFE5 |. 8B45 FC mov eax,[local.1]
004CBFE8 |. 0FB640 08 movzx eax,byte ptr ds:[eax+8] ; 第9位放入eax
004CBFEC |. 8B55 FC mov edx,[local.1]
004CBFEF |. 0FB652 09 movzx edx,byte ptr ds:[edx+9] ; 第10位放入edx
004CBFF3 |. 03C2 add eax,edx ; 相加放入eax
004CBFF5 |. B9 0A000000 mov ecx,0A
004CBFFA |. 33D2 xor edx,edx
004CBFFC |. F7F1 div ecx ; eax除以0A,余数放入edx
004CBFFE |. 83FA 04 cmp edx,4 ; 余数与4相当则注册成功
004CC001 |. 75 02 jnz short eXeScope.004CC005
004CC003 B3 01 mov bl,1
004CC005 33C0 xor eax,eax
004CC007 5A pop edx
004CC008 59 pop ecx
004CC009 59 pop ecx
004CC00A 64:8910 mov dword ptr fs:[eax],edx
004CC00D |. 68 22C04C00 push eXeScope.004CC022
004CC012 |> 8D45 FC lea eax,[local.1]
004CC015 |. E8 7689F3FF call eXeScope.00404990
004CC01A \. C3 retn
对0A求余为4,注册码必须为ascii码,范围已定,十六进制的60~72,从中选取,数字不多,我就人肉了,数学不好,没有细细算。只有68和72,则最后两位组合有80,08,99。开始的五位为A1910或者A1423,中间的随意。用户名和注册码都保存在eXeScope.ini中,有重启验证,很好爆破的,不过自己算出注册码了就不用了。
--------------------------------------------------------------------------------
【经验总结】
跟算法的时候要耐心,多多思考。现在的软件算法应该没这么简单了,就更麻烦了。明码比较的软件还有多少呢?这个软件
爆破很容易,大家可以自己找下。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于gtboy, 转载请注明作者并保持文章的完整, 谢谢!
2009年03月06日 15:37:51 |
|