Target :
CrackMe! v1.0
Tools : W32DAsm v89, Hex editorI. Eazy Patching Pertama, langsung aja jalankan CrackMe, click Help->Register lalu masukkan input nama dan Serial. Trus selanjutnya ya click aja tuch tombol OK. Boom! Sebuah kotak jelek tampil dengan pesan "No luck there, mate!". Ingat pesan ini. Langkah kedua, buka W32DAsm dan disassembly CrackMe. Setelah selesai prosesnya, cari pesan tadi dengan Search->Find Text atau Refs->String Data References. Karena program menampilkan pesan yang sama dengan 2 instruksi yang berbeda, maka kita mo cari pesan yang barusan kita liat, ingat, kan "No luck there, mate!" dan disertai dengan bunyi bel (ini perbedaannya). Lebih jelasnya lihat di bawah ini * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0040138B(C) <- alamat ini jump bersyarat | :004013AC 5E pop esi :004013AD 6A30 push 00000030 * Possible StringData Ref from Data Obj ->"No luck!" | :004013AF 6860214000 push 00402160 * Possible StringData Ref from Data Obj ->"No luck there, mate!" <- Pesan jelek | :004013B4 6869214000 push 00402169 :004013B9 FF7508 push [ebp+08] * Reference To: USER32.MessageBoxA, Ord:0000h | :004013BC E879000000 Call 0040143A <- Tampilkan pesan Eit, ini bukan yang kita cari. Disini program memanggil pesan yang sama tapi tanpa bunyi bel. Dan yang ini baru yang kita cari: * Referenced by a CALL at Address:|:00401245 <- Ingat alamat ini | :00401362 6A00 push 00000000 * Reference To: USER32.MessageBeep, Ord:0000h <- Bunyi bel | :00401364 E8AD000000 Call 00401416 :00401369 6A30 push 00000030 * Possible StringData Ref from Data Obj ->"No luck!" | :0040136B 6860214000 push 00402160 * Possible StringData Ref from Data Obj ->"No luck there, mate!" <- Pesan jelek | :00401370 6869214000 push 00402169 :00401375 FF7508 push [ebp+08] * Reference To: USER32.MessageBoxA, Ord:0000h | :00401378 E8BD000000 Call 0040143A <- Tampilkan pesan :0040137D C3 ret <- Kembali Saya rasa udah jelas dech, nah sekarang kita lihat dari mana dia manggil instruksi ini. Kita lihat data paling atas, yaitu "Referenced by a call.." dengan alamat 00401245. teken Shift+F12 (goto code location) trus masukkan alamat tadi (00401245) trus click OK. Tampilan kurang lebih seperti ini: * Reference To: USER32.DialogBoxParamA, Ord:0000h | :0040121E E87D020000 Call 004014A0 :00401223 83F800 cmp eax, 00000000 :00401226 74BE je 004011E6 :00401228 688E214000 push 0040218E :0040122D E84C010000 call 0040137E <- Menarik... :00401232 50 push eax :00401233 687E214000 push 0040217E :00401238 E89B010000 call 004013D8 <- Yang ini juga... hehehe :0040123D 83C404 add esp, 00000004 :00401240 58 pop eax :00401241 3BC3 cmp eax, ebx <- Bandingkan antara serial kamu dengan asli :00401243 7407 je 0040124C <- Lompat kalo serial benar :) :00401245 E818010000 call 00401362 <- Nah ini dia callnya :0040124A EB9A jmp 004011E6 Disini kita bisa mulai mempatching program ini. Lihat alamat 401241: :00401243 7407 je 0040124C <- Lompat kalo serial benar :) disana kita lihat Hex 7407 (je adalah 74). Jadi yang kita ganti adalah je(74) menjadi jne(75). Highlight ke alamar 401243 dan liat pada status bar, disitu kita liat Offset 843h. Backup CrackMe dan buka Hex Editor kesayangan kamu (saya gunakan UltraEdit 7.0b). Cari offset 843h dan ganti 74 menjadi 75 lalu save/update. Jalankan lagi CrackMe dan masukkan lagi user dan serial anda. Boom! "Great work, mate!". Yes! Kita berhasil! Nah, seperti yang anda lihat, patching lumayan gampang, khan? Eit, ingat nggak waktu kita cari pesan yang keluar, ada dua khan, nah sekarang kita lihat yang satu lagi. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040138B(C) <- alamat ini jump bersyarat Sekarang lihat 40138B
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401392(U), :0040139A(U)
| :00401383 8A06 mov al, byte ptr [esi] <- Masukkan character nama ke al
:00401385 84C0 test al, al <- apakah al kosong
:00401387 7413 je 0040139C <- lompat kalo ya
:00401389 3C41 cmp al, 41 <- bandingkan al dengan 41h (A) Hah?!
:0040138B 721F jb 004013AC <- lompat kalo kurang dari 41h
:0040138D 3C5A cmp al, 5A
:0040138F 7303 jnb 00401394 <-- lompat lebih dari 5Ah (Z)
:00401391 46 inc esi
:00401392 EBEF jmp 00401383
Nah, lihat ke 401389, disana ada perbandingan antara 41h dengan al. Kalo al kurang dari 41h, dalam hal ini, nomer (30h-39h), lompat ke pesan jelek. Jadi kesimpulannya, di dalam nama tidak boleh mengandung nomer. Sekarang coba masukkan nama pake nomer, pasti keluar dech pesan jeleknya!
|