- 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 |   
 
 
 
 |