Tulisan Dasar Cracking
Selamat Datang................. Cracker..........
Tutorial Cracking :

DLL Demon v1.0

Target  : DLL Demon v1.0
Tool     : SoftIce v4.05, W32Dasm v8.93, Hex Workshop v4.10

Pertama, jalankan DLL Demon dalam keadaan normal dan catat hal-hal yang dianggap penting. Maka DLL Demon akan menampilkan sebuah Message Box bertuliskan "Invalid" setiap S/N yang dimasukan tidak tepat, pesan inilah yang dirubah.

Kemudian langkah berikutnya adalah men-disassembly DLL Demon. Gunakan W32Dasm 8.93 untuk mengkonveersikan file DLLDemon.exe menjadi listing assembly. Kemudian carilah string "Invalid" dalam listing itu dengan menggunakan fasilitas String Data References yang tersedia di WDasm. Klik dua kali pada tulisan "String" di dalam kotak String Data References, maka Anda akan dibawa menuju perintah - perintah yang berhubungan dengan string tersebut :

:00461AF6 E839EBFBFF call 00420634
:00461AFB 8B45F4 mov eax, dword ptr [ebp-0C]
:00461AFE 8D4DF8 lea ecx, dword ptr [ebp-08]
:00461B01 33D2 xor edx, edx
:00461B03 E8C45B0000 call 004676CC
:00461B08 8B55F8 mov edx, dword ptr [ebp-08]
:00461B0B 58 pop eax
:00461B0C E87F21FAFF call 00403C90 ;Pengecekan S/N
:00461B11 7424 je 00461B37 ;Lompat jika S/N cocok
:00461B13 6A10 push 00000010

* Possible StringData Ref from Code Obj ->"Error"

:00461B15 B9A41B4600 mov ecx, 00461BA4

* Possible StringData Ref from Code Obj ->"Invalid"

:00461B1A BAAC1B4600 mov edx, 00461BAC ;Anda ada di sini
:00461B1F A100B04600 mov eax, dword ptr [0046B000]
:00461B24 8B00 mov eax, dword ptr [eax]
:00461B26 E821E8FCFF call 0043034C
:00461B2B C7835001000002000000 mov dword ptr [ebx+00000150], 00000002
:00461B35 EB0F jmp 00461B46

Perhatikan listing assembly di atas, pada Offset 00461B1A - 00461B35 adalah perintah - perintah yang akan menghasilkan Message box bertulisakn "Invalid". Telusuri perintah - perintah di atasnya, seharusnya rutin pengecekan serial numbernya tidak terlalu jauh dari Offset tersebut.

Pada Offset :00461B11 ada sebuah Conditional Jump yang mencurugakan. Kenapa mencurigakan ? Karena perintah tersebut akan merubah alur program tersebut sehingga apa yang akan ditampilkan ke layar monitor bisa berbeda, MessageBox bertuliskan Invalid ataukah sebuah MessageBox yang berisi pesan - pesan "Thank you........". Tapi mucul pertanyaan lain, bagaimana proteksi ini bisa menentukan MessageBox mana yang akan ditampilkan ?

Perintah JE ( Jump If Equal ) ini akan dijalankan apabila Call di atasnya memberi isyarat bahwa S/N yang dimasukan adalah S/N yang tepat. Terlihat jelas apa yang harus dilakukan, dengan mengganti JE menjadi JNE, mungkin masalah tersebut akan selesai.

Ada beberapa cara untuk merubah JE menjadi JNE, untuk cara nomor dua dan tiga, Anda harus terlebih dulu berada di dalam lingkungan SoftICE. Sebelum menekan tombol "Register Me", tekan CTRL-D dan pasang Breakpoint pada Hmemcpy ( BPX Hmemcpy ), lalu CTRL-D lagi untuk kembali ke Windows. Setelah menekan tombol "Register Me", Anda akan masuk ke dalam SoftICE, tekan F12 sebanyak 7 kali setelah itu bersihkan Breakpoint dengan perintah BC *. Kemudian ketik G 0461B11 untuk langsung menuju lokasi yang dimaksud, setelah itu jalankan cara nomor dua atau tiga.

Cara untuk merubah JE menjadi JNE ( pilih salah satu ) :

Dengan Hex Editor :

Rubahlah dari 7424 menjadi 7524.

Catatan :

74xx = JE ( Jump If Equal )
75xx = JNE ( Jump If Not Equal )

