Dokumen tersebut membahas dasar-dasar keygenning atau proses pembuatan key generator. Definisi keygen dijelaskan sebagai software kecil yang digunakan untuk menghasilkan serial number dan key yang valid untuk registrasi software lain. Proses pembuatan keygen meliputi analisis target, bedah kode target, menemukan algoritma pemeriksaan serial, menganalisis dan memecahkan algoritma tersebut, kemudian mengodingkan hasilnya menjadi keygen. Metode-metode yang dibahas
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
DASAR KEYGEN
1. DASAR-DASAR KEYGENNING
I.Pengantar
Puji dan Syukur kita panjatkan kepada Allah SWT yang telah memberikan
kesempatan kepada penulis untuk mengerjakan tulisan ini. Pada tulisan ini, penulis
akan membahas tentang Keygenning atau proses membuat keygen.
II.Definisi
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.
III.How To
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. 1.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 run-
time 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.
2.Temukan Algoritma dari serial-checking.
Banyak metode yang umum digunakan untuk menemukan alogaritma serial-
checking, 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.
3.Analisis Algoritma dari serial-checking.
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.
3. 4.Solve it.
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=====
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======
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
================================
4. 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=========
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======
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 :
5. ======Algorithm Keygen=========
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.
1.Code It
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.
I.Penutup
Satu hal yang perlu diingat dalam membuat keygen, bahwa kegiatan ini hanya untuk
pengetahuan semata, dan mengasah otak kita untuk membuat program-program lain
yang lebih berguna. Maju terus REVERSER INDONESIA !!!
Salam,
GrindStone.
6. II.Tentang Penulis
GrindStone
Adalah salah satu “lulusan” Fakultas Kehutanan, Institut
Pertanian Bogor. Mulai mengenal dunia komputer
semenjak “lulus” dan masuk ke dunia reversing 2 tahun
kemudian. Saat ini bekerja sebagai wiraswasta, dan masih
terus memburu ilmu tentang komputer lewat internet
maupun buku-buku yang bertebaran.
Email : gerido_bp@yahoo.co.id