首页
社区
课程
招聘
我要用freeRes 0.94~~~
发表于: 2006-10-22 17:02 11713

我要用freeRes 0.94~~~

2006-10-22 17:02
11713

//freeRes 0.94注册算法

function KUser(Str: String;Num1,Num2,Num3: Integer): String;
var
  I,L: Byte;
  Num: Integer;
begin
  Result := '';
  Num := Num1;
  L := Length(Str);
  for I := 1 to L do
  begin
    Result := Result + Char(Ord(Str[I]) xor ((Num shr 8) and $FF));
    Num := Num + Ord(Result[I]);
    Num := Num * Num2 + Num3;
  end;  
end;

function KCode(Str: String;Num1,Num2,Num3: Integer): String;
var
  I,L: Byte;
  Num: Integer;
begin
  Result := '';
  Num := Num1;
  L := Length(Str);
  for I := 1 to L do
  begin
    Result := Result + Char(Ord(Str[I]) xor ((Num shr 8) and $FF));
    Num := Num + Ord(Str[I]);
    Num := Num * Num2 + Num3;
  end;
end;

function KCode1(Str: String): String;
var
  L,I: Integer;
  B0,B1,B2,B3: Byte;
begin
  Result := '';
  L := Length(Str) shr 1;
  for I := 0 to L - 1 do
  begin
    B0 := Ord(Str[I * 2 + 1]);
    B1 := Ord(Str[I * 2 + 2]);
   
    B2 := B1 and $4F;//0100-1111
    B3 := (B1 and $30) shr 4;
   
    if B1 and $40 = 0 then
    begin
      B0 := 0;
    end
    else
    begin
      if B2 < $43 then
      begin
        B2 := $43 - B2;
        B0 := (B0 shl B2) or B3;
      end
      else
      begin
        if B2 > $43 then
        begin
          B2 := B2 - $43;         
          B0 := B0 shr B2;
        end;
      end;
    end;   
    Result := Result  + Char(B0);   
  end;
end;     

function UserCode(StrCode: String;Num1,Num2,Num3: Integer): String;
var
  Str: String;
begin
  Str := KCode1(StrCode);  
  Result := KCode(Str,Num1,Num2,Num3);   
end;

function UserUser(StrId,StrUser: String;Num1,Num2,Num3: Integer): String;
var
  Str: String;
  L,Pad: Integer;
  LastCh,PadCh,Sign: Byte;
begin
  Str := StrUser + StrId;
  L := Length(Str);
  if L = 0 then
  begin
    Result := '';
    Exit;
  end;

  if L > 18 then
  begin
    PadCh := Ord(Str[18]);
    Pad := L - $14;
    Sign := $14;
    while Pad > 0 do
    begin
      LastCh := Ord(Str[Sign]);
      if PadCh > LastCh then
      begin
        PadCh := PadCh - LastCh;
      end
      else
      begin
        PadCh := LastCh - PadCh;
      end;
      Inc(Sign);
      Dec(Pad);
    end;
   
    SetLength(Str,18);
    if PadCh = 0 then
    begin
      PadCh := $FF;
    end;
    Insert(Char(PadCh),Str,1);
  end
  else
  begin
    PadCh := Ord(Str[L]);
    LastCh := PadCh;
    if L < 18 then
    begin
      if PadCh > $7F then
      begin
        Sign := $FF;
      end
      else
      begin
        Sign := 1;
      end;
      Pad := 18 - L;
      while Pad > 0 do
      begin
        PadCh := PadCh + Sign;
        Insert(Char(PadCh),Str,1);
        Dec(Pad);
      end;   
    end;
    Insert(Char(LastCh),Str,1);
  end;

  if L > $FF then
  begin
    L := $FF;
  end;
  Insert(Char(L),Str,2);
  Result := KUser(Str,Num1,Num2,Num3);   
end;

function GetShift1(I: Integer): Byte;
var
  c: Byte;
begin
  c := 0;
  i := i and $FF;
  repeat
    Inc(c);
    i := i shr 1;//
  until i < $7F;//6x
  Result := c;
end;

function GetFake2(I: Integer): Byte;
var
  c: Byte;
begin
  c := 0;
  i := i and $FF;
  repeat
    Inc(c);
    i := i shl 1;
  until i > $20;
  Result := c;
end;

function GetMask(Shift: Integer): Integer;
begin
  Result := $0;
  while Shift > 0 do
  begin
    Result := (Result shl 1) or 1;
    Dec(Shift);
  end;  
end;

function GetHD(): String;
var
  Serial: DWORD;
  MaximumComponentLength: DWORD;
  FileSystemFlags: DWORD;
  Str: String;
  I,L: Integer;
  ch: Char;
begin
  GetVolumeInformation('C:\',nil,0,@Serial,MaximumComponentLength,FileSystemFlags,nil,0);
  Str := Format('%x',[Serial]);
  Result := '';
  L := Length(Str);
  for I := L downto 1 do
  begin
    Ch := Str[I];
    if Not(Ch in ['9','Z']) then
      Ch := Char(Ord(Ch) + 1);
    Result := Result + Ch;
  end;
end;

//一下是对应函数的反函数
function DKCode1(Str: String): String;
var
  L,I: Integer;
  B0,B1,B2,B3: Byte;
begin
  Result := '';
  L := Length(Str);
  for I := 1 to L do
  begin
    B0 := Ord(Str[I]);
    if B0 = 0 then
    begin
      B0 := Random(26) + $41;//
      B1 := Random(10) + $30;//30-39//防止特殊字符出现, 正常范围还可以包含特殊字符
    end
    else
    begin
      if B0 in[$21..$7E] then
      begin
        B1 := $43;//B1 := $63;//也可以
      end
      else
      begin
        if B0 > $7E then
        begin
          B2 := GetShift1(B0);
          if B2 = 2 then
          begin
            B2 := 3;
          end;
          B3 := B0 and GetMask(B2);
          B0 := B0 shr B2;
          B1 := ($43 - B2) or (B3 shl 4);
        end
        else
        begin
          B2 := GetFake2(B0);
          B0 := B0 shl B2;
          B1 := $43 + B2;
        end;
//   B2=40,则B0=xxxx x000
//   B2=41,则B0=xxxx xx00
//   B2=42,则B0=xxxx xxx0
//   B2=43,则B0=任意可见字符
//   B2=44,则B0=0xxx xxxx
//   B2=45,则B0=00xx xxxx
//   B2=46,则B0=000x xxxx
//   B2=47,则B0=0000 xxxx
//   B2=48,则B0=0000 0xxx
//   B2=49,则B0=0000 00xx
//   B2=4A,则B0=0000 000x
//   B2=4B以上,则B0=0;
      end;
    end;
    Result := Result + Char(B0) + Char(B1);
  end;
end;

function DKCode(Str: String;Num1,Num2,Num3: Integer): String;
var
  I,L: Byte;
  Num: Integer;
begin
  Result := '';
  Num := Num1;
  L := Length(Str);
  for I := 1 to L do
  begin
    Result := Result + Char(Ord(Str[I]) xor ((Num shr 8) and $FF));
    Num := Num + Ord(Str[I]);
    Num := Num * Num2 + Num3;
  end;
end;

function DUserCode(StrUser: String): String;
var
  Str: String;
begin
  Str := KUser(StrUser,982,12675,35892);
  Result := DKCode1(Str);
end;

function Serial(StrId, StrUser: String): String;
begin
  Result := DUserCode(UserUser(StrId,StrUser,982,12675,35892));
end;

//入口函数是Serial


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

收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 1192
活跃值: (1619)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
厉害哦,,呵呵

刚看到是初级会员,,一会儿就是VIP了,
2006-10-22 17:08
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
最初由 DiKeN 发布
//freeRes 0.94注册算法

function KUser(Str: String;Num1,Num2,Num3: Integer): String;
var
I,L: Byte;
........

看来DiKeN最近心情不错,呵~

最初由 龙岱客 发布
厉害哦,,呵呵

刚看到是初级会员,,一会儿就是VIP了,

以前在001软件调试论DiKeN为论坛做过不少贡献,DiKeN是公认的牛人之一。;)
2006-10-22 17:08
0
雪    币: 1192
活跃值: (1619)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 kanxue 发布
DiKeN是公认的牛人之一

知道哦,

传说中的公牛
2006-10-22 17:12
0
雪    币: 440
活跃值: (737)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
5
精华1和2上有很多ID
都隐了
2006-10-22 18:26
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
......
2006-10-22 18:31
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
牛啊,

可惜看不懂,可否编译一下呢?
2006-10-23 02:30
0
雪    币: 175
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
厉害,高人。
2006-10-23 20:00
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
9
D头的要顶一下
2006-10-23 20:13
0
雪    币: 3689
活跃值: (4247)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
10
小糖MM就是厉害,注册通过,其他的呢?

http://restools.hanzify.org/article.asp?id=3

里面的都写了注册机吧。

2006-10-24 08:14
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
11
小糖MM是谁?
2006-10-24 08:40
0
雪    币: 3689
活跃值: (4247)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
12
最初由 firstrose 发布
小糖MM是谁?


DiKeN就是啦。
2006-10-24 08:55
0
雪    币: 294
活跃值: (578)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zxc
13
最初由 china 发布
DiKeN就是啦。


别人明明是小明哥
2006-10-24 10:07
0
雪    币: 1126
活跃值: (156)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
14
没有其他的啊。现在没那么多时间了。每天6点就去出去上班,晚上很晚才回来,很可怜的。
2006-10-24 21:18
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
“牛B”不是一个形容词,它是一个名词~~~!
2006-10-24 22:32
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
16
汗楼上的
2006-10-25 01:13
0
雪    币: 3962
活跃值: (2378)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
函数对应汇编,不错。
最后于 2018-5-18 11:56 被tommouse编辑 ,原因: 发帖错误
2018-5-17 19:08
0
游客
登录 | 注册 方可回帖
返回
//