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

WPlay v1.7

Target  : WPlay v1.7
Tool     : SoftIce v4.05, W32dasm v8.93, Hex Workshop v4.10

Protection : menggunakan fungsi introhex, fungsi yang jarang digunakan untuk protection !!!

Yeah, tanpa basa basi ..., langsung jalankan WPlay 1.7 di awal program dia akan meminta key code ..., ketikkan sembarang, dan lihat di WDasm untuk kode kesalahannya :

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B893(C)
|
:0043B8AC 6A00 push 00000000
:0043B8AE 668B0D00B94300 mov cx, word ptr [0043B900]
:0043B8B5 B201 mov dl, 01

* Possible StringData Ref from Code Obj ->"The Key is not correct. Please "
->"register WPlay and receive your "
->"own personal code."
|
:0043B8B7 B83CB94300 mov eax, 0043B93C
:0043B8BC E8BB40FFFF call 0042F97C

Sperti biasa, lihat di 0043B893

:0043B880 55 push ebp
:0043B881 68F2B84300 push 0043B8F2
:0043B886 64FF30 push dword ptr fs:[eax]
:0043B889 648920 mov dword ptr fs:[eax], esp
:0043B88C E807FDFFFF call 0043B598 --->>> fungsi pengecek key, jika invalid al=0 , jika valid al=1
:0043B891 84C0 test al, al --->>> test nilai al
:0043B893 7417 je 0043B8AC --->>> lompat jika al=0
:0043B895 6A00 push 00000000
:0043B897 668B0D00B94300 mov cx, word ptr [0043B900]
:0043B89E B202 mov dl, 02

* Possible StringData Ref from Code Obj ->"You are a registered user. Thank "
->"you!"
|
:0043B8A0 B80CB94300 mov eax, 0043B90C
:0043B8A5 E8D240FFFF call 0042F97C
:0043B8AA EB15 jmp 0043B8C1 

Dari sini kita sudah tahu, bahwa call 43b598 lah yang bertanggung jawab untuk pemrosesan key :

