Membuat Key Generator untuk aplikasi PDF Password Remover v3.0

Posted in Labels:

   
  Tentang software:
PDF Password Remover dapat digunakan untuk membongkar file PDF yang terproteksi, seperti pembatasan pencetakan, pelarangan pengcopyan ke clipboard, dan sebagainya, tool ini juga dapat membongkar enkripsi adobe reader 7.x, 128-bit.

  Info: http://www.verypdf.com/ 
  Harga: $29,99 
  OS: Win 98/ME/2000/XP/Vista
  Proteksi: 
  Software ini diproteksi dengan:
  [-] Masa coba selama 50x pemakaian
  [-] Kotak dialog Trial akan muncul setiap pendecrypan file PDF
  [-] Terdapat dialog Trial pada file PDF yang sudah di decrypt
  [-] File Terproteksi dengan UPX

  Langkah Cracking:
 Untuk mengbuat keygen sebelumnya sediakan tools dibawah ini:
 [-] OllyDbg & OllyDump Plugin dapat dicari di bang google
 [-] Import Reconstruction by uCF dapat dicari di bang google
 [-] Kemampuan sedikit tentang Pemrograman C(untuk Keygen),Assembly (Disassembly)

  Langkah Pertama: (Manual Unpacking UPX)

Karena file target terproteksi oleh UPX maka kita tidak bisa langsung menganalisa code assemblynya, yang dilakukan sekarang adalah bagaimana mengunpack packer UPX, didalam Tutorial ini saya mencoba untuk mengunpacknya secara manual menggunakan OllyDbg, walaupan bisa juga mengunpacknya dengan menggunakan applikasi upx dengan parameter “-d [namafilenya]”, oke sekarang kita langsung saja buka ollydbgnya dan open file Targetnya dan akan terlihat sebagai berikut:
 
Bisa terlihat diatas terdapat instruksi PUSHAD, fungsi tersebut digunakan untuk mem-push seluruh register kedalam stack, fungsi tersebut biasanya terdapat pada awal program, atau entry point. Biasanya digunakan oleh packer seperti aspack, upx, dll. Karena kita mengunpacknya secara manual kita harus tau instruksi instruksi diatas digunakan untuk apa, dalam setiap kali instruksi PUSHAD dipanggil maka stack akan terisi penuh oleh register kita, untuk mengembalikan stack pada kondisi semula maka program pasti akan memanggil fungsi POPAD yang digunakan untuk mem POP semua data yang ada pada stack, untuk mencari instruksi POPAD kita tidak perlu menelusuri seluruh code program, yang kita lakukan ialah memberikan breakpoint pada data di register ESP, sebelumnya tekan F7 untuk memanggil fungsi PUSHADnya, bisa dilihat pada gambar berikut:


Setelah kita menekan   F7, klik kanan pada register ESP dan pilih ‘Follow in Dump’, setelah itu pasang Hardware breakpoint pada 4bytes pertama, dapat dilihat seperti gambar diatas. Setelah itu tekan F9 untuk menjalankan program, dan Ouch… kita berada pada code berikut:

 
Kita sekarang berada pada instruksi setelah instruksi POPAD di jalankan, dan lihat pada akhir gambar diatas terdapat instruksi jmp 46564D, instruksi ini akan menuju pada original entry point atau (OEP), ga percaya coba aja pasang toggle breakpoint pada instruksi jmp 46564D, dan jalankan program dengan menekan F9, setelah itu klik F7(atau step into), tapi sebelumnya hapus hardware breakpoint yang kita telah pasang, dengan memilih Menu Debug-> Hardware Breakpoint.

 Setelah kita berada pada OEP, selanjutnya kita lakukan proses dumping, proses dumping digunakan untuk mendump suatu program dari memory ke hardisk. Dengan mengklik kanan pada jendela CPU dan kemudian pilih Dump debugged process maka akan muncul window baru seperti berikut:

 
