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:}
eXeScope这算分析完了,可以直接搞个算法注册机成品吧,其实可以和前面帖子合并,加精鼓励期待更多分享。 ## 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,学习下~~ 看不懂呵呵 弱弱的说一句,这是神马?我一点都看不懂 算法头大,我还是喜欢简约...{:17_1068:} 现在这么简单的软件已经很少了。 谢谢楼主分享学习了 支持一下 研究算法高级多了,只研究过一次,水平有限,头都大了 分析算法感觉好牛逼,似乎A191056780这个ID也一样