* Referenced by a CALL at Address:
|:0043B88C
|
:0043B598 55 push ebp
:0043B599 8BEC mov ebp, esp
:0043B59B 33C9 xor ecx, ecx
:0043B59D 51 push ecx
:0043B59E 51 push ecx
:0043B59F 51 push ecx
:0043B5A0 51 push ecx
:0043B5A1 53 push ebx
:0043B5A2 56 push esi
:0043B5A3 57 push edi
:0043B5A4 BF38174600 mov edi, 00461738
:0043B5A9 33C0 xor eax, eax
:0043B5AB 55 push ebp
:0043B5AC 6830B84300 push 0043B830
:0043B5B1 64FF30 push dword ptr fs:[eax]
:0043B5B4 648920 mov dword ptr fs:[eax], esp
:0043B5B7 C645FF00 mov [ebp-01], 00
:0043B5BB 8D55F8 lea edx, dword ptr [ebp-08]
:0043B5BE A1F0164600 mov eax, dword ptr [004616F0]
:0043B5C3 8B8028020000 mov eax, dword ptr [eax+00000228]
:0043B5C9 E86A79FDFF call 00412F38
:0043B5CE 8B45F8 mov eax, dword ptr [ebp-08]
:0043B5D1 E83A81FCFF call 00403710 --->>> setelah diesekusi call ini akan mebawa kembali nilai eax, yakni panjang key.
:0043B5D6 83F81E cmp eax, 0000001E --->>> apakah panjang = 1eh = 30d ?
:0043B5D9 0F852E020000 jne 0043B80D --->>> cabut jika ngak sama !!!
:0043B5DF BB01000000 mov ebx, 00000001
:0043B5E4 8BF7 mov esi, edi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B607(C)
|
:0043B5E6 8D55F8 lea edx, dword ptr [ebp-08]
:0043B5E9 A1F0164600 mov eax, dword ptr [004616F0]
:0043B5EE 8B8028020000 mov eax, dword ptr [eax+00000228]
:0043B5F4 E83F79FDFF call 00412F38
:0043B5F9 8B45F8 mov eax, dword ptr [ebp-08]
:0043B5FC 8A4418FF mov al, byte ptr [eax+ebx-01]
:0043B600 8806 mov byte ptr [esi], al
:0043B602 43 inc ebx
:0043B603 46 inc esi
:0043B604 83FB1F cmp ebx, 0000001F
:0043B607 75DD jne 0043B5E6
:0043B609 8A07 mov al, byte ptr [edi]
:0043B60B A258174600 mov byte ptr [00461758], al
:0043B610 8A4701 mov al, byte ptr [edi+01]
:0043B613 A259174600 mov byte ptr [00461759], al
:0043B618 8A4702 mov al, byte ptr [edi+02]
:0043B61B A25A174600 mov byte ptr [0046175A], al
:0043B620 8A4703 mov al, byte ptr [edi+03]
:0043B623 A25B174600 mov byte ptr [0046175B], al
:0043B628 33DB xor ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B65A(C)
|
:0043B62A 8BF3 mov esi, ebx
:0043B62C 03F6 add esi, esi
:0043B62E 8BC6 mov eax, esi
:0043B630 83C005 add eax, 00000005
:0043B633 8A0407 mov al, byte ptr [edi+eax]
:0043B636 E8B5FEFFFF call 0043B4F0
:0043B63B C1E004 shl eax, 04
:0043B63E 50 push eax
:0043B63F 83C606 add esi, 00000006
:0043B642 8A0437 mov al, byte ptr [edi+esi]
:0043B645 E8A6FEFFFF call 0043B4F0
:0043B64A 5A pop edx
:0043B64B 0BD0 or edx, eax
:0043B64D 8D4304 lea eax, dword ptr [ebx+04]
:0043B650 889058174600 mov byte ptr [eax+00461758], dl
:0043B656 43 inc ebx
:0043B657 83FB04 cmp ebx, 00000004
:0043B65A 75CE jne 0043B62A
:0043B65C 33DB xor ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B68E(C)
|
:0043B65E 8BF3 mov esi, ebx
:0043B660 03F6 add esi, esi
:0043B662 8BC6 mov eax, esi
:0043B664 83C00E add eax, 0000000E
:0043B667 8A0407 mov al, byte ptr [edi+eax]
:0043B66A E881FEFFFF call 0043B4F0
:0043B66F C1E004 shl eax, 04
:0043B672 50 push eax
:0043B673 83C60F add esi, 0000000F
:0043B676 8A0437 mov al, byte ptr [edi+esi]
:0043B679 E872FEFFFF call 0043B4F0
:0043B67E 5A pop edx
:0043B67F 0BD0 or edx, eax
:0043B681 8D4308 lea eax, dword ptr [ebx+08]
:0043B684 889058174600 mov byte ptr [eax+00461758], dl
:0043B68A 43 inc ebx
:0043B68B 83FB04 cmp ebx, 00000004
:0043B68E 75CE jne 0043B65E
Rutin diatas hanya mempersiapkan keycode saja, trace saja jika kamu penasaran, rutin sebenernya baru akan dimulai :)

:0043B690 8A4712 mov al, byte ptr [edi+12] --->>> al = karakter ke [1+12] dari serial
:0043B693 E858FEFFFF call 0043B4F0 --->>> fungsi pengconvert string ke integer , jadi kalau al = 39h = ascii 9, akan diconvert jadi 09h
:0043B698 8BD8 mov ebx, eax
:0043B69A C1E30C shl ebx, 0C
:0043B69D 8A4713 mov al, byte ptr [edi+13]
:0043B6A0 E84BFEFFFF call 0043B4F0
:0043B6A5 C1E008 shl eax, 08
:0043B6A8 0BD8 or ebx, eax
:0043B6AA 8A4714 mov al, byte ptr [edi+14]
:0043B6AD E83EFEFFFF call 0043B4F0
:0043B6B2 C1E004 shl eax, 04
:0043B6B5 0BD8 or ebx, eax
:0043B6B7 8A4715 mov al, byte ptr [edi+15]
:0043B6BA E831FEFFFF call 0043B4F0
:0043B6BF 0BD8 or ebx, eax

Lihat kode diatas, fungsi sesungguhnya dari code diatas adalah merubah integer ke bentuk hexa, gimana gua tahu ?

Perhatikan shl ebx,0c , kita umpamakan ebx=eax=09h maka setelah shl tsb diesekusi, akan menjadi 9000h lihat isi register ebx, setelah ini dieksekusi,

lanjut ... al = karakter ke 14, umpama eax=01h, maka setelah dieksekusi, eax akan bernilai 100h

or ebx, eax --->>> nilai awal ebx = 9000h, nilai eax = 100h, setelah dieksekusi, ebx akan menjadi 9100h, kesimpulan ? Tarik sendiri !!!

Fungsi diatas akan membuat karakter ke 13-16 menjadi bentuk hex ... (disimpan dalam register ebx)


:0043B6C1 8A4716 mov al, byte ptr [edi+16]
:0043B6C4 E827FEFFFF call 0043B4F0
:0043B6C9 8BF0 mov esi, eax
:0043B6CB C1E61C shl esi, 1C
:0043B6CE 8A4717 mov al, byte ptr [edi+17]
:0043B6D1 E81AFEFFFF call 0043B4F0
:0043B6D6 C1E018 shl eax, 18
:0043B6D9 0BF0 or esi, eax
:0043B6DB 8A4718 mov al, byte ptr [edi+18]
:0043B6DE E80DFEFFFF call 0043B4F0
:0043B6E3 C1E014 shl eax, 14
:0043B6E6 0BF0 or esi, eax
:0043B6E8 8A4719 mov al, byte ptr [edi+19]
:0043B6EB E800FEFFFF call 0043B4F0
:0043B6F0 C1E010 shl eax, 10
:0043B6F3 0BF0 or esi, eax
:0043B6F5 8A471A mov al, byte ptr [edi+1A]
:0043B6F8 E8F3FDFFFF call 0043B4F0
:0043B6FD C1E00C shl eax, 0C
:0043B700 0BF0 or esi, eax
:0043B702 8A471B mov al, byte ptr [edi+1B]
:0043B705 E8E6FDFFFF call 0043B4F0
:0043B70A C1E008 shl eax, 08
:0043B70D 0BF0 or esi, eax
:0043B70F 8A471C mov al, byte ptr [edi+1C]
:0043B712 E8D9FDFFFF call 0043B4F0
:0043B717 C1E004 shl eax, 04
:0043B71A 0BF0 or esi, eax
:0043B71C 8A471D mov al, byte ptr [edi+1D]
:0043B71F E8CCFDFFFF call 0043B4F0
:0043B724 0BF0 or esi, eax

Fungsi diatas akan membuat karakter ke 17-30  ke bentuk hexa, hasil disimpan pada esi ...


:0043B726 E861FDFFFF call 0043B48C --- >>> setelah dieksekusi maka fungsi ini akan membawa kembali eax = suatu kode, yang didapat dari hasil manipulasi karakter awal awal dari key code kita, ngak penting ditrace, kecuali mo bikin key generator ...
:0043B72B 3BD8 cmp ebx, eax --->>> masih inget ebx apa ? jadi kamu tinggal samain ajah ebx dengan eax, ketikkan ? eax

jika tadinya ebx = 91xxh , dan sekarang eax bernilai (misalnya) : 12xxh , maka ganti karakter ke 13 dari keycode dari 9 menjadi 1, dari 1 menjadi 2, dst ...
:0043B72D 0F85DA000000 jne 0043B80D --->>> cabut jika ngak sama ...
:0043B733 E888FDFFFF call 0043B4C0 --- >>> generate eax, yang merupakan hasil manipulasi keycode ...
:0043B738 3BF0 cmp esi, eax --->>> samakan lagi esi dengan eax (karakter 17 sampe selesai)
:0043B73A 0F85CD000000 jne 0043B80D
:0043B740 8A4707 mov al, byte ptr [edi+07] --->>> al = karakter ke 8 dari serial
:0043B743 E8A8FDFFFF call 0043B4F0 --->>> al = brubah dari string ke integer ...
:0043B748 83F803 cmp eax, 00000003 --->>> sama ngak nih al dengan 3 ? jelas disini bahwa karakter ke 8 HARUS = angka 3 !!!
:0043B74B 0F85BC000000 jne 0043B80D
:0043B751 8A4708 mov al, byte ptr [edi+08]
:0043B754 E897FDFFFF call 0043B4F0
:0043B759 83F802 cmp eax, 00000002 --->>> sama dengan 43b740, hanya saja ini untuk karakter ke 9, dimana harus bernilai angka 2 !!!

Perhatikan jika disini karakter ke 8 dan 9 ngak sama dengan 3 dan 2, silahkan keluar dulu dan dibenerin, tapi inget karena gua biland tadi pas cmp ebx,eax dimana eax hasil manipulasi key yang depan depan, maka kalau kamu rubah ini eax juga akan berubah otomatis ebx juga (karena ebx=eax) , maka kamu tinggal samain saja keycodenya ...
:0043B75C 0F85AB000000 jne 0043B80D
:0043B762 807F042D cmp byte ptr [edi+04], 2D
:0043B766 0F85A1000000 jne 0043B80D
:0043B76C 807F0D2D cmp byte ptr [edi+0D], 2D
:0043B770 0F8597000000 jne 0043B80D

