会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
技术文档 > Delphi
Windows优化大师注册机源码
发表日期:2003-03-16 00:00:00作者: 出处:  

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.

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00405