Yang pertama dilakukan ialah copy alamat OEP = 6564D, kemudian uncheck Rebuild Import dan yang yang ketiga klik Dump, simpan dengan nama Dumped.exe. setelah proses dumping selesai selanjutnya gunakan tool ‘Import Reconstructor’ untuk memperbaiki import file dumpingnnya.


 
Yang pertama dilakukan ialah memilih aplikasi, target kita ialah windecrypt, setelah itu paste kan alamat OEP yang tadi kita kopy pada OEP di textbox kemudian klik IAT AutoSearch, setelah itu  klik  Get  Imports,  dan  yang  terakhir  klik  Fix  Dump  pilih  file  Dumped.exe  dan  akan menghasilkan file yang bernama Dumped_.exe file inilah yang bisa running. Setelah melalui proses yang panjang walaupun sebenarnya hanya beberapa menit akhirnya kita finish pada tahapan pertama.

Langkah Kedua: (Pembuatan Key Generator)

 

Buka file target dengan nama Dumped_.exe dengan OllyDbg setelah itu pasang breakpoint pada alamat 404C00, dapat dilihat seperti gambar berikut:

 Setelah  memasang  breakpointsekarang  kita  lanjutkan  dengan  menjalankan  programnya tekan F9 sampai tampil form Registration.

 
Isikan 20 digit sembarang angka, mengapa 20 digit, karena programnya mintanya segitu, lihat aja kode program diatas yang dilingkari tanda merah. CMP ECX,14. ECX adalah panjang key, jika panjang key tidak sama dengan14 Hexa / 20 desimal maka keynya salah. Setelah kita berhasil melalui rintangan pertama selanjutnya kita akan berada pada alamat dibawah ini:

 
[ESI] Berisi digit awal key kita, [ESI+1] berisi digit kedua Key kita, instruksi CALL 4655F0 digunakan untuk merubah Type data string menjadi bentuk integer, setelah digit pertama dan kedua dari key kita dirubah menjadi integer, kemudian dijumlahkan jika hasil dari penjumlahan tersebut tidak sama dengan 0A heksa / 10 desimal maka key salah, lihatlah instruksi yang dilingkari diatas, jika benar maka kita akan berada pada alamat 404c62:

 
[ESI+12] berisi digit ke 19, [ESI+13] berisi digit ke 20, sama seperti diatas instruksi Call 4655f0 digunakan untuk converse string ke integer, jika hasil dari penjumlahan digit 19 dan 20 sama dengan 12 maka key benar, dan kita akan berada di alamat berikut:
 
[ESI+5] berisi digit ke 6, [ESI+D] berisi digit ke 14, dan jiga kedua digit tersebut dijumlahkan harus sama dengan 11 desimal lihat kode diatas. Jika benar maka kita akan berada pada address berikut:
 
[ESI+C] berisi digit ke 13 key, jika digit ke 13 sama dengan 52 hexa atau karakter R tanpa kutip paka kita akan berada pada alamat berikut:
 
[ESI+E] berisi digit ke 15 key, jika digit tersebut sama dengan 33 hexa atau karakter ‘3’ tanpa kutip maka kita akan berada pada alamat berikut:
 
[ESI+F] berisi digit ke 16 key, jika digit tersebut sama dengan 30 hexa atau karakter 0 tanpa kutip maka kita telah berhasil melalui seluruh rintangan dan registrasi program t’lah usai. ^_^

  Hasil serialnya adalah: 
553456789012R5307893


Kesimpulan:

Dengan menganalisa suatu kode program kita dapat mengetahui algoritma apa yang digunakan pada program untuk mengecek serial number, dengan mengetahui jumlah dari digit 1 dan 2, 6 dan 14, 19 dan 20, kita dapat mengkombinasikan angka angka supaya hasil kombinasi tersebut sesuai dengan jumlah yang program inginkan, sebagai contoh digit 1 dan 2 diisi dengan angka berapa saja yang penting hasil penjumlahan dari kedua digit tersebut bernilai 10, digit 6 dan 14 diisi angka berapa saja yang penting hasil penjumlahan dari kedua digit tersebut bernilai 11, dan digit 19 dan 20 diisi dengan angka berapa saja yang penting hasil penjumlahan dari kedua digit tersebut bernilai 12.
Semakin mahal harga suatu program semestinya semakin sulit pula proteksi yang di tanamkan pada program tersebut tidak hanya di packer, melainkan di beri suatu enkripsi, Anti Debug, Virtual Machine, dlll.