大家好 我又来发(骗)帖(评)子(分)了前两天无意间发现我的eXeScope没有注册,所以就发了一篇爆破的帖子。
链接如下
eXeScope破解记录:http://www.52pojie.cn/thread-358993-1-1.html
eXeScope破解记录过程视频:http://www.52pojie.cn/thread-359136-1-1.html
今天下午正好没事,就把eXeScope的算法那部分代码仔细看了一下,终于分析出了算法的过程。
具体算法的位置请看上面两个帖子。下面直接上代码。
这是算法call的汇编代码。
[Asm] 纯文本查看 复制代码 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,0xA ; 和0xA作对比 长度要等于10
004CBFA7 |. 75 5C jnz short eXeScope.004CC005
004CBFA9 |. 8B55 FC mov edx,[local.1]
004CBFAC |. B8 30C04C00 mov eax,eXeScope.004CC030 ; ASCII "A1910"
004CBFB1 |. E8 DE8FF3FF call eXeScope.00404F94
004CBFB6 |. 48 dec eax
004CBFB7 |. 74 10 je short eXeScope.004CBFC9
004CBFB9 |. 8B55 FC mov edx,[local.1]
004CBFBC |. B8 40C04C00 mov eax,eXeScope.004CC040 ; ASCII "A1423"
004CBFC1 |. E8 CE8FF3FF call eXeScope.00404F94
004CBFC6 |. 48 dec eax
004CBFC7 |. 75 3C jnz short eXeScope.004CC005 ;
004CBFC9 |> B8 02000000 mov eax,0x2
004CBFCE |> 8B55 FC /mov edx,[local.1]
004CBFD1 |. 8A5402 FF |mov dl,byte ptr ds:[edx+eax-0x1]
004CBFD5 |. 80FA 30 |cmp dl,0x30
004CBFD8 |. 72 2B |jb short eXeScope.004CC005 ; 前者小于后者跳转
004CBFDA |. 80FA 39 |cmp dl,0x39
004CBFDD |. 77 26 |ja short eXeScope.004CC005 ; 前者大于后者跳转
004CBFDF |. 40 |inc eax
004CBFE0 |. 83F8 0B |cmp eax,0xB
004CBFE3 |.^ 75 E9 \jnz short eXeScope.004CBFCE
004CBFE5 |. 8B45 FC mov eax,[local.1]
004CBFE8 |. 0FB640 08 movzx eax,byte ptr ds:[eax+0x8] ; 取第九位
004CBFEC |. 8B55 FC mov edx,[local.1]
004CBFEF |. 0FB652 09 movzx edx,byte ptr ds:[edx+0x9] ; 取第十位
004CBFF3 |. 03C2 add eax,edx ; 相加
004CBFF5 |. B9 0A000000 mov ecx,0xA
004CBFFA |. 33D2 xor edx,edx
004CBFFC |. F7F1 div ecx ; eax/ecx的商
004CBFFE |. 83FA 04 cmp edx,0x4 ; eax/ecx的余数
004CC001 |. 75 02 jnz short eXeScope.004CC005
004CC003 |. B3 01 mov bl,0x1 ; bl=1
004CC005 |> 33C0 xor eax,eax
004CC007 |. 5A pop edx ; 0018F56C
004CC008 |. 59 pop ecx ; 0018F56C
004CC009 |. 59 pop ecx ; 0018F56C
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
004CC01B .^ E9 5483F3FF jmp eXeScope.00404374
004CC020 .^ EB F0 jmp short eXeScope.004CC012
004CC022 . 8BC3 mov eax,ebx ; 返回值=bl
004CC024 . 5B pop ebx ; 0018F56C
004CC025 . 59 pop ecx ; 0018F56C
004CC026 . 5D pop ebp ; 0018F56C
004CC027 . C3 retn
算法过程,将注册码算出位数,与10比较,当等于10时进行下一步比较。之后是注册码必须包含A1910或者A1423,之后从第二位开始逐个检查注册码,如果注册码ascii码值小于30或者大于39就跳走失败。
ascii码值30-39,正好是0-9这10个数,综合上面,那么A1910或者A1423必定是在前五位出现。下边从004CBFE5开始是取第9-10位的ascii值,取完后相加,再除以10取余数,若余数等于4,就返回1,不是就返回0.
我自己写了一下模拟的算法,最后两位可以使这么10组数字
这样,整个注册码的算法就分析完成了,综上所述,注册码规则应该是前五位是A1910或者A1423,之后三位是随意的数字,后两位相加后,个位数必须是8.
最后附上几个可用的注册码
注册名:随意填写
ID:A191012308
ID:A142332417
ID:A191000044
ID:A142356799
至此,eXeScope破解分析完成,感谢大家的支持
以上是个人的一些愚见,如有错误,还请大牛指正。谢谢
依然是说了N遍的话,如果觉得好或者学到了什么,还请给我支持和评分,热心和CB就不用藏着掖着了,评分又不会扣自己的分对不
|