karakter ke 5 dan 14 haruslah berupa 2dh = 45d = ascii "-" beresin lagi serial elu jika ngak ada strip di tempat tempat tsb, seperti biasa nilai cmp ebx,eax --- >>> eaxnya brubah lagi, sekali lagi tinggal disamain ...
:0043B776 8D45F0 lea eax, dword ptr [ebp-10]
:0043B779 8A17 mov dl, byte ptr [edi]
:0043B77B E82C7FFCFF call 004036AC
:0043B780 8B45F0 mov eax, dword ptr [ebp-10]
:0043B783 8D55F4 lea edx, dword ptr [ebp-0C]
:0043B786 E8B5A6FCFF call 00405E40
:0043B78B 8B45F4 mov eax, dword ptr [ebp-0C]
:0043B78E BA4CB84300 mov edx, 0043B84C
:0043B793 E88880FCFF call 00403820
:0043B798 7573 jne 0043B80D

fungsi diatas, karakter pertama harus = huruf K !!! (eax berubah lagi, untuk seterusnya ngak gua tulisin lagi) ...
:0043B79A 8D45F0 lea eax, dword ptr [ebp-10]
:0043B79D 8A5701 mov dl, byte ptr [edi+01]
:0043B7A0 E8077FFCFF call 004036AC
:0043B7A5 8B45F0 mov eax, dword ptr [ebp-10]
:0043B7A8 8D55F4 lea edx, dword ptr [ebp-0C]
:0043B7AB E890A6FCFF call 00405E40
:0043B7B0 8B45F4 mov eax, dword ptr [ebp-0C]
:0043B7B3 BA58B84300 mov edx, 0043B858
:0043B7B8 E86380FCFF call 00403820
:0043B7BD 754E jne 0043B80D

karakter kedua = A !!!
:0043B7BF 8D45F0 lea eax, dword ptr [ebp-10]
:0043B7C2 8A5702 mov dl, byte ptr [edi+02]
:0043B7C5 E8E27EFCFF call 004036AC
:0043B7CA 8B45F0 mov eax, dword ptr [ebp-10]
:0043B7CD 8D55F4 lea edx, dword ptr [ebp-0C]
:0043B7D0 E86BA6FCFF call 00405E40
:0043B7D5 8B45F4 mov eax, dword ptr [ebp-0C]
:0043B7D8 BA64B84300 mov edx, 0043B864
:0043B7DD E83E80FCFF call 00403820
:0043B7E2 7529 jne 0043B80D
:0043B7E4 8D45F0 lea eax, dword ptr [ebp-10]
:0043B7E7 8A5703 mov dl, byte ptr [edi+03]
:0043B7EA E8BD7EFCFF call 004036AC
:0043B7EF 8B45F0 mov eax, dword ptr [ebp-10]
:0043B7F2 8D55F4 lea edx, dword ptr [ebp-0C]
:0043B7F5 E846A6FCFF call 00405E40
:0043B7FA 8B45F4 mov eax, dword ptr [ebp-0C]
:0043B7FD BA70B84300 mov edx, 0043B870
:0043B802 E81980FCFF call 00403820
:0043B807 7504 jne 0043B80D

Karakter 3 dan 4 = G dan I , jadi 4 karakter pertama KAGI ...
:0043B809 C645FF01 mov [ebp-01], 01

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0043B5D9(C), :0043B72D(C), :0043B73A(C), :0043B74B(C), :0043B75C(C)
|:0043B766(C), :0043B770(C), :0043B798(C), :0043B7BD(C), :0043B7E2(C)
|:0043B807(C)
|
:0043B80D 33C0 xor eax, eax
:0043B80F 5A pop edx
:0043B810 59 pop ecx
:0043B811 59 pop ecx
:0043B812 648910 mov dword ptr fs:[eax], edx
:0043B815 6837B84300 push 0043B837

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B835(U)
|
:0043B81A 8D45F0 lea eax, dword ptr [ebp-10]
:0043B81D BA02000000 mov edx, 00000002
:0043B822 E8957DFCFF call 004035BC
:0043B827 8D45F8 lea eax, dword ptr [ebp-08]
:0043B82A E86D7DFCFF call 0040359C
:0043B82F C3 ret

Yeah, and let the fun begin, this silly software is fully cracker by US :) ... Heh Heh ... Ketemu lagi di tutorial yang lain ...

Ini salah satu contoh serial yang valid : KAGI-12325678-01230DACFA6ECC9B

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