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

WinZip v8.0

Target  : WinZip 8.0
Tools   : SoftIce v4.05

Ok, jalankan WinZip. Nag jelek muncul. Pada About, klik di register. Isikan nama kamu, dan serialnya isikan "lanny" :) JANGAN klik enter dulu, masuk ke SoftIce(CTRL-D), lalu pasang Breakpoint di beberapa API yang umum seperti :

BPX Getdlgitemtexta
BPX getwindowtexta

Sekarang keluar dari SoftIce (CTRL-D), klik enter, kamu dibawa ke SoftIce.

Sekarang kamu ada di kernelnya Win95/98, teken F12(P ret), sekarang kamu masuk kebadan program.
|
:004079F3 FF1518444600 Call GetDlgItemTextA 'Hmm, program pake getdlgitemtexta
:004079F9 57 push edi "kamu mendarat disini
:004079FA E8BDFD0100 call 004277BC
:004079FF 59 pop ecx
:00407A00 57 push edi
:00407A01 E8DFFD0100 call 004277E5
:00407A06 59 pop ecx
:00407A07 BED8964700 mov esi, 004796D8
:00407A0C 6A0B push 0000000B
:00407A0E 56 push esi
:00407A0F 68810C0000 push 00000C81
:00407A14 53 push ebx

Sampai tahap ini program baru membaca, nama kamu, teken F5, lalu F12 lagi, untuk membiarkan program membaca serial kita.

:00407A15 FF1518444600 Call GetDlgItemTextA
:00407A1B 56 push esi
:00407A1C E89BFD0100 call 004277BC
:00407A21 59 pop ecx
:00407A22 56 push esi
:00407A23 E8BDFD0100 call 004277E5
:00407A28 803DA896470000 cmp byte ptr [004796A8], 00 "Apakah sudah dimasukkan nama ?"
:00407A2F 59 pop ecx
:00407A30 744F je 00407A81 "Pergi ! Kalau belum"
:00407A32 803DD896470000 cmp byte ptr [004796D8], 00 "Apakah sudah dimasukkan serial ?"
:00407A39 7446 je 00407A81 "Pergi! jika belum"
:00407A3B E809FBFFFF call 00407549
:00407A40 85C0 test eax, eax
:00407A42 743D je 00407A81
:00407A44 57 push edi
Ok, sekarang kita cara cepet aja, disable breakpoint yang kita pasang sebelumnya, ketikkan "bd *", ini maksudnya Breakpoint Disable All. Sekarang ketik"s 0 l ffffffff "lanny"", Penjelasan, dari kiri ke kanan.
s = "search"
0 = "nol, alias batas awal pencaharian dalam memory"
l = "log, dalam arti tampilkan hasil ke layar"
ffffffff "batas akhir memory 32 bit"
"lanny" = "string yang ingin dicari"
---------------------------------------------------------------------------
Newbie Note :
ffffffff , adalah batas akhir dari memory untuk program 32 bit. Lihat diatas khan ada tulisan ":00407A44 57 Push EDI" , nah 00407A44 ini disebut offset, sedang dalam softIce, 4 angka didepan offset disebut segmen. Baik offset maupun segmen ditulis dalam bahasa Hexa, karena itu nilai terendahnya 0(nol) sedang nilai tertingginya FFFFFFFF.

Perbedaan antara program 16 bit dan 32 bit, dalam memory adalah, bahwa program 16 bit memiliki 2 byte offset, sehingga jika dilakukan pencaharian string akan digunakan sytax : "s 0 l ffff "string yang dicari""
---------------------------------------------------------------------------

Dengan kata lain maksud dari perintah diatas adalah : "Cari diseluruh bagian memory string lanny, ingat ini case sensitif lho!"
Akan keluar sebuah nilai offset, breakpoint pada offset tersebut dengan perintah "BPM ds:offset rw" maksudnya :
BPM = Breakpoint Memory
ds = data segment
rw = read dan write
---------------------------------------------------------------------------
Kamu mungkin bingung dengan ds, begini program khan menyimpan data disuatu daerah dimemory, yang kita sudah tahu offsetnya ? Nah DS, itu adalah data segmen, yakni kode segmen yang berpasangan dengan kode offset, dimana suatu data/nilai disimpan, dan tidak sedang aktive, atau dijalankan, atau diexecute. CS adalah Code Segmen, yakni kebalikan dari DS, nilai segmen, dimana terdapat offset yang akan dijalankan.
---------------------------------------------------------------------------
Jadi maksud dari perintah diatas adalah " Breakpoint pada memory dengan kodesegmen(cs) dan offset(offset) baik ketika daerah memory terebut dibaca(read) maupun ditulis(write).
Pencet F5, program akan dibreak disini :
:00452552 BAFFFEFE7E mov edx, 7EFEFEFF
:00452557 03D0 add edx, eax
:00452559 83F0FF xor eax, FFFFFFFF
:0045255C 33C2 xor eax, edx
:0045255E 83C104 add ecx, 00000004
:00452561 A900010181 test eax, 81010100
:00452566 74E8 je 00452550

Diatas, kemungkinan besar adalah rutin program untuk melakukan "sesuatu" terhadap serial palsu kita, kalau kamu ingin lebih yakin bisa ditrace satu satu.

pencet F5 lagi, sekarang kamu disini :
:004277C9 803E00 cmp byte ptr [esi], 00 "Apakah ada password yang diisi ?"
:004277CC 59 pop ecx
:004277CD 8D4430FF lea eax, dword ptr [eax+esi-01]
:004277D1 740F je 004277E2 "pergi jika password belum diisi"

Aha, program memeriksa lagi apakah kita sudah memasukkan password ? Pencet F5 lagi :
:004277EB 803A20 cmp byte ptr [edx], 20 "Apakah ada spasi, yang kode hexanya 20 dalam password ?"
:004277EE 7517 jne 00427807 "Loncat jika tidak ada"
:004277F0 8BCA mov ecx, edx
Sekarang program memeriksa apakah ada spasi dalam password. pencet F5 lagi :
:00407A32 803DD896470000 cmp byte ptr [004796D8], 00
:00407A39 7446 je 00407A81
:00407A3B E809FBFFFF call 00407549
:00407A40 85C0 test eax, eax
:00407A42 743D je 00407A81
:00407A44 57 push edi
Sekali lagi program memeriksa apakah password kita telah diisi. Pencet F5 lagi :
:00453DD0 8A06 mov al, byte ptr [esi] "ketik d esi, kamu akan melihat password kita, yakni lanny. maksud syntax diatas, adalah isikan al dengan 1 byte dari esi"
:00453DD2 46 inc esi "naikkan pointer esi ke byte berikutnya, jadi pertama esi menunjuk kepada huruf "l" sekarang pada huruf "a", demikian seterusnya "
:00453DD3 8A27 mov ah, byte ptr [edi] "Isiikan ah, dengan "sesuatu" dari EDI"
:00453DD5 47 inc edi "naikkan nilai pointer EDI"
:00453DD6 38C4 cmp ah, al "bandingkan satu byte dari ESI dengan satu byte dari EDI"
:00453DD8 74F2 je 00453DCC "Ok, lu boleh loncat kalau sama, kalau kagak, angkat kaki dah cracker jelek !"
Binggo ! Kita ada dirutin dimana password palsu dan asli dibandingkan, hmmm lihat cmp ah, al. ah mendapat nilainya dari edi , ketik d esi, heheh :) Kita udah lihat password/serial asli ..., ketik BC * , Breakpoint Clear all. Kembali ke program WinZip, isikan password tersebut, dan ...., Gooooddd Buyer ... heheh ...

NB : perintah d, adalah perintah untuk menampilkan ISI dari sebuah variabel ada register. Sedang perintah ? adalah perintah untuk menampilkan nilai dari sebuah variabel/register.

Terus      Kembali
Crack One Software Every Day Make You The Real Cracker