Categories

Powered by Blogger.

Sunday, August 11, 2013

CARA MELINDUNGI PROGRAM DENGAN SERIAL NUMBER

Sebagai seorang programmer, tentu kita tidak ingin program yang kita buat bisa dicopy seenaknya oleh orang lain, bagi orang yang ingin menggunakan program buatan kita tentunya harus membayar/membeli kepada kita . Terutama jika kita membuat program yang sifatnya umum, misalnya Program aplikasi akuntasi, Inventory, Point Of Sale atau Program Kasir. Untuk mencegah agar program kita tidak bisa di Copy sembarang, atau disebarkan oleh orang lain, maka kita harus melindungi program kita. Jadi setiap ada orang yang ingin menggunakan Program buatan kita, mereka harus memebelinya dari kita bukan dengan mengcopy dari orang yang pernah membeli sebelumnya. Umumnya ada dua cara melindungi program yaitu Melindungi Program Dengan Serial Number dan Melindungi Program Dengan Dongle ( sebuah alat sebesar FlashDisk ). Namun pada posting kali ini saya hanya akan menbahas tentang Cara Melindungi Program dengan Serial Number Saja. Sedangkan Melindungi Program dengan dongle akan dibahas pada postingan yang lain. Dalam postingan kali ini saya mencoba menjelaskan Cara Melindungi Program Dengan Serial Number dimana untuk komputer yang berbeda diperlukan serial number yang berbeda, jadi meskipun seseorang sudah menegathui satu serial number tetapi serial number tersebut tidak bisa digunakan pada komputer lainnya. Jadi Satu Serial Number hanya berlaku untuk satu komputer saja. 
 
Gambar 1.
Contoh Form Registrasi Menggunakan Serial Nomer (Kode Registrasi ) 
Cara Melindungi Program dengan Serial Number adalah sebagai berikut:
Untuk dapat memberikan serial number yang hanya berlaku pada satu komputer saja maka kita harus mengetahui sesuatu yang sifatnya unik dalam komputer tersebut, misalnya serial number Prosesor, serial number Motherboard atau serial number Hardiskdrivenya. Misalnya kita menggunakan serial number Harddisk. Kalau kita menggunakan Serial Number HarddiskDrive maka kita harus tahu bagaimana  Coding membaca serial number Harddisk dengan Delphi ( Nanti akan sayaberikan dibawah ).
Sekarang kita bahas logikanya dulu, lebih mudah dengan contoh berikut

Misalnya kita dapatkan Serial Number Hardisknya adalah 4239947770 , serial number ini kita simpan dalam variable Float/Real/double agar bisa kita tambahkan/kurangkan dengan bilangan. 

Untuk memberikan Serial Number Kepada Komputer ini , maka angka Serial Number diatas kita tambah/kurangkan  dengan bilangan tertentu yang tetap. Misalnya 898989. Agar lebih rumit bisa ditambahkan dengan cara lain, misalnya angka kedua dan kelima atau lainnya sesuaikan dengan kreatifitas kalian. 
   
 Hasil penambahan itulah yang kita gunakan sebagai serial Number 

Untuk Contoh diatas SN = 4239947770 + 898989 = 4240846759 

 Jadi SN Untuk ini adalah 4240846759 

Nah Saat Registrasi lakukan pemeriksaan serial number yang diinput , kita periksa jumlahnya apakah  sesuai, jika sesuai maka registrasi berhasil, jika tidak , berarti registrasi gagal. 

 Angka 898989 adalah angka khusus yang kita ciptakan sendiri, sesuai dengan kreativitas masing masing. 

Pada Contoh Form registrasi diatas , Kode Installasi adalah Serial Number Hardisk pada komputer dimana kita meregistrasi Program 

 Kode Registrasi adalah tempat Input Serial Numbernya. 

Jadi Kode Intallasi yang muncul akan berbeda beda untuk setiap komputer karena serial Number Hardisknya pasti berbeda beda.  

 Berikut adalah Coding Cara membaca Serial Number

Setelah memahami logika diatas mari kita lanjutkan Cara Melindungi Program dengan Serial Number sesuai langkah langkah berikut:

Langkah 1:
Hal pertama yang harus disiapkan adalah menulis dan membaca Registry Windows, karena Serial Number akan kita simpan dalam registry Windows. Jika belom paham tentang cara Menulis dan Membaca Registry Windows dengan Delphi silahkan baca disini . Disana akan dijelaskan Cara Menulis/Membaca Registry Windows dengan Delphi.  Pada Program yang kita buat, tambahkan satu menu untuk melakukan Registrasi dalam hal ini untuk memasukan Serial Nomer yang sesuai, kemudian kita menyimpannya kedalam Registry Windows. Misalnya seperti pada Gambar 1 diatas. Mengenai Pembuatan Serial Nomor, silahkan baca lagi bagian penjelasan logika diatas. Berikut ini contoh Listing menyimpan hasil registrasi kedalam registry Windows.

 If cSerial.text= inttostr(SerialNum+ 898989)then
       Begin
        try
            Reg.OpenKey('\Software\myStock_Sx\Registrasi',true);
            Reg.WriteString('HD',inttostr(serialnum));
            Reg.WriteString('Serial',cSerial.text);
         finally
            Reg.CloseKey;
          end;
          MessageDlg('Registrasi Berhasil !', mtInformation,[mbOk], 0);
          Close;
       End else
       Begin
          MessageDlg('Registrasi Yang Anda Masukkan Tidak Benar', mtWarning,[mbOk], 0);
          cserial.SetFocus;
       End;

