EasyMonitor |
W32Dasm
8.93 |
oleh
CHuPaCaBRa
Pengenalan Program |
EasyMonitor adalah program pertama yang berhasil aku krak dengan sukses. Program ini - IMHO - bagus banget buat para pemula karena Sistem Proteksinya yang sangat sederhana.
Program ini adalah program yang berguna untuk mencatat berapa banyak waktu yang telah kita gunakan untuk ber-Internet, lengkap dengan biaya yang harus kita bayarkan.
Program ini cukup "ramah", karena walaupun dia Shareware, dia ngak akan pernah kadaluarsa. Tapi walaupun begitu tetap ada kekurangannya, setiap 4 kali pemakaian EasyMonitor, kita akan disuguhi sebuah 'nag massage' yang cukup mengganggu. Pada tutorial ini, aku coba menunjukkan bagaimana cara menghilangkan 'nag message' tersebut sehingga tidak akan pernah tampil lagi walaupun kita bukan registered user.
Essay |
Seperti yang udah aku tulis di atas, EasyMonitor akan mengeluarkan 'nag message' yang mengingatkan agar User membeli Software tersebut secara legal. Agar dapat mempermudah dalam proses Kraking berikutnya, sebaiknya kamu menyalin isi pesan tersebut atau menghafalnya, paling tidak beberapa kata pertama. Pada 'Nag Message', kata - kata pertamanya adalah "This dialog is to remind you........."
Setelah itu jalankan W32Dasm kamu en Disassembly EasyMonitor.exe. Setelah beberapa menit ( tergantung kecepatan kompie kamu ), kamu akan meliat listing program EasyMonitor dalam bahasa Assembly. Perhatikan listing tersebut dengan baik. Pada W32Dasm disediakan fasilitas String Data References. String Data ini adalah kumpulan - kumpulan String yang muncul pada saat kamu menjalankan EasyMonitor. Jadi kemungkinan besar String Data tersebut juga memuat pesan - pesan yang muncul pada 'Nag Message'.
Okeh...klik pada icon String Data References pada W32Dasm, sebuah Window baru akan muncul dengan sejumlah String yang cukup banyak. Di sini butuh ketelitian untuk mencari String yang tepat. Berikut adalah potongan String Resource :
String Resource ID=00145: "Impossibile creare l'icona EasyConnect sul
desktop"
String Resource ID=00148: "Kan ikke danne et EasyConnect-ikon på skrivbordet"
String Resource ID=00150: "As it is the first day of a new month, it is time to reset
y"
String Resource ID=00151: "Eftersom det är en ny månad är det dags att nollställa
din a"
String Resource ID=00158: "Eftersom det er første dag i en ny måned, er det tid til
at "
String Resource ID=00160: "Last month's "
String Resource ID=00170: "Would you like to reset the connection time and cost
now?"
String Resource ID=00177: "Gostaria de reiniciar a contagem de tempo e custo
agora?"
String Resource ID=00200: "This dialog is to remind you that
EasyMonitor is shareware. "
String Resource ID=00204: "Dit waarschuwingsvenster verschijnt elke vierde
keer dat Eas"
String Resource ID=00207: "Esta caixa de diálogo serve para lembrar-lhe que o
EasyMonit"
String Resource ID=00210: "This connection: "
String Resource ID=00211: "Denna anslutning: "
String Resource ID=00217: "Esta ligação: "
String Resource ID=00226: " horas"
String Resource ID=00230: " ("
String Resource ID=00236: " ("
Perhatikan String Resource yang aku beri warna biru, ternyata "This
dialog......" tersebut berada pada String Resource ID=00200. Klik 2 kali pada String
Resource itu dan kamu bakal dibawa ke baris - baris Assembly yang berhubungan dengan
String tersebut.
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0045BCD1(C) | :0045BD1C 6844000100 push 00010044 * Possible StringData Ref from Code Obj ->"EasyMonitor" | :0045BD21 68A0C34500 push 0045C3A0 :0045BD26 8D55E4 lea edx, dword ptr [ebp-1C] * Possible Reference to String Resource ID=00200: "This dialog is to remind you that EasyMonitor is shareware." | :0045BD29 B8C8000000 mov eax, 000000C8 ;Kamu di sini :0045BD2E E89165FDFF call 004322C4 :0045BD33 8B45E4 mov eax, dword ptr [ebp-1C] :0045BD36 E89179FAFF call 004036CC :0045BD3B 50 push eax :0045BD3C 8B45FC mov eax, dword ptr [ebp-04] :0045BD3F E8B4C1FBFF call 00417EF8 :0045BD44 50 push eax
Baris - baris perintah di atas adalah baris perintah yang "bertanggung jawab" menampilkan 'Nag Message'. Bagaimana menghilangkannya ??? Untuk menghilangkan sebuah 'Nag Message', kamu harus mencari perintah mana yang "bertanggung jawab" untuk memanggilnya. Bagaimana caranya ???
Perhatikan tulisan :
* Referenced by a (U)nconditional or (C)onditional Jump at
Address:
|:0045BCD1(C)
Ini berarti, perintah - perintah di bawahnya dipanggil atau dijalankan karena sebuah perintah Unconditional atau Conditional Jump pada alamat 0045BCD1. Apa maksud Unconditional dan Conditional Jump itu ??? Unconditional Jump adalah perintah - perintah Jump yang tidak memiliki syarat seperti JMP sementara Conditional Jump adalah sebaliknya, perintah Jump-nya disertai dengan syarat seperti JNE ( Jump If Not Equal ), JE ( Jump If Equal ) dan lain-lainnya.
Kalau begitu, perintah yang bertanggung jawab untuk memanggil 'Nag Message' terletak pada Offset 0045BCD1, untuk itu klik pada icon Goto Code Location dan isikan Offset tersebut. Kamu akan dibawa ke Offset 0045BCD1 :
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0045BCB2(C) | :0045BCB7 C1F802 sar eax, 02 :0045BCBA 8945C0 mov dword ptr [ebp-40], eax :0045BCBD DB45C0 fild dword ptr [ebp-40] :0045BCC0 895DBC mov dword ptr [ebp-44], ebx :0045BCC3 DB45BC fild dword ptr [ebp-44] :0045BCC6 D80D0CC44500 fmul dword ptr [0045C40C] :0045BCCC DED9 fcompp :0045BCCE DFE0 fstsw ax :0045BCD0 9E sahf :0045BCD1 7449 je 0045BD1C ;Kamu di sini
Perintah JE ( Jump If Equal ) di atas itulah yang akan memanggil 'Nag Message'. Perintah tersebut akan dijalankan jika Program telah dijalankan sebanyak 4 kali berturut - turut. Sekarang, agar 'Nag Message' tidak akan pernah dipanggil, kamu bisa dengan mudah mengganti perintah JE itu menjadi NOP ( No Operations ) yang berarti tidak ada Operasi yang akan dijalankan sehingga 'Nag Message' tidak akan pernah dipanggil.
Ini adalah listing perintah baru setelah diadakan perubahan :
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0045BCB2(C) | :0045BCB7 C1F802 sar eax, 02 :0045BCBA 8945C0 mov dword ptr [ebp-40], eax :0045BCBD DB45C0 fild dword ptr [ebp-40] :0045BCC0 895DBC mov dword ptr [ebp-44], ebx :0045BCC3 DB45BC fild dword ptr [ebp-44] :0045BCC6 D80D0CC44500 fmul dword ptr [0045C40C] :0045BCCC DED9 fcompp :0045BCCE DFE0 fstsw ax :0045BCD0 9E sahf :0045BCD1 9090 NOP
K R A K |
Bagaimana merubah JE menjadi NOP ???
Pada listing di atas, kamu bisa melihat kode Hexa untuk perintah - perintah yang bersangkutan. Untuk perintah JE 0045BD1C, pada kolom di kirinya, terdapat kode Hexa 74 49. Ingat baik - baik kode tersebut dan jalankan Hex Editor yang kamu punya dan cari kode Hexa tersebut. Setelah itu ganti dengan kode Hexa 90 90 untuk NOP
9E 74 49 8D 45 E4 50
9E 90 90 8D 45 E4 50
Kode Hexa untuk NOP adalah 90 saja tetapi karena kode Hexa yang ingin kita ganti besarnya lebih dari 1 byte maka kita perlu kode Hexa 90 lagi untuk mengisi kekurangannya. Hal ini juga berlaku untuk kode - kode Hexa lain yang besarnya lebih dari 1 byte, agar tidak terjadi error pada program, kamu harus mengisi kode 90 sesuai dengan besar perintah aslinya.
Catatan |
Sistem Proteksi semacam ini adalah Sistem Proteksi yang sangat sederhana, dan sangat bagus dijadikan latihan buat para Newbie seperti aku ini :-) Cara ini bisa diterapkan untuk menghilangkan 'Nag Message' pada program - program lain walaupun sekarang mulai sedikit programer yang hanya mengandalkan pada 'Nag Message' sebagai sarana untuk mengingatkan User agar membeli Software tersebut.
© Mei1999