November 1998

"Hindsite 2.11" (Pikiran ala Cracker)

Win '95 PROGRAM Win Code Reversing  

 

by flag eRRatum 

 

 

[eKH]

   

 

   Program Type: Internet

Program Location: http://www.isysdev.com

 
 

    Tools Used: SoftIce 3.24

WDasm 8.93

HexEditor (For Patching)

 

Rating

Easy ( X )  Medium (    )  Hard (    )  Pro (    ) 

There is a crack, a crack in everything. That's how the light gets in.

    


 "Hindsite 2.11" (Pikiran ala Cracker)

Written by flag eRRatum
 
 

Introduction

  Program ini digunakan kalau kamu misalnya, lagi surf ke net, ketemu site bagus tapi lupa dibookmark. Nah, gimana caranya elu dapetin lagi URLnya ? Gunakan program ini. Mungkin dia meretrieve URL dari cachenya IE, gua ngak pasti, belum gua lihat lebih dalem. Jeleknya program ini cuman jalan di IE.

About this protection system

Protection program ini adalah tipe Time Trial, yakni kamu diberi beberapa hari untuk meng"evaluasi" setelah itu program akan menolak untuk berjalan.

The Essay 

  Ok, install programnya, lalu lihat lihat sebentar ...

Majukan tanggal di system kamu, satu bulan kedepan. Lalu jalankan Hindsite. Hmmm, This copy of program ... expired. Menarik !!! Deadlist program ini, lalu search string tsb, kamu akan ketemu banyak (kira kira ada 4 buah).

Ini yang pertama :

0177:00499603 803D240C4A0000 CMP BYTE PTR [004A0C24],00 -->> Apakah [004A0C24] == 0 ?
0177:0049960A 740F JZ 0049961B -->> Lompat jika iya (belum expired), kalau engga lanjutkan (expired)
0177:0049960C B8949A4900 MOV EAX,00499A94
0177:00499611 E8A2FCF9FF CALL 004392B8 -->> Expired bro !!!
0177:00499616 E935040000 JMP 00499A50
0177:0049961B 8D85D4E5FFFF LEA EAX,[EBP+FFFFE5D4]
0177:00499621 8B9530F7FFFF MOV EDX,[EBP+FFFFF730]

Nah, masalahnya kita khan belum tahu apakah di offset 49960a , bener bener sweet spot kita ? Nah, gampang kita test dengan softice, pertama sebelum program dijalankan pasang BPX di Loadicona, kebanyakan program pasti memakai API ini. Lalu F12 untuk kembali ke badan program. BC *, lalu BPX 499603.

Teken F5 untuk melanjutkan. Yeah program ngebreak ..., dan bener di offset 49960a, program tidak melompat, berarti ini bener bener sweet spot kita. Kamu mungkin pikir, mudah ajah, ganti JZ di site jadi JMP (Jump Always) Coba ajah ...

Program jalan !!! , tapi coba klik di TREE , Program expired !!! Berarti program mengecek tanggal di tempat lain. Walau jarang, tapi memang ada beberapa program yang melakukan hal ini. Coba kamu lihat di :

0177:00499603 803D240C4A0000 CMP BYTE PTR [004A0C24],00
 

Program membandingkan apakah 0040a0c24 adalah 0, disini ketikkan D 0040a0c24 :

017F:004A0C24 01 8D 40 00 03 4A 41 4E-03 46 45 42 03 4D 41 52 ..@..JAN.FEB.MAR
017F:004A0C34 03 41 50 52 03 4D 41 59-03 4A 55 4E 03 4A 55 4C .APR.MAY.JUN.JUL

Ahh, pantes ajah program ngak lompat, wong nilainya 01h kok ... Nah, coba periksa string expired yang lain, kalau kamu perhatikan semuanya bergantung pada 004A0C24 !!! Nah, berarti offset tersebut adalah semacam kunci penentu iya khan ?

Oke, sekarang pikir dengan logika, mustinya 004A0C24 bernilai 0, tapi karena expired dia bernilai 1, berarti ADA suatu perintah di badan program yang menjadikan 004A0C24 = 1 = EXPIRED ? Ya khan ? Betul sekali !!! Cari 004A0C24 di deadlist program kamu akan ketemu 3 buah :

0177:00497BB8 C605240C4A0001 MOV BYTE PTR [004A0C24],01
0177:00497BBF 33C0 XOR EAX,EAX
0177:00497BC1 5A POP EDX
0177:00497BC2 59 POP ECX
0177:00497BC3 59 POP ECX
0177:00497BC4 648910 MOV FS:[EAX],EDX
0177:00497BC7 68DF7B4900 PUSH 00497BDF
0177:00497BCC 8D85ECFEFFFF LEA EAX,[EBP-0114]
0177:00497BD2 E8A9BFF6FF CALL 00403B80
0177:00497BD7 C3 RET

Kedua :

0177:00497B69 A2240C4A00 MOV [004A0C24],AL
0177:00497B6E 8D45F3 LEA EAX,[EBP-0D]
0177:00497B71 BAF47B4900 MOV EDX,00497BF4
0177:00497B76 E865B0F6FF CALL 00402BE0
0177:00497B7B 7307 JAE 00497B84

Ketiga :


0177:00497B7D C605240C4A0001 MOV BYTE PTR [004A0C24],01
0177:00497B84 803D240C4A0000 CMP BYTE PTR [004A0C24],00
0177:00497B8B 7532 JNZ 00497BBF
0177:00497B8D 8D85D4FEFFFF LEA EAX,[EBP-012C]
0177:00497B93 50 PUSH EAX
0177:00497B94 B906000000 MOV ECX,00000006

Okeh, yang paling pasti adalah yang pertama dan ketiga, yang kedua berhubung diisi dengan variabel kita belum tahu pasti ...

Dengan cara yang sama, BPX loadicona , BPX di masing masing pertemuan tsb. Kamu akan break pertama kali di yang kedua.

0177:00497B69 A2240C4A00 MOV [004A0C24],AL

Ketik D AL , hey nilai AL = 0 , berarti ini aman.

Pertemuan yang ketiga, juga dilewati begitu saja, Nah baru pada pertemuan yang pertama :

0177:00497BB8 C605240C4A0001 MOV BYTE PTR [004A0C24],01

Nah, berarti ini yang perlu dipatch, di baris ini ketikkan A (Assemble)

lalu ketikkan MOV BYTE PTR [004A0C24],00

Lalu F5, yeah program jalan dengan mulusss, di tree juga OK. Berarti crack kita udah ampir selesai. Inget bahwa A tadi cuman di memory, belum permanen, untuk menjadikannya permanen perlu di hexedit, di hexedit kalau pada HexWorkshop, ketikkan ALT - F5 untuk pergi ke offset yang bersangkutan, ke offset 96FB8 (497BB8h - 401000h + 400h) ganti

C605240C4A0001 dengan :

C605240C4A0000

Untuk berjaga jaga, ganti juga di offset 0177:00497B7D dengan hal serupa. Tutup deadlist. Save hexeditnya.

Jalankan HindSite, YUP dia jalan dengan mulus, tanpa batas waktu, sehingga kita bisa meng"evaluasi" selamanya ... hehehehe :)

Final Notes 

Thanx, buat System Error dengan hackerlinknya yang mo nampung eKH.

Thanx, buat semua rekan rekan eKH yang terus membuat eKH maju.

copyright@eKH'98