If cSerial.text= inttostr(SerialNum+ 898989)then …   adalah untuk memeriksa apakah serial nomer yang dimasukan sudah sesuai dengan yang kita berikan, untuk lebih jelasnya baca lagi penjelasan logika diatas, angka 898989 adalah angka yang bisa anda buat sendiri sesuai kreativitas masing masing.



Langkah 2
Langkah kedua dalam Cara Melindungi Program Dengan Serial Number  adalah membuat pemeriksaan apakah program sudah di registrasi atau belum, caranya adalah tambahkan script pemeriksaan di Form Utama pada Even on Activate atau onCreate. Maksudnya agar pada saat program pertamakali dijalankan maka program akan memeriksa dulu apakah sudah diregistrasi ( sudah di input serian nomernya atau belum ) Jika Sudah Program bisa dilanjutkan, jika belum maka Program langsung di exit.


Berikut adalah Script Untuk Membaca Registrasi di Registry Windows

  try
    try
      Reg.OpenKey('\Software\myStock_Sx\Registrasi', false);
      cHD:=Reg.ReadString('HD');
      cSerial:=Reg.ReadString('Serial');
      except  on ERegistryException do
           Begin

              messagedlg( ‘Program Belum Teregistrasi, Harap Lakukan Registrasi  ', mtWarning,[mbOK], 0);

              Application.Terminate;  /// Jika Belum terregistrasi maka proses yang ini / Program langsung close

          End;
    end;
   finally
    Reg.CloseKey;
  end;

cHD adalah string untuk menyimpan Serial Nomer Hardisk yang kita simpan saat Registrasi
cSerial adalah string untuk menyimpan Serial Nomer yang kita simpan saat Registrasi

kemudian lakukan pemeriksaan seperti saat Registrasi seperti berikut :

If cSerial= inttostr(strtoint(cHD)+ 898989) then
 Begin
      Exit;   /// Jika Benar Maka proses keluar dari sini > Program Bisa Dilanjutkan
 End
 Else
    messagedlg( ‘Program Belum Teregistrasi, Harap Lakukan Registrasi  ', mtWarning,[mbOK], 0);
    Application.Terminate;  /// Jika Tidak Benar Maka Program langsung Exit
 End;


Kalau ada yang Kurang Jelas Bisa tuliskan pertanyaan di bagian Komentar
Semoga Bermanfaat.
»»  READMORE...

CARA MEMBACA REGISTRY WINDOWS DENGAN DELPHI

Registry pada sistem operasi windows adalah tempat menyimpan segala macam setting atau pengaturan. Oleh karena itu kita bisa memanfaatkan registry windows ini untuk menyimpan setting atau pengaturan program aplikasi yang kita kembangkan dengan bahasa pemrograman delphi. Pengaturan atau seting yang saya maksud disini adalah pengaturan yang tidak kita simpan dalam database, tetapi pengaturan yang berlaku lokal di komputer tempat kita menggunakannya. Misalnya kalau kita membuat sebuah program POS ( Point Of Sale ) atau program kasir yang terpasang di beberapa komputer ( lebih dari satu komputer ) dimana seting hardwarenya berbeda-beda. Maka kita perlu menyimpan pengaturannya kedalam registry windowsnya, berikut ini akan saya jelaskan Cara Membaca RegistryWindows Dengan Delphi.  Dan Cara Menulis kedalam Registry Windows Dengan Delphi.
 Gambar 1. 
Contoh Listing Cara Membaca Registry Windows Dengan Delphi

Cara Membaca Registry Windows Dengan Delphi dan cara menulis kedalam registry windows dengan Delphi sebenarnya sama saja , yang berbeda hanya perintahnya saja yang berbeda yaitu Read dan Write, tetapi langkah langkahnya sama saja berikut ini saya berikan contoh Cara Membaca Registry Windows Dengan Delphi. :

Langkah 1 : 
Tambahkan Library Registry pada bagian Interface pada unit yang akan anda gunakan untuk membaca dan menulis Registry Windows seperti pada gambar berikut:
Perhatikan pada bagian yang dilingkari merah, pada contoh ini saya menggunakan Delphi XE3, sehingga penulisan  penambahan Registry  adalah seperti gambar diatas, Jika anda menggunakan versi lainnya misalnya Delphi 7 maka cukup dengan mengetikan Registry saja.

 Langkah 2: 
 Langkah selanjutnya dalam Cara Membaca Registry Windows Dengan Delphi , adalah membuat sebuah variable yang bertipe Tregistry untuk kita gunakan dalam menulis dan Membaca Registry Windows dengan Dephi. Seperti pada gambar berikut ini. 


Pada contoh diatas saya membuat variable dengan nama Reg,  namanya tidak harus Reg pemberian namanya sesuai dengan aturan pemberian nama variabel pada umumnya, tetapi tipenya harus TRegistry

Langkah 3:
Langkah selanjutnya dalam Cara Membaca Registry Windows Dengan Delphi adalah menentukan letak key pada registry, key pada registry ini dapat kita anggap seperti Folder atau direktori, caranya dapat kita lihat seperti pada script berikut:



Procedure TForm1.FormCreate(Sender: TObject);

begin

  Reg := Tregistry.Create;

  Reg.RootKey := HKEY_CURRENT_USER;

end;
 
Penempatan script diatas disesuaikan dengan keperluan, pada contoh diatas saya meletakkannya pada even Form onCreate , jadi variable Reg selalu diciptakan pada saat membuka Form tersebut.

HKEY_CURRENT_USER; adalah alamat tempat kita akan menyimpan Registry yang akan kita tulis dan baca. berikut ini adalah gambar isi Registry Windows yang dapat dilihat dengan mengetikkan perintah REGEDIT pada colom RUN pada Windows.



Langkah 4:
Langkah Selanjutnya adalah membuat perintah Menulis Kedalam Registry Windows dengan Delphi . Berikut ini adalah Script Untuk Menulis kedalam Registry Windows:



Procedure TForm1.simpanClick(Sender: TObject);

var alamat:string;

begin

alamat:='\Software\MyAPP\DataLogin';

         try

            Reg.OpenKey(alamat,true);

            Reg.WriteString('HostName',Ehost.text);

            Reg.WriteString('Database',Edata.Text);

          finally

            Reg.CloseKey;

          end;

          MessageDlg('Registrasi Perubahan Database Berhasil !', mtInformation,[mbOk], 0);

end;


alamat='\Software\myAPP\DataLogin'  adalah lokasi penyimpanan pada registry Windows, alamat ini dapat kita tentukan sendiri sesuai kebutuhan .

Reg.OpenKey(alamat,true);  : Adalah untuk membuka atau membuat key Baru kedalam Registry Windows sesuai dengan alamat yang kita berikan

Reg.WriteString('HostName',Ehost.text); : adalah perintah untuk menuliskan data yang ada pada komponen TEdit bernama Ehost kedalam  keyString yang kita beri nama HostName dalam Registry Windows.

Reg.WriteString('Database',Edata.Text); : adalah perintah untuk menuliskan data yang ada pada komponen TEdit bernama Edata kedalam  keyString yang kita beri nama Database dalam Registry Windows.

 Hasil dari proses ini dapat kita lihat pada Registry Editor dengan mengetikan perintah REGEDIT pada Kolom RUN pada Tombol START Windows, Hasilnya dapat dilihat seperti pada gambar berikut:



Langkah 5
Langkah ke lima adalah langkah yang menjadi Judul dan pembahasan utama dalam postingan kali ini yaitu :
Cara Membaca Registry Windows Dengan Delphi , scriptnya dapat dilihat seperti berikut ini:



procedure TForm1.BacaClick(Sender: TObject);

var alamat:string;

begin

alamat:='\Software\myAPP\DataLogin';

  try

    try

      Reg.OpenKey(alamat, false);

      Ehost.text  :=Reg.ReadString('HostName');

      Edata.text  :=Reg.ReadString('Database');

      except on ERegistryException do

      ShowMessage('Gagal membaca data dari registry.');

    end;

  finally

    Reg.CloseKey;

  end;

end;



alamat='\Software\myAPP\DataLogin'  adalah lokasi penyimpanan pada registry Windows, alamat ini dapat kita tentukan sendiri sesuai kebutuhan .

Reg.OpenKey(alamat,false);  : Adalah untuk membuka dari dalam Registry Windows sesuai dengan alamat yang kita berikan

Ehost.text  :=Reg.ReadString('HostName'); : adalah perintah untukmembaca string yang tersimpan dalam Registry windows pada alamat yang kita pilih dimana string tersebut bernama HostName , dan hasil pembacaan dari Registry tersebut kita simpan dalam komponen Tedit yang bernama Ehost

Edata.text  :=Reg.ReadString('Database'); : adalah perintah untukmembaca string yang tersimpan dalam Registry windows pada alamat yang kita pilih dimana string tersebut bernama Database , dan hasil pembacaan dari Registry tersebut kita simpan dalam komponen Tedit yang bernama Edata.


Demikian Postingan saya kali ini tentang Cara Membaca Registry Windows Dengan Delphi semoga bermanfaat dan dapat membantu para penggemar dan pencinta Bahasa pemrograman Delphi, Kalau ada kekeliruan mohon dikoreksi.

SALAM DELPHI.

»»  READMORE...