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

EZ Pix v1.1

Target  : EZ Pix v1.1
Tool     : SoftIce v4.05

Masuk ke EZPix, tekan about, enter reg key, ketikkan nama terserah, serial palsu, BPX di hmemcpy, dll dll. (Just like usual). Setelah ditrace kamu akan sampai ke sini :

:00497F31 8B55FC MOV EDX,[EBP-04]
:00497F34 A150D44B00 MOV EAX,[004BD450]
:00497F39 E8FABCF6FF CALL 00403C38
:00497F3E 8D55F8 LEA EDX,[EBP-08]
:00497F41 A184D84B00 MOV EAX,[004BD884]
:00497F46 8B00 MOV EAX,[EAX]
:00497F48 E857FBF6FF CALL 00407AA4 -->> strlwr(), ubah username ke huruf kecil
:00497F4D 8B45F8 MOV EAX,[EBP-08]
:00497F50 8B1584D84B00 MOV EDX,[004BD884]
:00497F56 8B12 MOV EDX,[EDX]
:00497F58 E813C0F6FF CALL 00403F70 -->> bandingkan apakah username ada huruf besarnya ?
:00497F5D 7416 JZ 00497F75 -->> engga ada, lompat !
:00497F5F B94C804900 MOV ECX,0049804C -->> err
:00497F64 B201 MOV DL,01
:00497F66 A1143F4A00 MOV EAX,[004A3F14]
:00497F6B E8B835F7FF CALL 0040B528
:00497F70 E8C7B6F6FF CALL 0040363C
:00497F75 A1A8D64B00 MOV EAX,[004BD6A8]
:00497F7A 8B00 MOV EAX,[EAX]
:00497F7C E8FF300100 CALL 004AB080 -->> cek(serial)
:00497F81 84C0 TEST AL,AL -->> valid ?
:00497F83 7421 JZ 00497FA6 -->> engga, lompat
:00497F85 6A00 PUSH 00
:00497F87 668B0D50804900 MOV CX,[00498050]
:00497F8E B202 MOV DL,02
:00497F90 B85C804900 MOV EAX,0049805C -->> thank you bla bla bla ...
:00497F95 E8DE92FAFF CALL 00441278
:00497F9A C7835001000001000000MOV DWORD PTR [EBX+00000150],00000001
:00497FA4 EB16 JMP 00497FBC
:00497FA6 B94C804900 MOV ECX,0049804C -->> err
:00497FAB B201 MOV DL,01
:00497FAD A1143F4A00 MOV EAX,[004A3F14]

Disini jelas, bahwa dalam username tidak boleh ada huruf besar, kalau ada kamu ngak akan pernah mencapai rutin serialnya. Mulai menarik, eh ? ;)

cek(serial) routine :
:004AB080 55 PUSH EBP
:004AB081 8BEC MOV EBP,ESP
:004AB083 33C9 XOR ECX,ECX
:004AB085 51 PUSH ECX
:004AB086 51 PUSH ECX
:004AB087 51 PUSH ECX
:004AB088 51 PUSH ECX
:004AB089 51 PUSH ECX
:004AB08A 53 PUSH EBX
:004AB08B 56 PUSH ESI
:004AB08C 57 PUSH EDI
:004AB08D 8BF0 MOV ESI,EAX
:004AB08F 33C0 XOR EAX,EAX
:004AB091 55 PUSH EBP
:004AB092 684EB24A00 PUSH 004AB24E
:004AB097 64FF30 PUSH DWORD PTR FS:[EAX]
:004AB09A 648920 MOV FS:[EAX],ESP
:004AB09D 33C0 XOR EAX,EAX
:004AB09F 55 PUSH EBP
:004AB0A0 680EB24A00 PUSH 004AB20E
:004AB0A5 64FF30 PUSH DWORD PTR FS:[EAX]
:004AB0A8 648920 MOV FS:[EAX],ESP
:004AB0AB C60536EB4B0000 MOV BYTE PTR [004BEB36],00
:004AB0B2 833DD4EA4B0000 CMP DWORD PTR [004BEAD4],00 -->> sudah memasukkan serial ?
:004AB0B9 7516 JNZ 004AB0D1
:004AB0BB B968B24A00 MOV ECX,004AB268
:004AB0C0 B201 MOV DL,01
:004AB0C2 A1143F4A00 MOV EAX,[004A3F14]
:004AB0C7 E85C04F6FF CALL 0040B528
:004AB0CC E86B85F5FF CALL 0040363C
:004AB0D1 A1D4EA4B00 MOV EAX,[004BEAD4]
:004AB0D6 E8858DF5FF CALL 00403E60
:004AB0DB 8B15D4EA4B00 MOV EDX,[004BEAD4]
:004AB0E1 8A5C02FF MOV BL,[EAX+EDX-01]
:004AB0E5 C645FF00 MOV BYTE PTR [EBP-01],00
:004AB0E9 8D55F4 LEA EDX,[EBP-0C]
:004AB0EC A1D8EA4B00 MOV EAX,[004BEAD8]
:004AB0F1 E8AEC9F5FF CALL 00407AA4
:004AB0F6 8B55F4 MOV EDX,[EBP-0C] -->> username kita
:004AB0F9 B874B24A00 MOV EAX,004AB274 -->> "hrax"
:004AB0FE E84590F5FF CALL 00404148 -->> sama ?
:004AB103 85C0 TEST EAX,EAX
:004AB105 7E16 JLE 004AB11D

