tponguard
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 114
- Kayıt: 20 Ağu 2004 01:08
tponguard
merhaba ben programa öyle bi koruma koymam lazımki hem başka bilgisayarda çalışmıcak hemde günü bittiğinde çalışmıcak şu şekilde tponguardda vardır makinanın system, user, network , harddisk bilgilerine göre serial üretmek istiyorum bu şekilde başka bilgisayarda çalışmıcak ama program açılışta makinanın işde sistem, harddisk, network bilgilerine göre machineıd yi vericek bende ona göre serial vericem kısaca program açılışta bir edit1.text de machineıd yi göstercek bana kopyalayıp yollucak bende o numaraya göre ona serial vercem böylece diğer makinalarda çalışmıcak ayrıca birde programı mesela gün kısıstlaması koymak istiyorum mesela 3 aylık 2 koruma olucak hem machineıd hemde zamanlı günü bittiğinde çalışmıcak bunu tponguardda nasıl yapabiliriz ? detaylı anlatabilirseniz sevinirim
Kurallara Uyalım Uymayanları Uyduralım .


Bileşenlerin işlevlerine göre ççözeceğini umud ediyorum.Geçenlerde bende biraz üzerine düştüm birşeyler yaptım ama tam tatmin edemedim ve ara verdim biraz kaynak neyin bulmak için,forumdada ararsan detaylı değil ama güzel bilgiler mevcut..Mantığını tam olarak bende kavrayamadım çünkü fazla zamanım yoktu ama hep beraber el atarsak faydalı bir işe imza atarız gibime geliyor.Kolay gelsin..TOgMakeKeys : Sürüm kodunu oluşturmak veya kontrol etmek için gerekli prosedürler topluluğunu barındırır.
TOgMakeCodes : Sürüm veya benzersiz makine kodu gibi bilgilerden programın çalışması için gerekli kodu üretecek olan bileşendir.
TOgDateCode : Programın belli bir tarihe kadar çalışmasına izin vermeyi kontrol edecek bileşendir.
TOgDaysCode : Programın belli bir gün kadar çalışmasına izin ve
TOgNetCode : Programın belli bir client kullanıcı sayısı kadar çalışmasına izin vermeyi kontrol edecek bileşendir.
TOgRegistrationCode : Programın kayıt yaptırılmadan çalışıp çalışmamasını kontrol edecek bileşendir.
TOgSerialNumberCode : Programın kayıt yaptırılmadan çalışıp çalışmamasını kontrol edecek bileşendir.
TOgSpecialCode : Programcının kendi istediği gibi sınırlamalar getirmesini sağlayan bileşendir
TOgUsageCode : Programın belli bir sayıda çalışmasını sağlayacak bileşendir.
TOgProtectExe : Programın exe sini kontrol ederek, üzerinde değişiklikler yapıldıysa bunu anlamaya yarayan bileşendir
Tüm bileşenlerde ana mantık, programa gömülü bir dizi anahtar sayı, programın çalıştığı bilgisayarın özellikleri ile elde edilmiş bir sayı vb.. gibi değerleri şifrelemek, program satıcısının sağladığı şifre ile karşılaştırmak ve eğer geçersiz ise programı sonlandırmaktır.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
üstteki yazını devamı
ah bi bitse

bunu programınızın splash screenine atım, eğer register.dat ta geçerli şifreyi bulursa splashı kapatıp geçer, yok bulamazsa size sorar.
buda sizde kalacak key genereatörünüz