Dengan SoftICE, ada 2 cara :

1. Gunakan perintah A 0461B11.
:0461B11 JNZ 00461B37
:0461B13 ;Tekan enter

2. Gunakan perintah R EIP=00461B37

Catatan : Perintah R adalah perintah untuk merubah nilai register, sementara perintah R EIP=00461B37 dimaksudkan untuk memaksa Instruction Pointer mengarah ke 00461B37, sehingga perintah yang akan dikerjakan selanjutnya adalah perintah yang berada di lokasi 00461B37.

Tapi ternyata tidak semudah itu, pesan "Invalid" memang tidak tampak lagi, akan tetapi masih saja belum teregister. Ini disebabkan karena nama dan S/N palsu tadi tidak dimasukan ke dalam System Registry, sehingga pada saat DLL Demon mengecek System Registry, tidak menemukannya, dan akan tetap dianggap sebagai Unregistered User.

Sebaiknya gunakan pendekatan lain, untuk itu kembali ke WDasm. Coba telusuri perintah-perintah sebelum Call 00403C90 dipanggil, perhatikan Offset :00461B08. Berapa nilai yang dimasukan ke dalam EDX ? Untuk mengetahui jawabannya gunakan SoftICE.

Gunakan cara seperti diatas untuk masuk ke dalam SoftICE dan memasang BPX Hmemcpy. Setelah terperangkap kembali di dalam SoftICE dan menekan F12 sebanyak 7 kali, lompat ke Offset 00461B08 dengan perintah G 00461B08. Setelah berhenti tepat pada posisi 00461B08, tekan F10 satu kali, setelah melewati baris perintah tersebut, periksa nilai EDX sekarang dengan perintah D EDX. Ternyata EDX berisi S/N yang sesungguhnya, mudah sekali mendapatkan S/N aslinya.

Bila Anda mau, Anda bisa langsung menggunakan S/N tersebut, tapi itu bukan tujuannya, tapi meminta DLL Demon untuk menampilkan S/N asli tersebut sebagai pengganti pesan "Invalid" yang muncul apabila memasukan S/N yang salah.

Sekarang Anda tahu dimana S/N asli di simpan di dalam memory, DLL Demon menyimpan S/N tersebut pada alamat memori yang ditunjuk oleh [EBP-08], sementara itu pada perintah di bawahnya POP EAX, program akan mengambil S/N palsu yang dimasukan tadi dari dalam stack. Lanjutkan kembali, tekan F10 sampai mencapai lokasi :00461B11, tempat penentuan pilihan antara Registered atau Unregistered User.

Karena S/N yang dimasukan tadi salah, tentunya tidak akan melompat ke 00461B37, tapi terus ke baris berikutnya. Dalam WDasm, lokasi :00461B15 adalah tempat untuk memasukan string "Error". Bila ingin tahu apa yang terjadi dalam SoftICE, ketik D ECX, dan ternyata ECX berisi string "Error". Pada baris berikutnya, dengan cara yang sama, kita bisa melihat bahwa EDX berisi string "Invalid" .

Sampai di sini sebaiknya Anda berhenti sebentar , dan perhatikan apa yang telah diketahui sebelumnya, lalu coba susun langkah selanjutnya :

:00461B08 mov edx, dword ptr [ebp-08] ;S/N asli
:00461B0B pop eax ;S/N palsu yang dimasukan
:00461B0C call 00403C90 ;Rutin pembandingan S/N
:00461B11 je 00461B37 ;Lompat jika S/N cocok
:00461B13 push 00000010
:00461B15 mov ecx, 00461BA4 ;menyimpan string "Error"
:00461B1A mov edx, 00461BAC ;menyimpan string "Invalid"

Perintah - perintah selanjutnya akan menampilkan MessageBox dengan string yang ada di dalam EDX atau ECX, sementara Anda tidak ingin "Invalid" atau "Error" yang muncul, tapi ingin melihat S/N asli tadi sebagai gantinya. Untuk itu perlu mengganti pesan "Invalid" yang diisikan ke dalam EDX dengan alamat memori tempat S/N asli berada.

SoftICE memberikan fasilitas untuk merubah perintah assembly yang sedang ditelusuri, yaitu dengan perintah A :