[Seperti biasa, username kita dibandingkan dengan username cracker yang banyak beredar di net, apakah sama ?, anehnya gua belum pernah denger nama hrax !!! Who the hell is that ?]

:004AB107 B968B24A00 MOV ECX,004AB268
:004AB10C B201 MOV DL,01
:004AB10E A1143F4A00 MOV EAX,[004A3F14]
:004AB113 E81004F6FF CALL 0040B528
:004AB118 E81F85F5FF CALL 0040363C
:004AB11D A1D8EA4B00 MOV EAX,[004BEAD8] -->> username
:004AB122 E8398DF5FF CALL 00403E60 -->> length
:004AB127 83F803 CMP EAX,03 -->> 3 ?
:004AB12A 7D16 JGE 004AB142

[Username kita harus lebih besar/= dengan 3]

:004AB12C B968B24A00 MOV ECX,004AB268
:004AB131 B201 MOV DL,01
:004AB133 A1143F4A00 MOV EAX,[004A3F14]
:004AB138 E8EB03F6FF CALL 0040B528
:004AB13D E8FA84F5FF CALL 0040363C
:004AB142 8D45F8 LEA EAX,[EBP-08]
:004AB145 8B15D4EA4B00 MOV EDX,[004BEAD4]
:004AB14B E82C8BF5FF CALL 00403C7C
:004AB150 8B45F8 MOV EAX,[EBP-08]
:004AB153 E8088DF5FF CALL 00403E60
:004AB158 8BD0 MOV EDX,EAX
:004AB15A 4A DEC EDX
:004AB15B 8D45F8 LEA EAX,[EBP-08]
:004AB15E E82D90F5FF CALL 00404190
:004AB163 833DD4EA4B0000 CMP DWORD PTR [004BEAD4],00 -->> cek sekali lagi apakah sudah memasukkan serial
:004AB16A 750F JNZ 004AB17B
:004AB16C B8D8EA4B00 MOV EAX,004BEAD8
:004AB171 BA84B24A00 MOV EDX,004AB284
:004AB176 E8BD8AF5FF CALL 00403C38
:004AB17B 8D4DF4 LEA ECX,[EBP-0C]
:004AB17E 8B15D8EA4B00 MOV EDX,[004BEAD8]
:004AB184 8BC6 MOV EAX,ESI
:004AB186 E87DFDFFFF CALL 004AAF08 -->> rutin pembentuk serial ada disini !
:004AB18B 8B55F4 MOV EDX,[EBP-0C] -->> REAL Serial
:004AB18E 8B45F8 MOV EAX,[EBP-08] -->> Bogus Serial
:004AB191 E8DA8DF5FF CALL 00403F70
:004AB196 7556 JNZ 004AB1EE
:004AB198 833DD4EA4B0000 CMP DWORD PTR [004BEAD4],00