bunu programınızın splash screenine atım, eğer register.dat ta geçerli şifreyi bulursa splashı kapatıp geçer, yok bulamazsa size sorar.
Kod: Tümünü seç
unit exam1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ExtCtrls,
OnGuard,// OnGuard kütüphanesi
// OnGuard Liblary
OgUtil; // OnGuard için çeşitli fonksiyonlar
// Some functions
type
TForm1 = class(TForm)
OgMakeKeys1: TOgMakeKeys;
SpinEditSerialNo: TSpinEdit;
Label1: TLabel;
EditMachineUniqueNumber: TEdit;
Label2: TLabel;
Panel1: TPanel;
Label4: TLabel;
ButtonDemo: TButton;
ButtonSatinAl: TButton;
EditSifre: TEdit;
Label3: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
Label5: TLabel;
procedure FormCreate(Sender: TObject);
procedure ButtonSatinAlClick(Sender: TObject);
procedure ButtonDemoClick(Sender: TObject);
private
procedure GetRegistrationInformation (var ReleaseCodeString: string; var SerialNumber : longint);
function IsReleaseCodeValid (ReleaseCodeString: string; const SerialNumber : longint) : boolean;
procedure SaveRegistrationInformation (const ReleaseCodeString: string; const SerialNumber : longint);
public
{ Public declarations }
end;
var
Form1: TForm1;
const
Key : TKey = ($3E,$C9,$18,$78,$7D,$AC,$AF,$D3,$64,$E0,$BC,$0A,$43,$68,$2C,$F2);
RegistrationFile = 'Register.dat';
var
MachineModifier : longint;
RegistrationInfo : TStringList;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var StoredReleaseCodeString : string;
StoredSerialNumber : longint;
begin
MachineModifier := ABS(CreateMachineID([midUser, midSystem, {midNetwork,} midDrives]));
GetRegistrationInformation(StoredReleaseCodeString,StoredSerialNumber);
if IsReleaseCodeValid(StoredReleaseCodeString,StoredSerialNumber) then
begin
Showmessage('Kayıt daha önce yapılmış program tam özellikleri ile başlatılabilir.');
// Splash formu kapatın, ve programı başlatın ...
end
else
begin
// Değerleri editlere aktar.
EditMachineUniqueNumber.Text := inttostr(MachineModifier);
SpinEditSerialNo.Value := StoredSerialNumber;
EditSifre.Text := StoredReleaseCodeString;
end;
end;
procedure TForm1.ButtonSatinAlClick(Sender: TObject);
begin
if IsReleaseCodeValid(EditSifre.Text,SpinEditSerialNo.Value) then
begin
// Kabul edilen kodu kaydet...
SaveRegistrationInformation(EditSifre.Text,SpinEditSerialNo.Value);
// Splash formu kapatın, ve programı başlatın ...
Showmessage('Kayıt şimdi yapıldı program tam özellikleri ile başlatılabilir.');
end
else
begin
// Kabul edilmeyen değerleri editlere aktar.
EditMachineUniqueNumber.Text := inttostr(MachineModifier);
SpinEditSerialNo.Value := SpinEditSerialNo.Value;
EditSifre.Text := EditSifre.Text;
Showmessage('Yanlış Şifre, Tekrar deneyiniz.');
end;
end;
procedure TForm1.ButtonDemoClick(Sender: TObject);
begin
// Splash formu kapatın, ve programı başlatın ...
Showmessage('Demo modda programınızı başlatın.');
end;
(*
**********************************
Ara Fonksiyonlar
Utility
**********************************
*)
// bilgisayar tarafından üretilen ve register dosyasından okunan şifreleri karşılaştırır,
function TForm1.IsReleaseCodeValid (ReleaseCodeString: string; const SerialNumber : longint) : boolean;
var
CalculatedReleaseCode : TCode;
ProgramKey : TKey;
begin
// Kod içerisindeki boşlukları kaldırır
while pos(' ', ReleaseCodeString) > 0 do
System.Delete(ReleaseCodeString, pos(' ', ReleaseCodeString), 1);
ProgramKey:= Key;
ApplyModifierToKeyPrim(MachineModifier, ProgramKey, sizeof(ProgramKey));
// Makina tekil numarası, seri no, tarih verilerini kullanarak
// release kodu üreten fonksiyon
InitSerialNumberCode(ProgramKey, SerialNumber, 0, CalculatedReleaseCode);
// üretilen ve okunan kodların karşılaştırılması
result := AnsiUpperCase(ReleaseCodeString) = AnsiUpperCase(BufferToHex(CalculatedReleaseCode, sizeof(CalculatedReleaseCode)));
end;
// Kullanıcıya gönderilmiş olan register dosyasını açar ve değişkenlere atar.
procedure TForm1.GetRegistrationInformation (var ReleaseCodeString: string; var SerialNumber : longint);
begin
if FileExists(RegistrationFile) then begin
RegistrationInfo := TStringList.Create;
RegistrationInfo.LoadFromFile(RegistrationFile);
SerialNumber := StrToInt(RegistrationInfo[0]);
ReleaseCodeString := RegistrationInfo[1];
RegistrationInfo.Free;
end else begin
SerialNumber := 0;
ReleaseCodeString := '';
end;
end;
procedure TForm1.SaveRegistrationInformation (const ReleaseCodeString: string; const SerialNumber : longint);
begin
RegistrationInfo := TStringList.Create;
RegistrationInfo.Add(format('%d',[SerialNumber]));
RegistrationInfo.Add(ANSIUpperCase(ReleaseCodeString));
RegistrationInfo.SaveToFile(RegistrationFile);
RegistrationInfo.Free;
end;
end.
buda sizde kalacak key genereatörünüz
Kod: Tümünü seç
unit Unitgenerator;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin,
OnGuard, // Onguard functions
OgUtil; // OnGuard için çeşitli fonksiyonlar;
type
TForm1 = class(TForm)
SpinEditSerialNo: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
EditMachineUniqueNumber: TEdit;
Panel1: TPanel;
Label3: TLabel;
ButtonSatinAl: TButton;
EditSifre: TEdit;
Bevel2: TBevel;
Bevel1: TBevel;
OgMakeKeys1: TOgMakeKeys;
Label4: TLabel;
Label5: TLabel;
procedure ButtonSatinAlClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonSatinAlClick(Sender: TObject);
Const
Key : TKey = ($3E,$C9,$18,$78,$7D,$AC,$AF,$D3,$64,$E0,$BC,$0A,$43,$68,$2C,$F2);
var
ProgramKey : TKey;
MachineModifier : longint;
SerialNumber : longint;
CalculatedReleaseCode : TCode;
begin
ProgramKey := Key;
MachineModifier := StrtoInt64(EditMachineUniqueNumber.Text);
SerialNumber := SpinEditSerialNo.Value;
ApplyModifierToKeyPrim(MachineModifier, ProgramKey, sizeof(ProgramKey));
InitSerialNumberCode(ProgramKey, SerialNumber, 0, CalculatedReleaseCode);
EditSifre.Text:= AnsiUpperCase(BufferToHex(CalculatedReleaseCode, sizeof(CalculatedReleaseCode)));
end;
end.
.-.-.-.-.-.-.-. ^_^
-
- Üye
- Mesajlar: 114
- Kayıt: 20 Ağu 2004 01:08
hata oluşuyor
EditSifre.Text:= AnsiUpperCase(BufferToHex(CalculatedReleaseCode, sizeof
bu sattırda hata veriyor...
undeclerate idetifer ...
bu sattırda hata veriyor...
undeclerate idetifer ...