首页
社区
课程
招聘
[原创]CHMFactory v1.21.0 算法
发表于: 2005-10-19 21:04 4388

[原创]CHMFactory v1.21.0 算法

2005-10-19 21:04
4388
CHMFactory v1.21.0 算法

个人觉得算法不难,注册机已经发表在 BBS.5ICRACK.COM
所以这里就不写分析过程了,直接给出算法:

将输入的用户名与机器码进行计算,生成机器码2显示给用户。
将用户输入的注册码计算后从固定的字符串A中取出字符进行组合,如果与机器码2相同则注册成功。
字符串A='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
上面说得比较乱(估计我的表达能力被我家丫头给毁了。。。)

这样说吧,有两个数组,A[ i ] 和 B[ i ] ,A[ i ]存放的是字符串A
B[ i ]存放的是翻转后的字符串A,比如说A='0123456789'那么翻转后就是'9876543210'
逐位查找用户输入的注册码在B[ i ]的位置,然后从A[ i ]中取出同样位置的字符,组成字符串
然后和机器码2行比较,相同则住则注册成功。

如果还觉得我没说清楚就在注册机里输入"zyxwvutsrqponmlk"生成注册码看看吧

下面是注册机的部分源码(DELPHI):

procedure TForm1.Label1Click(Sender: TObject);
var
s1,s2,tmp:string;
i,n:integer;
begin
tmp:=adpedit1.Text;
if tmp='此处填写机器码' then
  adpedit1.text:='请填写机器码'
  else if tmp='' then
  adpedit1.text:='机器码不能为空'
  else if length(tmp)<>16 then
  adpedit1.text:='机器码长度必须为16位'
  else
  begin
    adpedit2.Text:='';
    s1:='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    for n:=1 to length(tmp) do
      begin
      s2:=midstr(tmp,n,1);
      i:=AnsiIndexStr(s2,['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a','Z','Y','X','W','V','U','T','S','R','Q','P','O','N','M','L','K','J','I','H','G','F','E','D','C','B','A','9','8','7','6','5','4','3','2','1','0']);
      adpedit2.Text:=adpedit2.Text+midstr(s1,i+1,1);
      end;
  adpedit2.Enabled:=true;
  end;
end;

如果那里不对,还请指正。。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
分析过程还是写出来看看啊?
2005-10-20 12:38
0
游客
登录 | 注册 方可回帖
返回
//