Rutin pembentuk serial :
:004AAF08 55 PUSH EBP
:004AAF09 8BEC MOV EBP,ESP
:004AAF0B 6A00 PUSH 00
:004AAF0D 6A00 PUSH 00
:004AAF0F 6A00 PUSH 00
:004AAF11 6A00 PUSH 00
:004AAF13 6A00 PUSH 00
:004AAF15 6A00 PUSH 00
:004AAF17 6A00 PUSH 00
:004AAF19 6A00 PUSH 00
:004AAF1B 53 PUSH EBX
:004AAF1C 56 PUSH ESI
:004AAF1D 57 PUSH EDI
:004AAF1E 8BF9 MOV EDI,ECX
:004AAF20 8955FC MOV [EBP-04],EDX
:004AAF23 8BD8 MOV EBX,EAX
:004AAF25 8B45FC MOV EAX,[EBP-04]
:004AAF28 E8E790F5FF CALL 00404014
:004AAF2D 33C0 XOR EAX,EAX
:004AAF2F 55 PUSH EBP
:004AAF30 6847B04A00 PUSH 004AB047
:004AAF35 64FF30 PUSH DWORD PTR FS:[EAX]
:004AAF38 648920 MOV FS:[EAX],ESP
:004AAF3B 8D55EC LEA EDX,[EBP-14]
:004AAF3E B860B04A00 MOV EAX,004AB060
:004AAF43 E820CBF5FF CALL 00407A68
:004AAF48 FF75EC PUSH DWORD PTR [EBP-14]
:004AAF4B FF75FC PUSH DWORD PTR [EBP-04]
:004AAF4E 8D55E8 LEA EDX,[EBP-18]
:004AAF51 B8B4070000 MOV EAX,000007B4
:004AAF56 E899CEF5FF CALL 00407DF4
:004AAF5B FF75E8 PUSH DWORD PTR [EBP-18]
:004AAF5E 8D45F8 LEA EAX,[EBP-08]
:004AAF61 BA03000000 MOV EDX,00000003
:004AAF66 E8B58FF5FF CALL 00403F20
:004AAF6B 8B55F8 MOV EDX,[EBP-08] -->> username dengan modifikasi :

[Username kita, akan ditambah dengan N didepannya, sementara dibelakangnya ditambah dengan 1972]

:004AAF6E 8BC3 MOV EAX,EBX
:004AAF70 E827FFFFFF CALL 004AAE9C -->> get value from modified username
:004AAF75 B903000000 MOV ECX,00000003 -->> ecx = 3
:004AAF7A 99 CDQ -->> edx=0
:004AAF7B F7F9 IDIV ECX -->> eax/ecx , hasil di eax, sisa di edx
:004AAF7D 05AE060000 ADD EAX,000006AE -->> tambah dengan 6aeh
:004AAF82 B940420F00 MOV ECX,000F4240 -->> ecx = f4240h
:004AAF87 99 CDQ -->> edx = 0
:004AAF88 F7F9 IDIV ECX -->> eax/ecx
:004AAF8A 8BF2 MOV ESI,EDX -->> esi = sisa pembagian
:004AAF8C 8D45F4 LEA EAX,[EBP-0C]
:004AAF8F 50 PUSH EAX
:004AAF90 8975E0 MOV [EBP-20],ESI
:004AAF93 C645E400 MOV BYTE PTR [EBP-1C],00
:004AAF97 8D55E0 LEA EDX,[EBP-20]
:004AAF9A 33C9 XOR ECX,ECX
:004AAF9C B86CB04A00 MOV EAX,004AB06C -->> const : EZP1
:004AAFA1 E84EDCF5FF CALL 00408BF4 -->> sebagian serial di generate disini
:004AAFA6 8B55F4 MOV EDX,[EBP-0C] -->> d edx

[sampai sini format serial yang sudah jadi adalah EZP1 (esi), bagian yang kosong adalah 20h, atau spasi(2 kali) , esi pada offset 4aaf8a tentu yang sudah diconvert ke dalam string]

:004AAFA9 8BC3 MOV EAX,EBX
:004AAFAB E8ECFEFFFF CALL 004AAE9C -->> teknik yang sama seperti pada offset 4aaf70, tapi kali ini yang digenerate adalah serial setengah jadi tadi

