線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2966
推到 Plurk!
推到 Facebook!

Delphi程式註冊碼設計

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-25 18:09:41 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-28 02:07:15 IP:218.187.xxx.xxx 未訂閱
我有個小小意見,我認為註冊到登錄檔容易被破解. 我以前有看過將註冊檔分成幾個檔案,分別存檔. 然後每當執行的時候就做交互比對,若試用時間到期, 想將時間條回去.程式就不准執行.
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-28 02:27:26 IP:61.221.xxx.xxx 未訂閱
本文章只?磚引玉罷了 註冊到登錄檔容易被破解 那就看設計者的考量了 使用硬體或軟體演算一定會有一個記錄的地方 至於記錄的地方是 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-01 01:03:49 IP:203.204.xxx.xxx 未訂閱
其實個人認為,看了大家討論的文章之後,發現有一個方法能夠「以最簡單的方式達到很難破解」,提出來給大家參考。 就是將演算出來的這一些特徵值電腦本身獨特的特性如bios編號、cpu型號等等,和姓名、序號一起加密後,再存入想要存的地方,包括上面所提的.ini或登錄檔或其他的地方,反正隨便挑一個放就好了,因為「安全不是依賴這個地方」。 如果使用這種方法到目前為止,唯一的破解方式,只有用soft-ice之類的軟體去trace或debug,將程式碼本身「修改」掉這些檢查點。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
系統時間:2024-04-28 5:51:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!