苏紫方璇 发表于 2015-5-7 19:45

eXeScope算法分析

大家好我又来发(骗)帖(评)子(分)了前两天无意间发现我的eXeScope没有注册,所以就发了一篇爆破的帖子。
链接如下
eXeScope破解记录:http://www.52pojie.cn/thread-358993-1-1.html
eXeScope破解记录过程视频:http://www.52pojie.cn/thread-359136-1-1.html
今天下午正好没事,就把eXeScope的算法那部分代码仔细看了一下,终于分析出了算法的过程。
具体算法的位置请看上面两个帖子。下面直接上代码。
这是算法call的汇编代码。
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,0xA                              ;和0xA作对比长度要等于10
004CBFA7|.75 5C         jnz short eXeScope.004CC005
004CBFA9|.8B55 FC       mov edx,
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,
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,
004CBFD1|.8A5402 FF   |mov dl,byte ptr ds:
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,
004CBFE8|.0FB640 08   movzx eax,byte ptr ds:          ;取第九位
004CBFEC|.8B55 FC       mov edx,
004CBFEF|.0FB652 09   movzx edx,byte ptr ds:          ;取第十位
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:,edx
004CC00D|.68 22C04C00   push eXeScope.004CC022
004CC012|>8D45 FC       lea eax,
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就不用藏着掖着了,评分又不会扣自己的分对不{:301_984:}

Hmily 发表于 2015-5-8 15:28

eXeScope这算分析完了,可以直接搞个算法注册机成品吧,其实可以和前面帖子合并,加精鼓励期待更多分享。

ixsec 发表于 2017-8-29 21:23

## python 的生成代码附上

```
# -*- coding: utf-8 -*-
from random import choice

b = ["A1910","A1423"]
a = []
a1 =
a2 =
a3 =

for i in range(0,10):
    for j in range(0,10):
      sum = ord(str(i))+ord(str(j))
      if int(sum)%10==4:
            a.append()
            
      else:
            pass
end2 = choice(a)
endend=str(end2)+str(end2)
#print(end2,end2)
aa = choice(b)
a123 = str(choice(a1))+str(choice(a2))+str(choice(a3))

print("eXeSc650 注册码为:",aa+a123+endend)
input("按任意键退出")
```

>>楼主可以的话,可否写个飘云阁的注册机生成的code,学习下~~

茂荣电子 发表于 2015-5-7 20:08

看不懂呵呵

2314902431 发表于 2015-5-7 20:21

弱弱的说一句,这是神马?我一点都看不懂

LoongKing 发表于 2015-5-7 20:22

算法头大,我还是喜欢简约...{:17_1068:}

lionshine 发表于 2015-5-7 21:14

现在这么简单的软件已经很少了。

cdweng 发表于 2015-5-7 22:09

谢谢楼主分享学习了

我是用户 发表于 2015-5-8 17:07

支持一下

moodykeke 发表于 2015-5-8 20:05

研究算法高级多了,只研究过一次,水平有限,头都大了

蚯蚓翔龙 发表于 2015-5-8 20:20

分析算法感觉好牛逼,似乎A191056780这个ID也一样
页: [1] 2 3 4
查看完整版本: eXeScope算法分析