:004AAFB0 B907000000 MOV ECX,00000007 -->> ecx = 7
:004AAFB5 99 CDQ
:004AAFB6 F7F9 IDIV ECX
:004AAFB8 B964000000 MOV ECX,00000064
:004AAFBD 99 CDQ
:004AAFBE F7F9 IDIV ECX
:004AAFC0 8BDA MOV EBX,EDX
:004AAFC2 8D45F0 LEA EAX,[EBP-10]
:004AAFC5 50 PUSH EAX
:004AAFC6 895DE0 MOV [EBP-20],EBX
:004AAFC9 C645E400 MOV BYTE PTR [EBP-1C],00
:004AAFCD 8D55E0 LEA EDX,[EBP-20]
:004AAFD0 33C9 XOR ECX,ECX
:004AAFD2 B87CB04A00 MOV EAX,004AB07C
:004AAFD7 E818DCF5FF CALL 00408BF4 -->> pada saat ini format serial adalah EZP1 (esi)(ebx) , semuanya yang sudah diconvert kedalam string
:004AAFDC FF75F4 PUSH DWORD PTR [EBP-0C]
:004AAFDF FF75F0 PUSH DWORD PTR [EBP-10]
:004AAFE2 8B45FC MOV EAX,[EBP-04]
:004AAFE5 E8768EF5FF CALL 00403E60
:004AAFEA 48 DEC EAX
:004AAFEB 8D55EC LEA EDX,[EBP-14]
:004AAFEE E801CEF5FF CALL 00407DF4 -->> length(username) - 1 -->> gua sebut ajah x
:004AAFF3 FF75EC PUSH DWORD PTR [EBP-14]
:004AAFF6 8BC7 MOV EAX,EDI
:004AAFF8 BA03000000 MOV EDX,00000003
:004AAFFD E81E8FF5FF CALL 00403F20
Sampe sini format serial : EZP1 (esi)(ebx)(x), semua variabel dalam string
:004AB002 8B07 MOV EAX,[EDI]
:004AB004 E8578EF5FF CALL 00403E60
:004AB009 8BF0 MOV ESI,EAX
:004AB00B 4E DEC ESI
:004AB00C 85F6 TEST ESI,ESI
:004AB00E 7C1C JL 004AB02C
:004AB010 46 INC ESI
:004AB011 33DB XOR EBX,EBX

Rutin pengganti spasi (20h) dari serial !
:004AB013 8B07 MOV EAX,[EDI]
:004AB015 807C18FF20 CMP BYTE PTR [EBX+EAX-01],20
:004AB01A 750C JNZ 004AB028
:004AB01C 8BC7 MOV EAX,EDI
:004AB01E E80D90F5FF CALL 00404030
:004AB023 C64418FF39 MOV BYTE PTR [EBX+EAX-01],39
:004AB028 43 INC EBX
:004AB029 4E DEC ESI
:004AB02A 75E7 JNZ 004AB113
end of fucking(routine) !

Jelas disana terlihat bahwa semua 20h pada serial setengah jadi tadi akan diganti dengan 39h, ini adalah angka 9 dalam ascii, setelah ini format serial sudah lengkap

:004AB02C 33C0 XOR EAX,EAX
:004AB02E 5A POP EDX
:004AB02F 59 POP ECX
:004AB030 59 POP ECX
:004AB031 648910 MOV FS:[EAX],EDX
:004AB034 684EB04A00 PUSH 004AB04E
:004AB039 8D45E8 LEA EAX,[EBP-18]
:004AB03C BA06000000 MOV EDX,00000006
:004AB041 E8C28BF5FF CALL 00403C08
:004AB046 C3 RET

Getvalue()
:004AAE9C 55 PUSH EBP
:004AAE9D 8BEC MOV EBP,ESP
:004AAE9F 51 PUSH ECX
:004AAEA0 53 PUSH EBX
:004AAEA1 56 PUSH ESI
:004AAEA2 8955FC MOV [EBP-04],EDX
:004AAEA5 8B45FC MOV EAX,[EBP-04]
:004AAEA8 E86791F5FF CALL 00404014
:004AAEAD 33C0 XOR EAX,EAX
:004AAEAF 55 PUSH EBP
:004AAEB0 68FAAE4A00 PUSH 004AAEFA
:004AAEB5 64FF30 PUSH DWORD PTR FS:[EAX]
:004AAEB8 648920 MOV FS:[EAX],ESP
:004AAEBB 33DB XOR EBX,EBX
:004AAEBD 8B45FC MOV EAX,[EBP-04]
:004AAEC0 E89B8FF5FF CALL 00403E60 -->> length parameter yang dimasukkan sebagai parameter function, ada 2 dalam program ini yakni, modified username dan serial setengah jadi
:004AAEC5 8BD0 MOV EDX,EAX
:004AAEC7 85D2 TEST EDX,EDX
:004AAEC9 7E19 JLE 004AAEE4
:004AAECB B801000000 MOV EAX,00000001 -->> counter
:004AAED0 8B4DFC MOV ECX,[EBP-04] -->> parameter
:004AAED3 0FB64C01FF MOVZX ECX,BYTE PTR [EAX+ECX-01]
:004AAED8 8D7003 LEA ESI,[EAX+03] -->> esi = eax+3
:004AAEDB 0FAFCE IMUL ECX,ESI -->> ecx=ecx*esi
:004AAEDE 03D9 ADD EBX,ECX -->> variabel tampung di ebx
:004AAEE0 40 INC EAX
:004AAEE1 4A DEC EDX
:004AAEE2 75EC JNZ 004AAFD0 -->> Loop
:004AAEE4 33C0 XOR EAX,EAX
:004AAEE6 5A POP EDX
:004AAEE7 59 POP ECX
:004AAEE8 59 POP ECX
:004AAEE9 648910 MOV FS:[EAX],EDX
:004AAEEC 6801AF4A00 PUSH 004AAF01
:004AAEF1 8D45FC LEA EAX,[EBP-04]
:004AAEF4 E8EB8CF5FF CALL 00403BE4
:004AAEF9 C3 RET

