AniChoice

http://www.anicursor.com

SoftICE 3.24

oleh

CHuPaCaBRa

 

Pengenalan Program

AniChoice adalah program kecil yang membantu User untuk merubah Animated Cursor yang diinginkan pada system Windows-nya.

Program ini dapat dijalankan selama 21 hari, lewat dari batas waktu tersebut, program tak dapat dijalankan dan user harus membeli password untuk mengupgrade-nya menjadi full version :-(

Essay

Pada saat pertama kali kita menjalankan program ini, akan keluar sebuah MessageBox yang menyatakan bahwa program tersebut adalah program Shareware. Dari MessageBox tersebut kita bisa masuk ke dalam DialogBox untuk pemasukan password. Aku memasukan password sebagai berikut :

Password : 123454321

Sebelum menekan tombol OK, masuk ke dalam SoftICE dan pasang BreakPoint di fungsi - fungsi API yang dicurigai seperti GetWindowTextA, GetDlgItemTextA ataupun GetDlgItemInt. Baru setelah itu, kembali ke Windows dan klik tombol OK. Sesaat kemudian, kamu akan terlempar ke dalam lingkungan SoftICE, tepat di dalam fungsi GetWindowTextA.

:0042590C Call dword ptr [00449A64]    	;GetWindowTextA
:00425912 mov ecx, dword ptr [esp+08]   
:00425916 push FFFFFFFF

Untuk melihat dimana lokasi memory tempat menyimpan password yang baru kita masukan tadi, ketik D *ECX :

:d *ecx
017F:00DF09DC 31 32 33 34 35 34 33 32-31 00 00 00 00 00 00 00 123454321.......

Pasang BreakPoint di lokasi memory tersebut untuk memantau perubahan pada password tersebut.

Fungsi GetWindowTextA ini digunakan sebanyak 2 kali untuk mengambil password yang kita inputkan. Pada fungsi GetWindowTextA yang pertama ini, program hendak mengecek apakah User sudah memasukan password tertentu sebelum mengklik tombol OK. Setelah yakin password sudah dimasukan ( tanpa peduli apakah password tersebut benar atau salah ), program akan menggunakan fungsi GetWindowTextA kembali :

:0042B9D3 Call dword ptr [00449A64]    	;Fungsi GetWindowTextA kedua
:0042B9D9 mov ecx, dword ptr [ebp+10]   
:0042B9DC push FFFFFFFF

Ketik D *ECX untuk meliat isi register ECX :

:d *ecx
017F:00DF0ACC 31 32 33 34 35 34 33 32-31 00 72 69 66 00 68 6C  123454321.rif.hl

Pasang lagi BreakPoint di lokasi memory di atas. ( BPM 017F:00DF0ACC )

Perintah - perintah berikutnya cukup panjang dan tidak terlalu perlu kita perhatikan, oleh karena itu aku akan langsung ke bagian yang penting. Setelah menekan F10 selama berkali - kali, kamu akan menemukan baris - baris perintah seperti ini :

:0040A6E2 mov dl, byte ptr [ecx]		;DL  = [ECX]
:0040A6E4 add ecx, 00000004			;ECX = ECX + 4
:0040A6E7 xor dl, CA				;DL  = DL xor CAh
:0040A6EA add dl, 61				;DL  = DL + 61h
:0040A6ED mov byte ptr [esp+eax+00000160], dl	;[ESP+EAX+160h] = DL
:0040A6F4 inc eax				;EAX = EAX + 1
:0040A6F5 cmp eax, 00000011			;Apakah EAX = 11h ???
:0040A6F8 jb 0040A6E2				;Jika EAX < 11h, lompat !!!

Apa yang sebenarnya dilakukan oleh potongan program di atas ??? Untuk mengetahui jawabannya, kamu harus memeriksa apa isi ECX dengan mengetikkan perintah D ECX :

:d ecx
017F:006AF4A0 CA CA CE FA C8 CA CE FA-1B 35 31 05 12 35 31 05 .........51..51.
017F:006AF4B0 C0 CA CE FA C6 CA CE FA-19 35 31 05 1C 35 31 05 .........51..51.
017F:006AF4C0 CE CA CE FA 1A 35 31 05-1F 35 31 05 C5 CA CE FA .....51..51.....
017F:006AF4D0 05 35 31 05 18 35 31 05-29 35 31 05 2D 35 31 05 .51..51.)51.-51.
017F:006AF4E0 2E 35 31 05 22 35 31 05-C7 CA CE FA D9 CA CE FA .51."51.........
017F:006AF4F0 CE CA CE FA DB CA CE FA-CF CA CE FA CA CA CE FA ................
017F:006AF500 C8 CA CE FA CE CA CE FA-31 35 31 05 D0 CA CE FA ........151.....

Ternyata ECX berisi sebuah barisan nilai Hexa yang sudah ditentukan sebelumnya. Lalu apa hubungannya dengan password kita ???

Perhatikan baris - baris perintah berikutnya. Selama 17 kali ( 11 hexa = 17 decimal ), DL mengambil nilai yang ditunjukan oleh [ECX] dan mengolahnya kemudian hasil dari pengolahan tersebut dimasukan ke dalam [ESP+EAX+160h]. Setelah selesai, program akan melanjutkan dengan baris - baris perintah berikutnya :

:0040A710 mov dl, byte ptr [eax]
:0040A712 mov cl, dl

EAX adalah lokasi memory yang menyimpan hasil pengolahan di atas :

:d eax
017F:006AF5E8 61 63 32 39 6B 6D 34 37-65 31 36 70 30 33 44 48  ac29km47e16p03DH
017F:006AF5F8 45 00 0C 4F 02 00 04 00-3C 07 48 02 9F 35 36 86  E..O....<.H..56.

:0040A714 cmp dl, byte ptr [esi]
:d esi
017F:00DF0ACC 31 32 33 34 35 34 33 32-31 00 72 69 66 00 68 6C  123454321.rif.hl
:0040A716 jne 0040A734
:0040A718 test cl, cl

Dari baris - baris perintah di atas, kita bisa mengambil kesimpulan bahwa password kita yang asli adalah   "ac29km47e16p03DHE"....kraked :-)

K R A K

Password : ac29km47e16p03DHE

Catatan

Sistem Proteksi program ini sebenarnya mirip dengan sistem proteksi Hardcoded seperti pada tutorialku sebelumnya tetapi ada sedikit perbedaan. AniChoice tidak langsung membuat password yang sudah ditentukan sebelumnya tetapi program ini hanya menentukan barisan nilai - nilai hexa yang kemudian akan diolah untuk menjadi sebuah password yang valid.

chupacabra@softhome.net

© Juni1999