Windows优化大师注册机源码 unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry, StdCtrls, Buttons;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Label3: TLabel; Edit3: TEdit; GetKeySpeedButton: TSpeedButton; CheckBox1: TCheckBox; Label4: TLabel; procedure GetKeySpeedButtonClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; Family, Model, Stepping: Byte;
implementation
{$R *.dfm}
//获得CPU信息的过程,用汇编代码写的 procedure GetCpuID; asm PUSH EAX MOV EAX, 1 DW $A20F //汇编指令CPUID的机器代码 MOV Stepping, AL AND Stepping, 0FH //取得CPU STEPPING数送入到变量Stepping中 AND AL, 0F0H SHR AL, 4 MOV Model, AL //取得CPU MODEL数送入到变量Model中 SHR AX, 8 AND AL, 0FH MOV Family, AL //取得CPU FAMILYG数送入到变量Family中 POP EAX end;
//RSA的加密和解密函数,等价于(m^e) mod n(即m的e次幂对n求余) function Encrypt_Decrypt(m: Int64; e: Int64=$2C86F9; n: Int64=$69AAA0E3): Int64; var a, b, c: Int64; begin a:=m; b:=e; c:=1; while b<>0 do if (b mod 2)=0 then begin b:=b div 2; a:=(a * a) mod n; end else begin b:=b - 1; c:=(a * c) mod n; end; Result:=c; end;
procedure TForm1.GetKeySpeedButtonClick(Sender: TObject); var ID, UserName, CpuVer: String; s: Array [1..4] of Cardinal; temp, Num1, Num2: Cardinal; Code1, Code2: Int64; i, ascii: Byte; Reg: TRegistry; begin if (Edit1.Text='''''''') and (CheckBox1.Checked=False) then Application.MessageBox(''''请输入注册申请码!'''', ''''警告'''', MB_OK); if (Edit1.Text='''''''') and (CheckBox1.Checked=True) then Application.MessageBox(''''请输入注册者姓名!'''', ''''警告'''', MB_OK); if (CheckBox1.Checked=true) and (Edit1.Text<>'''''''') then begin UserName:=Edit1.Text; //从Edit1.Text中取得用户名 GetCpuID; //调用过程GetCpuID CpuVer:=''''Level ''''+IntToStr(Family)+'''' Rev. ''''+IntToStr(Model)+''''.''''+IntToStr(Stepping); temp:=1; i:=1; while UserName[i]<>#0 do begin ascii:=ord(UserName[i]); //函数ord()的作用为取得字符的ASCII码 temp:=(temp*ascii+$D0878) mod $F4240; inc(i); end; i:=1; while CpuVer[i]<>#0 do begin ascii:=ord(CpuVer[i]); temp:=(temp*ascii+$2597D) mod $F4240; inc(i); end; ID:=IntToStr(temp); end; if (CheckBox1.Checked=false) and (Edit1.Text<>'''''''') then ID:=Edit1.Text; ID:=ID+''''1234567''''; SetLength(ID, 8); //把字符串ID长度变为8个,并把后面的字符截掉
//下面四行语句是把字符串''''You are big pig.''''的内存数据送到变量s中 s[1]:=$20756f59; s[2]:=$20657261; s[3]:=$20676962; s[4]:=$2e676970; Num1:=0; for i:=4 downto 2 do Num1:=(Num1+ord(ID[i])) shl 8; Num1:=Num1+ord(ID[1]); Num2:=0; for i:=8 downto 6 do Num2:=(Num2+ord(ID[i])) shl 8; Num2:=Num2+ord(ID[5]); temp:=0; for i:=1 to 32 do begin temp:=temp+$9E3779B9; Num1:=Num1+(Num2 shl 4)+(s[1] xor Num2)+((Num2 shr 5) xor temp)+s[2]; Num2:=Num2+(Num1 shl 4)+(s[3] xor Num1)+((Num1 shr 5) xor temp)+s[4]; end;
Code1:=(Num1 mod $40000000) + 2; Code2:=($93E0014 shl 2)+ Num1 div $40000000 + 2; Code1:=Encrypt_Decrypt(Code1); code2:=Encrypt_Decrypt(Code2); if (CheckBox1.Checked=False) and (Edit1.Text<>'''''''') then begin Edit2.Text:=IntToHex(Code1, 8); Edit3.Text:=IntToHex(Code2, 8); end; if (CheckBox1.Checked=True) and (Edit1.Text<>'''''''') then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; if Reg.OpenKey(''''Software\Wom'''', True) then begin Reg.DeleteValue(''''Masters''''); Reg.WriteString(''''Register'''', UserName); Reg.WriteString(''''Register_1'''', IntToHex(Code1, 8)); Reg.WriteString(''''Register_2'''', IntToHex(Code2, 8)); end; Reg.Free; Application.MessageBox(''''自动注册完成!'''', ''''信息'''', MB_OK); end; end;
procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked=true then begin GetKeySpeedButton.Caption:=''''自动注册''''; Label1.Caption:=''''注册者姓名''''; Edit1.MaxLength:=0; Label2.Visible:=false; Label3.Visible:=false; Edit2.Visible:=false; Edit3.Visible:=false; end else begin GetKeySpeedButton.Caption:=''''取得注册码''''; Label1.Caption:=''''注册申请码''''; Edit1.MaxLength:=8; Label2.Visible:=true; Label3.Visible:=true; Edit2.Visible:=true; Edit3.Visible:=true; end; end;
end.
没有相关教程
|