📄 frmmain.~pas
字号:
unit frmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
T15keyString=packed record
varSM_FEATURECHANGED:Integer ;
VARSM_SUBABILITY:Integer ;
VARSM_MAGADDABILTY:Integer ;
VARSM_BAGITEMS:Integer ;
VARSM_GAMEGOLDNAME:Integer ;
VARSM_LOGON:Integer ;
VARSM_SENDMYMAGIC:Integer ;
g_sAFTEpE:string[8];
runid :Integer ;
end;
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Edit3: TEdit;
Button4: TButton;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
RegSn,HardwareID:string;
implementation
uses _Function,EDcode;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var Sarr:array[0..515] of char;
s,ts:string;
i :Integer;
tks:T15keyString ;
keys:string;
begin
for I:=0 to 515 do begin
Sarr[i]:= inttohex(random(15),1)[1];
end;
// FOR i:=0 TO 23 DO BEGIN
// Sarr[i]:=char( byte(edit1.Text[i+1]) xor byte(edit1.Text[i+1]));
// END;
s:= EncodeStr(edit1.Text,edit2.Text) ;
// memo1.Lines.Add(s) ;
strpcopy(@sarr[strtoint('$'+copy(edit1.Text,1,2))],s) ;
sarr[strtoint('$'+copy(edit1.Text,1,2))+64] :='F' ;
sarr[strtoint('$'+copy(edit1.Text,1,2))+65] := edit1.text[4] ;
sarr[strtoint('$'+copy(edit1.Text,1,2))+67] := edit1.text[9] ;
sarr[strtoint('$'+copy(edit1.Text,1,2))+71] := edit1.text[6] ;
tks.varSM_FEATURECHANGED:=41 ;
tks.VARSM_SUBABILITY:= 752 ;
tks.VARSM_MAGADDABILTY:= 21292 ;
tks.VARSM_BAGITEMS:= 201;
tks.VARSM_GAMEGOLDNAME:= 59001;
tks.VARSM_LOGON:= 50 ;
tks.VARSM_SENDMYMAGIC:=211 ;
tks.g_sAFTEpE :='EFE0DCF0' ;
tks.runid:=1;
keys:= EncodeBuffer (@tks,sizeof(T15keyString));
keys:= EncodeStr(keys,edit1.Text) ;
strpcopy(@sarr[strtoint('$'+copy(edit1.Text,1,2))+80],keys) ;
sarr[strtoint('$'+copy(edit1.Text,1,2))+80+160] :='F' ;
memo1.Lines.Add(inttostr(length(keys))) ;
memo1.Lines.Add(sarr) ;
memo1.Lines.Add(inttostr(length(sarr))) ;
RegSn:=sarr;
HardwareID:=edit1.Text;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.Clear;
end;
function checksn(k,H:Integer): boolean;
var I,j:Integer; pos:Integer ;
begin
result:=false;
if (length(HardwareID)<24) or (length(RegSn)<516) then begin
result:=false;
exit;
end;
for i:=1 to 516 do begin
for j:=1 to 100 do begin
pos:= pos mod i ;
if pos = (j mod 8) then begin
pos :=Pos +100 mod 8 ;
end;
end;
if i = 516 mod 10 then begin
pos:=strtoint('$'+copy(HardwareID,1,2)) ;
break;
end;
end;
for i:=1 to 516 do begin
if RegSn[i]=char('F') then begin
if pos+h =i then begin
result:=true;
break;
end;
end;
end;
end;
function CheckReg(): boolean;
var SHWid,i,h:Integer;
begin
Result:=false;
for i:=900 downto 1 do begin
for h:=0 to 100 do begin
if (h=65) and ((i mod 90)>3) then begin
if checksn(i,h) then Result:=true;
end;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var s,s1:string;
pos:Integer;
tks:T15keyString ;
begin
if CheckReg then begin
memo1.Lines.Add('ok')
end;
pos:=strtoint('$'+copy(HardwareID,1,2)) ;
s:= copy(RegSn,pos+81,160) ;
s1:= decodeStr(s,edit1.Text) ;
decodeBuffer (s1,@tks,sizeof(T15keyString));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
edit4.Text:=EncodeStr(edit3.Text,'11') ;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
edit3.Text:=decodeStr(edit4.Text,'11') ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -