DASAR MEMBUAT KEYGEN


Sebelum kita memulai langkah dari keygening sebaiknya kita tau dulu apa itu keygen.
Keygen (singkatan dari : Key Generator) merupakan software kecil yang dibuat dengan tujuan meng-generate key atau serial-number yang dapat digunakan untuk registrasi software lain. Sedangkan Keygenning adalah  proses membuat keygen tersebut. 

Langsung Ke-langkahnya:

1.Analisa target 
Info-info yang umumnya perlu kita ketahui tentang target-software sebelum keygenning adalah :
-Cara target melalukan registrasi, apa yang terjadi jika key/serial yang user
masukkan salah, atau format dari key yang valid.
-Compiler, Packer dan Protector. Tool yang umum dipakai untuk melakukan
tugas ini adalah PEiD, RDG Packer Detector, dll.

2.Bedah target  
Bedah target menggunakan Disassembler atau Debugger. Disassembler dan Debugger membedah target dengan menampilkan listing code menggunakan bahasa Assembly. Contoh dari Disassembler yang umum digunakan  adalah Win32Dasm, sedangkan contoh Debugger adalah OllyDbg dan IDA (Interactive Disassembler). Kita bisa melihat bagaimana code-flow berjalan pada saat runtime bila kita menggunakan Debugger, sedangkan Disassembler hanya menampilkan listing code dari target, inilah kelebihan Debugger. Tapi, beberapa software dapat mendeteksi adanya Debugger, lalu mencoba menutup Debugger atau memberikan false-code (umum  disebut anti-Debug technique), sedangkan tak ada software yang dapat mendeteksi Disassembler, itulah  kelebihan Disassembler. 

3.Temukan Aloritma Dari Serial cheking  
Banyak metode yang umum digunakan untuk menemukan alogaritma serialchecking, salah satunya adalah dengan mencari String-Reference. Metode ini mencari string yang digunakan target saat menampilkan MessageBox yang muncul saat kita memasukkan serial yang salah. Contoh stringnya antara lain : “Serial yang anda masukkan salah”, “The Key is invalid”, dan sejenisnya. 

 4.Analisis Aloritma Dari Serial cheking  
 Analisis dan pelajari baik-baik algoritma dari serial-checking ini. Kata kunci dari kegiatan ini adalah “Think what a programmer think”. Dan jika memungkinkan, tulis ulang algo tersebut dalam bahasa pemogramman yang kita kuasai, dan test apakah algo yang kita buat serupa (tidak harus sama persis) dengan algo target.
Jika kita sudah mengerti bagaimana algoritma mengalir, kita dapat menentukan langkah kita selanjutnya.

 5.Pecahkan Masalah 
Dari hasil analisis, tentukan langkah selanjutnya :
-Duplikasi algorithma ke dalam keygen kita.
Hal ini dilakukan bila algo bersifat langsung atau straight-forward
menggenerate serial dari nama yang kita masukkan. Contoh simpel (dalam
Delphi):

=====Algorithma Serial-Checking=====
Code:
x1 := Ord(name[1]) + Ord(name[2]) + Ord(name[3]); // name adalah username yang diinput oleh user
s1 := IntToHex(x1,8);
If serial = s1 then ShowMessage(‘Success’) else ShowMessage(‘Failed’) // serial adalah serial
yang diinput oleh user
==============================

Disini kita bisa liat bahwa serial digenerate langsung dari nama, jadi yang
perlu kita lakukan adalah menduplikasikan code ke dalam code keygen kita.

-Reverse algorithma serial-checking
Hal ini dilakukan bila algo mengkalkulasi serial dan lalu membandingkan
hasilnya dengan nama yang diinput. Contoh simpel (dalam Delphi) :

======Algorithma Serial-Checking======
Code:
x1 := StrToInt(serial); // rubah serial ke dalam format Integer
x1 := x1 + 5;
x2 := Ord(name[1]) + Ord(name[2]) + Ord(name[3]); // ambil nilai x2 dari name
if x1 = x2 then ShowMessage(‘Success’) else ShowMessage(‘Failed’) // dibandingkan
================================

Di sini kita lihat bahwa serial yang dikalkulasi bukannya nama, maka kita
harus mereverse fungsi untuk mendapatkan serial. Code keygen-nya seperti
ini :

======Algorithm Keygen=========
Code:
x2 := Ord(name[1]) + Ord(name[2]) + Ord(name[3]);
x1 := x2;
x1 := x1 – 5; // Lawan dari ‘+’ operator adalah ‘-‘
serial := IntToSerial(x1); // rubah serial ke dalam format String
=========================================

-Bruteforcing
Metode ini dilakukan bila algoritma serial-cheking tidak bisa direverse. Hal
ini umumnya terjadi bila terdapat operator yang tidak bisa direverse seperti :
“Or”, “And”, dll. Atau terdapat dua variable atau lebih yang tidak diketahui
dalam satu perhitungan. Ide dari bruteforcing adalah mencoba semua
kemungkinan serial (bisa secara random atau sistematis) ke dalam algorithma
hingga kondisi yang diinginkan terpenuhi. Contoh simple (dalam Delphi) :

======Algorithma Serial-Checking======
Code:
x1 := StrToInt(serial); // rubah serial ke dalam format Integer
x1 := x1 Or 5;
x2 := Ord(name[1]) + Ord(name[2]) + Ord(name[3]); // ambil nilai x2 dari name
if x1 = x2 then ShowMessage(‘Success’) else ShowMessage(‘Failed’) // dibandingkan
================================

Di atas kita lihat bahwa, algorithm tidak dapat di reverse, karena terdapat
operator “Or” yang tidak memiliki operator “lawan”. Jadi, satu-satunya cara
adalah dengan bruteforcing, seperti ini :

======Algorithm Keygen=========
Code:
counter := 0;
x2 := Ord(name[1]) + Ord(name[2]) + Ord(name[3]);
Repeat
x1 := counter;
x1 := x1 Or 5;
While x1 <> x2 // loop terus dilanjutkan selama x1 belom sama dengan x2
serial := StrToInt(x1);
=========================================

Dari code ini kita bisa lihat, bahwa bruteforcing membutuhkan resource
computer yang cukup banyak apabila berhadapan dengan algo yang cukup
panjang, jadi jadikan bruteforcer pilihan terakhir dan bila jalan lain sudah
tertutup. 

6.Mulai Coding
Langkah terakhir adalah coding dengan bahasa pemograman yang kita kuasai. Dan bila key yang dihasilkan dari keygen kita belum valid, maka debug keygen kita perlahan-lahan bersama dengan target sehingga kita dapat melihat kesalahan keygen kita.

Kira-kira seperti itu, Selamat mencoba semoga bermanfaat. (padlieoi.blogspot.com)