gtboy 发表于 2009-3-6 15:41:05

软柿子eXeScope算法跟踪

【文章标题】: 软柿子eXeScope算法跟踪
【文章作者】: gtboy
【软件名称】: eXeScope
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: ollydbg,破解计算器
【操作平台】: 盗版xp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
很老的软件,拿来练手也是一时兴起。软件很古老了,算法也很简单,适合新手练习,就当最简单的crackme啦,呵呵。差不多是明码比较了。
吃完饭准备看个教程,感谢天草前辈的无私奉献。对我等菜鸟很有帮助。里面带了个eXeScope,就拿来练练手。算法一窍不通,就练习下,不爆破了。peid查壳,Borland Delphi 6.0 - 7.0 ,没壳,假注册了下,提示无效的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:
004C2A5E|.64:8920         mov dword ptr fs:,esp
004C2A61|.A1 5CFC4C00   mov eax,dword ptr ds:
004C2A66|.8038 00         cmp byte ptr ds:,0
004C2A69|.74 0F         je short eXeScope.004C2A7A
004C2A6B|.C783 4C020000 0>mov dword ptr ds:,2
004C2A75|.E9 FF000000   jmp eXeScope.004C2B79
004C2A7A|>8D55 FC         lea edx,
004C2A7D|.8B83 F8020000   mov eax,dword ptr ds:
004C2A83|.E8 F4F8FAFF   call eXeScope.0047237C            ;取用户名,不参与运算
004C2A88|.8B55 FC         mov edx,
004C2A8B|.A1 E8FE4C00   mov eax,dword ptr ds:
004C2A90|.E8 4F1FF4FF   call eXeScope.004049E4
004C2A95|.8D55 F8         lea edx,
004C2A98|.8B83 FC020000   mov eax,dword ptr ds:
004C2A9E|.E8 D9F8FAFF   call eXeScope.0047237C            ;取假码
004C2AA3|.8B55 F8         mov edx,
004C2AA6|.A1 4CFE4C00   mov eax,dword ptr ds:
004C2AAB|.E8 341FF4FF   call eXeScope.004049E4
004C2AB0|.8B15 4CFE4C00   mov edx,dword ptr ds:       ;eXeScope.004D2E58
004C2AB6|.8B12            mov edx,dword ptr ds:
004C2AB8|.A1 54FC4C00   mov eax,dword ptr ds:
004C2ABD|.8B00            mov eax,dword ptr ds:
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 ,edx
004CBF84|.8B45 FC         mov eax,
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:
004CBF97|.64:8920         mov dword ptr fs:,esp
004CBF9A|.33DB            xor ebx,ebx
004CBF9C|.8B45 FC         mov eax,
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,
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,
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,                  ;EDX中为假码
004CBFD1|.8A5402 FF       |mov dl,byte ptr ds:
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,
004CBFE8|.0FB640 08       movzx eax,byte ptr ds:       ;第9位放入eax
004CBFEC|.8B55 FC         mov edx,
004CBFEF|.0FB652 09       movzx edx,byte ptr ds:       ;第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:,edx
004CC00D|.68 22C04C00   push eXeScope.004CC022
004CC012|>8D45 FC         lea eax,
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

火凤凰 发表于 2009-3-6 23:51:43

软件在那下的,我也试试看

冬天的雷雨 发表于 2009-3-7 09:03:00

小弟在这里学习了
谢谢分享

静慕者 发表于 2009-3-7 12:42:22

嘿嘿~学习了~
页: [1]
查看完整版本: 软柿子eXeScope算法跟踪