Delphi程式註冊碼設計 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
此為轉貼資料 Delphi程式註冊碼設計
當你辛辛苦苦用DELPHI做好了一個你認?十分不錯的程式,你是否想把它發佈出去成?共用軟體呢? 做?一個共用軟體,註冊碼肯定是少不了的,你可以通過判斷程式是否註冊來進行功能,時間或一些其他限制。現在就介紹一種簡單的註冊碼製造方法。
思路是這樣的:程式運行時先檢測註冊表,如果找到註冊項,則表明已經註冊,如果沒有找到註冊項,則提示要求註冊。
在DELPHI下新建一工程,放置Edit1、Edit2、Label1、Label2、Button1元件。具體代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Registry;//在此加上Registry以便調用註冊表。
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Function Check():Boolean;
Procedure CheckReg();
Procedure CreateReg();
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
PName:string; //總體變數,存放用戶名和註冊碼。
PPass:integer;
implementation
{$R *.DFM}
Procedure TForm1.CreateReg();//創建用戶資訊。
var Rego:TRegistry;
begin
Rego:=TRegistry.Create;
Rego.RootKey:=HKEY_USERS;
rego.OpenKey(‘.DEFAULT\Software\AngelSoft\Demo’,True);//鍵名?AngelSoft\Demo,可自行修改。
Rego.WriteString(‘Name’,PName);//寫入用戶名。
Rego.WriteInteger(‘Pass’,PPass);//寫入註冊碼。
Rego.Free;
ShowMessage(‘程式已經註冊,謝謝!’);
CheckReg; //刷新。
end;
Procedure TForm1.CheckReg();//檢查程式是否在註冊表中註冊。
var Rego:TRegistry;
begin
Rego:=TRegistry.Create;
Rego.RootKey:=HKEY_USERS;
IF Rego.OpenKey(‘.DEFAULT\Software\AngelSoft\Demo’,False) then
begin
Form1.Caption:=‘軟體已經註冊’;
Button1.Enabled:=false;
Label1.Caption:=rego.ReadString(‘Name’);//讀用戶名。
Label2.Caption:=IntToStr(Rego.ReadInteger(‘Pass’)); //讀註冊碼。
rego.Free;
end
else Form1.Caption:=‘軟體未註冊,請註冊’;
end;
Function TForm1.Check():Boolean;//檢查註冊碼是否正確。
var
Temp:pchar;
Name:string;
c:char;
i,Long,Pass:integer;
begin
Pass:=0;
Name:=edit1.Text;
long:=length(Name);
for i:=1 to Long do
begin
temp:=pchar(copy(Name,i,1));
c:=temp^;
Pass:=Pass+ord(c); //將用戶名每個字元轉換?ASCII碼後相加。
end;
if StrToInt(Edit2.Text)=pass then
begin
Result:=True;
PName:=Name;
PPass:=Pass;
end
else Result:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Check then CreateReg
else ShowMessage(‘註冊碼不正確,無法註冊’);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckReg;
end;
end.
<註冊器>
在DELPHI下新建一工程,放置Edit1,Edit2,Button1元件。具體代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Temp:pchar;
Name:string;
c:char;
i,Long,Pass:integer;
begin
Pass:=0;
Name:=edit1.Text;
long:=length(Name);
for i:=1 to Long do
begin
temp:=pchar(copy(Name,i,1));
c:=temp^;
Pass:=Pass+ord(c);
end;
edit2.text:=IntToStr(pass);
end;
end.
從<註冊器>中取得註冊碼,便可在<註冊常式>中進行註冊。原理是使用ORD函數取得用戶名每單個字元的ASCII碼值,並進行相加得到註冊碼。當然,這十分容易並破解,你可以用XOR進行異或操作,或者倒取反值……具體的要看你怎?實現了。總之,本文章只?磚引玉罷了
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
kiss999
一般會員 發表:19 回覆:10 積分:13 註冊:2002-10-12 發送簡訊給我 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
本文章只?磚引玉罷了
註冊到登錄檔容易被破解 那就看設計者的考量了
使用硬體或軟體演算一定會有一個記錄的地方 至於記錄的地方是
1 登錄檔
2 ini(使用檔案型態)
3 自定密碼封裝檔(類似zip或rar自定壓縮程式來讀取與寫入)
4 硬體本身id值(使用自定密碼演算)
**********************************************************************
由於一般套軟無法像ms一般如果只要求 註冊者 每次上網註冊可能也不方便
我想註冊只防君子吧 因為當有人破解你的程式 也代表你的程式已經讓此使用者開始認同 所以先將程式完美 一切就好事近了 參考參考 【轉貼】如何使破解你程式的人感到頭疼一點
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21841
【BCB】【分享】在Win2K/WinXP/Win.Net讀出硬碟序號
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21428 研究研究
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
c905165
中階會員 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
其實個人認為,看了大家討論的文章之後,發現有一個方法能夠「以最簡單的方式達到很難破解」,提出來給大家參考。
就是將演算出來的這一些特徵值電腦本身獨特的特性如bios編號、cpu型號等等,和姓名、序號一起加密後,再存入想要存的地方,包括上面所提的.ini或登錄檔或其他的地方,反正隨便挑一個放就好了,因為「安全不是依賴這個地方」。
如果使用這種方法到目前為止,唯一的破解方式,只有用soft-ice之類的軟體去trace或debug,將程式碼本身「修改」掉這些檢查點。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |