Sabtu, 30 Maret 2013

Cracking

Bagi orang yang hobi mengkoleksi software seperti saya, adakalanya kita menginstal program demo atau shareware yang habis masa pakainya (EULA : End User License Agreement) setelah 30 hari atau 10 kali pemakaian tergantung dari vendor pembuat software. Lalu bagaimana caranya bila kita ingin memakai program tersebut lebih lama atau malah selamanya…?!!
Ada dua cara yaitu dengan membeli lisensi dari pembuat software atau meng-crack alias membobol sendiri proteksi software tersebut (bisa juga dengan mendownload crack, keygen, patch atau serial number hasil cracking dari para cracker dunia di situs-situs tertentu).
Bagi kamu yang ingin belajar menjadi cracker elit yang harus kamu pelajari adalah:
Belajar dan kuasai bahasa pemrograman Assembly, pahami processor arsitektur, memory management, dll.
Kamu harus familiar dengan Windows API (Application Programming Interface) dan system call pada Linux.
Download dan pelajarilah cara menggunakan debugger dan disassembler  serta hex editor seperti : IDA Pro, Ollydbg, Windbg, Immunity Debugger, Win32dasm, Winhex, Hiew, Dumpbin, dll.
Salah satu program cracking yang paling banyak dipakai dan disukai oleh para cracker adalah Ollydbg. Selain gratis, Ollydbg juga di lengkapi dengan banyak plugin yang banyak membantu dalam proses unpacking. Selain itu Ollydbg juga mempunyai GUI atau tampilan yang relatif simple dibandingkan dengan program cracking lainnya.
Setahu saya buku-buku yang membahas tentang cracking software/reverse engineering masih sedikit tapi sudah cukup banyak tutorial yang bisa kamu dapatkan di internet. Berikut adalah beberapa buku bagus yang bisa membantu kamu menjadi software cracker/reverse engineering yang handal antara lain :
  1. The Art of Assembly Language by Randall Hyde
  2. Assembly Language Step by Step: Programming with DOS and Linux by Jeff Duntemann
  3. Disassembling Code: IDA Pro and SoftICE by Vlad Pirogov
  4. Reversing : Secrets of Reverse Engineering by Eldad Eliam
  5. Hacker Disassembling Uncovered by Kris Kaspersky
  6. Hacker Debugging Uncovered by Kris Kaspersky
  7. Fravia’s Pages of Reverse Engineering
*Sebagai tambahan materi downloadlah SDK (Software Develepment Kit) untuk belajar Windows API
Contoh routine sebuah program sederhana
1. Mengecek pemakaian program
aaaa : cmp eax,1e    –> apakah sudah dipakai selama 30 hari (1E = 30)
bbbb : jge dddd        –> lompat ke memori address dddd jika lebih dari atau sama dengan 30 hari
cccc : ax,02
dddd: call yyyy           –> ini untuk memanggil nag screen
eeee: ret                   –> hentikan eksekusi dan keluar
yyyy:                         –> This Program has Expired
zzzz:…
2. Mengecek serial number
100aa : Cmp eax,ebx –> mengecek apakah serial number yang dimasukkan sesuai
100bb : Jz 100xx       –> lompat ke alamat memori 10xxx jika s/n benar
100cc : Mov ax,yyyy
100dd: code…
100xx : code ..           –> successfully registered
100yy : code…
Kamu bisa melatih kemampuan cracking kamu dengan mendownload program kecil di website www.crackme.de
Dalam dunia nyata saat sekarang cracking software tidak semudah ini karena software-software sekarang menggunakan teknik anti debugging juga enkripsi.
Berikut ini saya berikan sebuah contoh mengcrack program sederhana dari seorang cracker yang bernama DeathSpawn sebagai gambaran buat kamu yang ingin tau bagaimana proses mengcrack sebuah program dari para cracker.
Nama program: Abex CrackMe5
Program yang dipakai: Ollydbg
Tingkat Kesulitan : Newbie atau Pemula
Tujuan : Mencari valid serial number
Pertama-tama jalankan program yang akan kita crack :
Crackme
Coba kita masukan sembarang serial number misalnya 12345 :
Crackme2
error
Oo…ternyata serial number yang kita masukan salah dan program menampilkan bad boy (istilah gaul para cracker).
Selanjutnya marilah kita mulai proses debugging dengan menjalankan program Ollydbg. Open file di path kamu menyimpan program yang akan dicrack (Abex CrackMe5) perhatikan gambar berikut :
Scroll kebawah untuk mencari strings atau kalimat yang muncul saat error pop up atau lebih cepatnya dengan mengklik kanan pilih seach for -> All referenced strings :
String
Noname
terlihat dari text strings referenced by abex crackme5 ada dua kode ASCII yang tampak seperti serial number 4562-ABEX dan L2C-5781, coba kita masukkan kode tersebut kedalam program :
Noname2
error
Dan lagi-lagi kode tersebut ternyata bukanlah serial number yang valid.
Tahap selanjutnya kita harus men-trace kode-kode pada CPU section atau lebih cepatnya double klik pada ASCII “Yep, you entered correct serial” yang mengarahkan kita pada kode dan address atau alamat dimana program menyimpan string bila kita memasukkan serial number yang valid.
Cobalah kita lihat pada kode-kode diatasnya untuk mencari tahu kondisi apa yang membuat program memutuskan untuk menampilkan good boy :
Ollydbg
CPU Disasm
Address Hex dump Command Comments
004010FC |. 83F8 00 CMP EAX,0
004010FF |. 74 16 JE SHORT 00401117
00401101 |. 6A 00 PUSH 0 ; /Type = MB_OK|MB_DEFBUTTON1|MB_APPLMODAL
00401103 |. 68 34244000 PUSH OFFSET abexcm5.00402434 ; |Caption = “Error!”
00401108 |. 68 3B244000 PUSH OFFSET abexcm5.0040243B ; |Text = “The serial you entered is not correct!”
0040110D |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hOwner => [ARG.EBP+8]
00401110 |. E8 56000000 CALL <JMP.&USER32.MessageBoxA> ; \USER32.MessageBoxA
00401115 |. EB 16 JMP SHORT 0040112D
00401117 |> 6A 00 PUSH 0 ; /Type = MB_OK|MB_DEFBUTTON1|MB_APPLMODAL
00401119 |. 68 06244000 PUSH OFFSET abexcm5.00402406 ; |Caption = “Well Done!”
0040111E |. 68 11244000 PUSH OFFSET abexcm5.00402411 ; |Text = “Yep, you entered a correct serial!”
00401123 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hOwner => [ARG.EBP+8]
00401126 |. E8 40000000 CALL <JMP.&USER32.MessageBoxA> ; \USER32.MessageBoxA
0040112B |. EB 00 JMP SHORT 0040112D
0040112D |$ 6A 00 PUSH 0 ; /Result = 0
0040112F |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hDialog => [ARG.EBP+8]
00401132 |. E8 22000000 CALL <JMP.&USER32.EndDialog> ; \USER32.EndDialog
00401137 |. C9 LEAVE
00401138 \. C2 1000 RETN 10
Lihat pada dua baris kode pertama :
CPU Disasm
Address Hex dump Command Comments
004010FC |. 83F8 00 CMP EAX,0
004010FF |. 74 16 JE SHORT 00401117
Dari kode diatas terlihat bahwa program akan menampilkan good boy bila EAX bernilai sama dengan serial number yang kita masukkan yang berarti register EAX memegang serial number yang valid. CMP artinya Compare dan JE artinya Jump if Equal.
Setelah mengetahui kondisi ini tempatkan breakpoint (lokasi dimana Ollydbg akan menghentikan jalannya program pada alamat tertentu) yaitu pada address 004010FC dengan menekan tombol F2 atau double klik. Kemudian jalankan program dengan menekan tombol F9, pada ASCII section sebelah kiri bawah terlihat bahwa serial number yang valid muncul coba kita masukkan serial number ini apakah berhasil atau tidak :
Ascii
sukses
Welldone
Yap…ternyata serial number yang kita masukkan benar, cukup mudah kalau kamu perhatikan baik-baik.
Cara tersebut merupakan cara yg sangat sederhana yg disebut serial fishing (istilah cracker untuk mencari serial number).
Pada saat ini sistem proteksi software sudah sangat meningkat karena adanya teknik Code Obfuscation (cara untuk mempersulit membaca kode program) seperti packing atau compress dan/atau enkripsi seperti yang banyak dilakukan oleh program jahat seperti virus, trojan, worm, rootkit, dsb untuk mempersulit vendor Antivirus untuk melakukan Static Analysis (analisis kode program).
Cracker dapat mengetahui apakah sebuah program menggunakan packer atau tidak dengan cara menggunakan program PE Scanner seperti PEid, StudPE, AT4RE FastScanner, RDG Packer Detector, ProtectionID, dll. Program yang saya contohkan diatas tidak menggunakan packer atau crypter karena memang saya tujukan untuk para pemula dan karena saya sendiri juga masih pemula didunia cracking.
Categories:

0 komentar:

Posting Komentar