Ketik A 00461B1A, lalu masukan perintah- erintah baru seperti di bawah ini :
:00461B1A MOV EDX,[EBP-08]
:00461B1D NOP
:00461B1E NOP
:00461B1F tekan Enter untuk menghentikan perintah A

Catatan : Perintah A ini tidak merubah file secara permanen, karena itu, apabila terjadi kesalahan, Anda hanya perlu me-restart program tersebut dan semuanya kembali ke keadaan semula.

Seperti yang terlihat, setelah memasukan S/N asli ke dalam EDX agar ditampilkan di dalam Messagebox yang akan keluar. Dua perintah NOP berikutnya adalah perintah tambahan agar tidak terjadi kesalahan. Ini perlu dilakukan karena adanya perbedaan ukuran antara perintah sebelumnya dengan perintah yang baru saja dimasukan. Perhatikan perbedaan kedua perintah tersebut :

:00461B1A BAAC1B4600 mov edx, 00461BAC
dengan
:00461B1A 8B55F8 mov EDX,[EBP-08]

Perhatikan bahasa mesin di atas ( kode hexa ), perintah pertama membutuhkan 5 byte (BAAC1B4600) sedangkan perintah baru yang diisikan hanya sebesar 3 byte (8B55F8). Dalam merubah (patching) suatu program, perintah asli dan perintah baru harus memiliki ukuran yang sama, hal ini untuk menghindari error pada saat menjalankan program tersebut . Oleh karena itu kita harus menambah 2 byte tambahan yaitu NOP (90) sebanyak 2 kali sehingga sekarang perintah baru tersebut juga berukuran 5 byte (8B55F89090).

Catatan : NOP ( No Operation ) adalah perintah Assembler dengan kode hexa 90h. Besarnya perintah ini adalah 1 byte dan tidak melakukan operasi apa - apa. Ini sangat tepat untuk ditambahkan ke dalam perintah baru yang tidak sesuai ukurannya.

Tekan Ctrl-D kembali dan lihat hasilnya. Pada MessageBox yang keluar, pesan "Invalid" sudah tidak terlihat lagi, sebagai gantinya, S/N asli ditampilkan. Gunakan nama dan S/N yang muncul tersebut dan kita akan dianggap sebagai Registered User

Untuk mem-patch program tersebut, edit DLLDemon.EXE dengan Hex Editor yang Anda punya dan cari :

BAAC1B4600.

00060F1A BA AC 1B 46 00 A1 00 B0 46 00 8B 00 E8 21

Rubah dengan :

00060F1A 8B 55 F8 90 90 A1 00 B0 46 00 8B 00 E8 21

Inilah Cara Melacak Serial Number

Metode ini cukup mudah untuk dilaksanakan tetapi sayangnya tidak semua sistem proteksi sejenis, dapat crack dengan cara ini. Sebelum Anda merubah perintah dalam program target, Anda harus terlebih dulu yakin kalau S/N asli tadi masih ada pada lokasi memori yang sama. Karena jika serial number tersebut telah hilang dari memory, Anda tidak akan bisa menampilkan-nya.

Ikuti langkah di bawah ini, tapi ingat setiap komputer mungkin akan mempunyai nilai yang berbeda.

:00461B08 mov edx, dword ptr [ebp-08]

Setelah mencapai lokasi di atas, ketik D [EBP-08], dan inilah hasilnya :

0030:006EF994 A4 B6 83 00 E4 BB 83 00 - 9C 67 83 00 67 10 42 00 .........g..g.B.

Maksud dari [EBP-08] adalah untuk mengarahkan pointer pada alamat yang ditunjuk oleh EBP-08, karena itu Anda harus menuju ke alamat yang ada di dalam EBP-08, dalam contoh ini adalah 0083B6A4 ( posisinya harus dibalik ).

Ketik D 0083B6A4, dan hasilnya adalah :

0030:0083B6A4 44 53 37 31 2D 31 33 39 - 34 2D 33 34 00 00 00 00 DS72-8422-210....

Yang berada di kolom paling kanan adalah S/N asli. Setelah sampai pada lokasi 00461B1F, cek kembali isi dari [EBP-08] dengan cara yang sama. Apabila S/N tersebut masih ada berarti Anda bisa menggunakan metode ini, tapi jika S/N tersebut sudah tidak ada lagi atau sudah berubah maka metode ini tidak dapat dilaksanakan.

WebMaster
Terus      Kembali
Komentar dan Mailing List
Crack One Software Every Day Make You The Real Cracker