Ngak terlalu sulit kan rutin getvaluenya ? (mudah sekali IMHO), dalam pascal akan terlihat begini :

for i:=1 to length(username) do serial:=serial+(ord(username[i])*(i+3)) ;

dalam C akan terlihat seperti begini :

for (i=0;i<strlen(username);i++)  serial+=username[i]*(i+4) ;

Nah, setelah membuat keygenZ nya gua mencoba serial yang gua bikin, pertama dengan username lanny forever, hmmm that's strange ditolak !!! Mungkin program ini ngak terlalu "lanny friendly", gua coba dengan nama asli gua ... masih ngak bisa !!! Akhirnya gua trace sampai ke :

:004AB18B 8B55F4 MOV EDX,[EBP-0C] -->> REAL Serial
:004AB18E 8B45F8 MOV EAX,[EBP-08] -->> Bogus Serial
:004AB191 E8DA8DF5FF CALL 00403F70

gua ketikkan d eax, heiii, karakter terakhir gua dihilangkan !!! jadi kalau elu masukin 12345 akan menjadi 1234 ..., setelah beberapa kali nyoba, gua pikir, mungkin program ini butuh karakter terakhir secara acak ..., gua masukin sembarang karakter untuk menambah registration keynya, jadi sekarang panjangnya bertambah satu. Betul juga ! Di rutin diatas real dengan bogus akhirnya sama, dengan senang gua keluar dari softice ... BOOM ! Tetep err !!! aneh, ada apa yah ? Mungkin ngak bahwa karakter terakhir tadi HARUS mengikuti aturan tertentu, jadi tidak sembarang aturan saja ? Gua trace lebih lanjut :

:004AB18B 8B55F4 MOV EDX,[EBP-0C] -->> REAL
:004AB18E 8B45F8 MOV EAX,[EBP-08] -->> Bogus
:004AB191 E8DA8DF5FF CALL 00403F70
:004AB196 7556 JNZ 004AB1EE
:004AB198 833DD4EA4B0000 CMP DWORD PTR [004BEAD4],00
:004AB19F 744D JZ 004AB1EE
:004AB1A1 8D45F4 LEA EAX,[EBP-0C]
:004AB1A4 8BD3 MOV EDX,EBX
:004AB1A6 E8DD8BF5FF CALL 00403D88
:004AB1AB 8B45F4 MOV EAX,[EBP-0C]
:004AB1AE 50 PUSH EAX
:004AB1AF A1D8EA4B00 MOV EAX,[004BEAD8]
:004AB1B4 E8A78CF5FF CALL 00403E60
:004AB1B9 8B15D8EA4B00 MOV EDX,[004BEAD8]
:004AB1BF 8A5402FE MOV DL,[EAX+EDX-02] -->> huruf sebelum huruf terakhir dari username
:004AB1C3 8D45EC LEA EAX,[EBP-14]
:004AB1C6 E8BD8BF5FF CALL 00403D88
:004AB1CB 8B45EC MOV EAX,[EBP-14]
:004AB1CE 8D55F0 LEA EDX,[EBP-10]
:004AB1D1 E892C8F5FF CALL 00407A68 -->> upcase !
:004AB1D6 8B55F0 MOV EDX,[EBP-10] -->> hasil
:004AB1D9 58 POP EAX -->> karakter terakhir dari registration key
:004AB1DA E8918DF5FF CALL 00403F70 -->>bandingkan
:004AB1DF 750D JNZ 004AB1EE
:004AB1E1 C645FF01 MOV BYTE PTR [EBP-01],01
:004AB1E5 C60536EB4B0001 MOV BYTE PTR [004BEB36],01
:004AB1EC EB16 JMP 004AB204

interesting, eh ? jelas bahwa karakter terakhir dari registration key HARUS sama dengan karakter kedua dari belakang !

setelah mengerti ini dengan cepat gua membuat keygeneratornya dalam pascal :

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