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

JavaPad Pro v1.0

Target  : JavaPad Pro v1.0
Tool     : SoftIce v4.05

Protection program ini adalah serial dan ID. Tapi tidak seperti program lain yang langsung dengan napsunya menghitung kecocokannya pada saat dimasukkan, program ini dengan sabarnya menulis ID + Serial di file ini, JPAD Pro.ini

Jalankan JPad. Ada nag screen dengan pilihan unlocking code. Klik disana. Pasang BPX di getwindowtexta (ini udah gua coba :) Masukkan ID 123454323 , dan S/N : 123454321Hmmm, pertama gua bingung kok ngak ketemu rutin menarik, elu cuman akan ketemu rutin WritePrivateprofilestringa, yang digunakan untuk menulis ke file .ini . Ini gua kutipkan dari Borland C++ Win32 SDK (Geezzz, what can I do without you ?) :) :)

The WritePrivateProfileString function copies a string into the specified section of the specified initialization file.

This function is provided for compatibility with 16-bit Windows-based applications. WIn32-based applications should store initialization information in the registry.

BOOL WritePrivateProfileString(

LPCTSTR lpAppName,    // pointer to section name
LPCTSTR lpKeyName,    // pointer to key name
LPCTSTR lpString,    // pointer to string to add
LPCTSTR lpFileName     // pointer to initialization filename
);
 

Kalau kamu udah ketemu, silahkan teken F8 untuk masuk ke dalam call tsb. (Jangan kaget, disini kita cuman pengen ngeliat stacknya ajah.) Ketikkan D *(esp+4) kamu akan melihat sectionnya bernama 'Data'. Teken D *(esp+10) kamu akan ngeliat file apa yang menjadi initialization file untuk program ini. JPad Pro.ini nama filenya.

Setelah ini kamu tidak akan dibawa kemana mana, karena memang program ini tidak menghitung algoritmanya sekarang. OK, sekarang keluar dari JPad. Dan buka file Jpad Pro.ini di C:\Windows !!!

Elu Seharusnya melihat ini :

[Data]
0x96072501=123454323
0x96072502=xxxxxxxxxx

[Tip]
StartUp=1
TimeStamp=Mon Jul 29 07:22:54 1996
FilePos=319

Sorry xxx tsb adalah serial untuk ID 123454323, gua ngak mau lamerz ngebaca tutorial ini untuk sekedar tahu serialnya ... :)

Nah, sekarang kita tahu kalau kita udah berada di track yang benar. Sekarang ketika program dijalankan dia butuh untuk memeriksa serial + ID tadi. Dan untuk melakukan hal itu program butuh MEMBACA dari file .ini yang bersangkutan. Program butuh mengissuekan perintah API Getprivateprofilestringa / Getprivateprofileinta. Karena yang dibaca berupa integer, maka kita coba pake Getprivateprofileinta.

Ini kembali gua kutipkan dari Win32 SDK :

The GetPrivateProfileInt function retrieves an integer associated with a key in the specified section of the given initialization file. This function is provided for compatibility with 16-bit Windows-based applications. Win32-based applications should store initialization information in the registry.

UINT GetPrivateProfileInt(

LPCTSTR lpAppName,    // address of section name
LPCTSTR lpKeyName,    // address of key name
INT nDefault,    // return value if key name is not found
LPCTSTR lpFileName     // address of initialization filename
);

Nah, kita udah tahu bahwa sectionnya bernama Data, ya kan ? Kalau kamu langsung dengan napsunya masang BPX disitu, tanpa conditional apa apa, kamu akan break kira kira lebih dari 20 kali ... Karena itu kita butuh teknik yang agak tinggi dengan SoftIce ... :)

BPX GetPrivateProfileIntA if *(ebp->8) == 'Data'

atau :

BPX GetPrivateProfileIntA if *(esp->4) == 'Data'

maksud dari kedua perintah itu sama, karena kita tahu bahwa parameter pertama disimpan di esp+4 / ebp+8, maka kita akan mengcoditionalkan Break hanya kalau yang dibaca adalah section Data (case sensitif), ngerti ?

Arti dari kedua perintah BPX diatas secara lengkap adalah, Break pada pemanggilan API GetPrivateProfileIntA jika DWORD yang ditunjuk oleh esp+4 (parameter pertama) adalah sama dengan Data.

Kamu akan break disini, setelah menekan F12, karena break kita akan selalu berada di kernel Win32 :

