首页
社区
课程
招聘
机动车驾驶员理论综合考试系统 V4.95 应试版 注册算法分析
发表于: 2005-10-21 11:26 5783

机动车驾驶员理论综合考试系统 V4.95 应试版 注册算法分析

2005-10-21 11:26
5783
机动车驾驶员理论综合考试系统 V4.95 应试版注册算法分析

破解人:Baby2008 日期:2005.10.21

下载地址:http://www.skycn.com/soft/21157.html

PB程序,反编译一下,注册验证核心代码如下:

char lc_key1[]
char lc_key2[]
char lc_base_char
integer li_key1
integer li_key2
integer li_key
string ls_base
string ls_usercode
integer li_len
integer li_loop
integer li_tmp
integer li_right_mod
integer li_strlen

if as_code = "" then          //机器码
        return as_code        // 机器码为空直接返回
end if

ls_base = gnv_info.basestr   //string basestr = "3ffsrVWU723slBC76348QT5678dJKy08012314r676343462236DRmjnr9qasSE012"
li_len = 50                  // 初始值50

if len(as_code) < 50 then   //机器码长度小于50
        li_len = len(as_code)     //则赋值为机器码长度
end if

for li_loop = 1 to li_len          //机器码长度
        lc_key1[li_loop] = mid(as_code,li_loop,1)   //循环取机器码[i]
        li_key1 += asc(lc_key1[li_loop])   //ASCII累加
next

for li_loop = 1 to li_len step 2                      //步长为2
        lc_key2[li_loop] = mid(as_code,li_loop,1) //取字符
        li_key2 += asc(lc_key2[li_loop])      //ASCII累加
next

li_key = li_key1 + li_key2 + 50     //累加值相加+50
li_strlen = 25                   //初始值25

if gnv_info.ib_project then     //false
        li_strlen = 13          //不执行这句  
end if

for li_loop = 1 to li_strlen   //1 To 25
        li_len = len(ls_base)   //ls_Base长度
        li_tmp = mod(li_key,li_len)            //累加值 mod 长度
        li_tmp = li_tmp + li_right_mod   //+变量li_right_mod

        if li_tmp > li_len then
                li_tmp = mod(li_tmp,li_len)   //大于长度继续Mod运算
        end if

        if li_tmp = 0 then        //等于0则赋值为1
                li_tmp = 1
        end if

        lc_base_char = char(mid(ls_base,li_tmp,1))    //取ls_base中字符
        ls_usercode = ls_usercode + string(lc_base_char)  //连接
        li_right_mod = li_tmp    //变量赋值
        ls_base = left(ls_base,li_tmp - 1) + right(ls_base,li_len - li_tmp)  //修改ls_Base字符串
next

return f_public_replaceall(upper(ls_usercode),"O","0")    //转大写,替换O为0即为注册码

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 442
活跃值: (1221)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
ABC 写注册机
2005-10-21 11:28
0
雪    币: 442
活跃值: (1221)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
3
中午无聊,翻译成Delphi 7.0,注册吗测试通过!

Function KeyGen(as_code: String): String;
Var
  ls_base: String;
  li_key, li_len, li_loop, li_strlen, li_tmp, li_right_mod: integer;

Begin
  ls_base := '3ffsrVWU723slBC76348QT5678dJKy08012314r676343462236DRmjnr9qasSE012';
  li_len := 50;
  If Length(as_code) < 50 Then li_len := Length(as_code);
  For li_loop := 1 To li_len Do
  Begin
    li_key := li_key + Ord(as_code[li_loop]);
    If (li_loop Mod 2) = 1 Then li_key := li_key + Ord(as_code[li_loop]);
  End;
  li_key := li_key + 50;

  li_strlen := 25;
  For li_loop := 1 To li_strlen Do
  Begin
    li_len := Length(ls_base);

    li_tmp := li_key Mod li_len;
    li_tmp := li_tmp + li_right_mod;

    If li_tmp > li_len Then li_tmp := li_tmp Mod li_len;

    If li_tmp = 0 Then li_tmp := 1;

    Result := Result + ls_base[li_tmp];
    li_right_mod := li_tmp;
    ls_base := LeftStr(ls_base, li_tmp - 1) + RightStr(ls_base, li_len - li_tmp);

  End;

  Result := StringReplace(UpperCase(Result), 'O', '0', [rfReplaceAll]);

End;
2005-10-21 12:08
0
雪    币: 212
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
果然是强人,不过程序很容易看懂,呵呵!
   我对跟踪程序,追踪注册算法总是没什么心得,不知如何下断,唉!!!
        极度郁闷中。。。。
2005-10-21 12:52
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
5
2005-10-21 13:43
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
2005-10-21 14:25
0
雪    币: 3697
活跃值: (4262)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
7
让我写注册机,你杀了我吧
你都用D7写好了,难道让我复制一次?
用PB重新构造一个算了。
2005-10-21 15:16
0
雪    币: 442
活跃值: (1221)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
8
PB写注册机不利于发布
2005-10-21 15:22
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
9
pb的程序可能就是不好动态跟踪。
2005-10-21 16:08
0
游客
登录 | 注册 方可回帖
返回
//