015F:004825AE EB15 JMP 004825C5
015F:004825B0 FFB190000000 PUSH DWORD PTR [ECX+00000090]
015F:004825B6 FF7510 PUSH DWORD PTR [EBP+10]
015F:004825B9 FF750C PUSH DWORD PTR [EBP+0C]
015F:004825BC FF7508 PUSH DWORD PTR [EBP+08]
015F:004825BF FF1524BB4B00 CALL [KERNEL32!GetPrivateProfileIntA] -->> !!!
015F:004825C5 5F POP EDI
015F:004825C6 5E POP ESI
015F:004825C7 8BE5 MOV ESP,EBP
015F:004825C9 5D POP EBP
015F:004825CA C20C00 RET 000C
015F:004825CD B803274800 MOV EAX,00482703

OK, F10 sampe RET 000C, kamu akan dibawa kesini :

015F:004044A0 6870C24A00 PUSH 004AC270
015F:004044A5 E8AFE00700 CALL 00482559 -->> Kamu kembali dari sini !!!
015F:004044AA 8B4DEC MOV ECX,[EBP-14]
015F:004044AD 8B51F8 MOV EDX,[ECX-08]
015F:004044B0 83FA04 CMP EDX,04 -->> Panjang S/N harus lebih dari 4 karakter !!!
015F:004044B3 7E20 JLE 004044D5 -->> Kalau sama/kurang dari 4, silahkan cabut.
015F:004044B5 0FBE7103 MOVSX ESI,BYTE PTR [ECX+03] -->>ESI = karakter ke 4 dari ID
015F:004044B9 0FBE5901 MOVSX EBX,BYTE PTR [ECX+01] -->>EBX = karakter ke 2 dari ID
015F:004044BD C1E606 SHL ESI,06 -->> ShiftLeft (SHL) ESI dengan 6
015F:004044C0 03F3 ADD ESI,EBX -->> ESI = ESI+EBX
015F:004044C2 0FBE5902 MOVSX EBX,BYTE PTR [ECX+02] -->> EBX = karakter ke3 dari ID
015F:004044C6 C1E608 SHL ESI,08 -->>SHL ESI dengan 8
015F:004044C9 03F3 ADD ESI,EBX -->> ESI = ESI+EBX
015F:004044CB 0FBE19 MOVSX EBX,BYTE PTR [ECX] -->> EBX = karakter pertama dari ID
015F:004044CE C1E608 SHL ESI,08 -->> SHL ESI dengan 8
015F:004044D1 03F3 ADD ESI,EBX -->> ESI=ESI+EBX
015F:004044D3 03F6 ADD ESI,ESI -->> ESI = 2*ESI
015F:004044D5 85D2 TEST EDX,EDX
015F:004044D7 7E22 JLE 004044FB
015F:004044D9 4A DEC EDX
015F:004044DA 8B4DEC MOV ECX,[EBP-14]
015F:004044DD 0FBE0C0A MOVSX ECX,BYTE PTR [ECX+EDX]
015F:004044E1 C1E109 SHL ECX,09
015F:004044E4 03F1 ADD ESI,ECX
015F:004044E6 85D2 TEST EDX,EDX
015F:004044E8 740F JZ 004044F9
015F:004044EA 4A DEC EDX
015F:004044EB 8B4DEC MOV ECX,[EBP-14]
015F:004044EE 0FBE0C0A MOVSX ECX,BYTE PTR [ECX+EDX]
015F:004044F2 C1E10F SHL ECX,0F
015F:004044F5 03F1 ADD ESI,ECX
015F:004044F7 85D2 TEST EDX,EDX
015F:004044F9 7FDE JG 004045D9

Rutin diatas hanyalah menggenerate S/N yang valid dari ID untuk kemudian dibandingkan dengan S/N kita yang sudah berbentuk integer. (Khan diretrievenya pake Getprivateprofileinta !!!)


015F:004044FB 3BC6 CMP EAX,ESI -->> Bandingkan EAX dengan ESI, ketikkan ? EAX kamu akan melihat S/N kamu dengan format [hex] [decimal] [ascii] , ketikkan esi untuk melihat serial yang valid ...
015F:004044FD 741F JZ 0040451E -->> Sama ? Good Buyer.
015F:004044FF C745FCFFFFFFFF MOV DWORD PTR [EBP-04],FFFFFFFF
015F:00404506 E803030000 CALL 0040480E
015F:0040450B 33C0 XOR EAX,EAX
015F:0040450D 8B4DF4 MOV ECX,[EBP-0C]

Oke, sekarang elu tinggal ganti di file .ini - nya dengan serial yang valid. Program is Cracked.

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