NuMega SoftICE 3.24

oleh

CHuPaCaBRa


Tutorial ini ditujukan  untuk anda yang baru pertama kali menggunakan pogram NuMega SoftICE 3.24. SoftICE 3.24 adalah salah satu produk NuMega yang diciptakan untuk membantu para programer untuk debugging pada program yang telah mereka buat. Tapi kegunaan SoftICE ternyata tidak hanya itu saja, dengan kemampuan debugging SoftICE yang hebat, program ini dapat juga digunakan untuk mengKrak berbagai Sistem Proteksi yang digunakan pada berbagai Shareware yang beredar sekarang. Karena itulah program ini menjadi ToolZ yang sangat digemari oleh para Kraker saat ini.

1. Setting SoftICE 3.24 untuk pertama kali.

Setelah proses installasi selesai, SoftICE 3.24 akan menambahkan satu baris perintah pada file Autoexec.Bat, yaitu :

D:\SOFTIC~1\WINICE.EXE

Perintah ini akan dijalankan pada awal pemanggilan Windows 9x. Tetapi sebelum dapat menggunakan SoftICE 3.24 ini dengan maksimum, anda harus melakukan perubahan kecil pada konfigurasi SoftICE yang terletak pada file Winice.Dat.

Berikut contoh isi Winice.Dat yang saya punya :

PENTIUM=ON
NMI=ON
ECHOKEYS=OFF
NOLEDS=OFF
NOPAGE=OFF
SIWVIDRANGE=ON
THREADP=ON
LOWERCASE=OFF
WDMEXPORTS=OFF
MONITOR=0

PHYSMB=32                        
==> Anda bisa menggantinya sesuai dengan kapasitas memory yang anda miliki.
SYM=1024
HST=256
TRA=8
MACROS=32
DRAWSIZE=2048

INIT="X;"

F1="h;"
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G @SS:ESP;"
F12="^p ret;"
SF3="^format;"
CF8="^XT;"
CF9="TRACE OFF;"
CF10="^XP;"
CF11="SHOW B;"
CF12="TRACE B;"
AF1="^wr;"
AF2="^wd;"
AF3="^wc;"
AF4="^ww;"
AF5="CLS;"
AF8="^XT R;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"

; WINICE.DAT
; (SIW95\WINICE.DAT)
; for use with SoftICE Version 3.2 (Windows 95)
; 14 July 1997

; *************************************************************************
; If your have MORE than 32MB of physical memory installed, change
; the PHYSMB line to the correct # of Megabytes.
; If you have LESS than 32MB you can save a bit of memory by
; specifying the correct # of Megabytes
; Example: PHYSMB=32
; *************************************************************************
; ***** Examples of sym files that can be included if you have the SDK *****
;    Change the path to the appropriate drive and directory
;LOAD=c:\windows\system\user.exe
;LOAD=c:\windows\system\gdi.exe
;LOAD=c:\windows\system\krnl386.exe
;LOAD=c:\windows\system\mmsystem.dll
;LOAD=c:\windows\system\win386.exe
; ***** Examples of export symbols that can be included *****
;    Change the path to the appropriate drive and directory
;EXP=c:\windows\system\vga.drv
;EXP=c:\windows\system\vga.3gr
;EXP=c:\windows\system\sound.drv
;EXP=c:\windows\system\mouse.drv
;EXP=c:\windows\system\netware.drv
;EXP=c:\windows\system\system.drv
;EXP=c:\windows\system\keyboard.drv
;EXP=c:\windows\system\toolhelp.dll
;EXP=c:\windows\system\shell.dll
;EXP=c:\windows\system\commdlg.dll
;EXP=c:\windows\system\olesvr.dll
;EXP=c:\windows\system\olecli.dll
;EXP=c:\windows\system\mmsystem.dll
;EXP=c:\windows\system\winoldap.mod
;EXP=c:\windows\progman.exe
;EXP=c:\windows\drwatson.exe
; ***** Examples of export symbols that can be included for Windows 95 *****
;    Change the path to the appropriate drive and directory

==> Pada konfigurasi awal, baris - baris di bawah ini akan dimulai dengan Semicolon (' ; '). Hapus Semicolon itu, hingga hasilnya akan seperti yang terlihat di bawah ini ( Sesuaikan nama direktori-nya jika anda menggunakan nama lain untuk direktori Windows anda )

EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
EXP=c:\windows\system\comdlg32.dll
EXP=c:\windows\system\shell32.dll
EXP=c:\windows\system\advapi32.dll
EXP=c:\windows\system\shell232.dll
EXP=c:\windows\system\comctl32.dll
EXP=c:\windows\system\crtdll.dll
EXP=c:\windows\system\version.dll
EXP=c:\windows\system\netlib32.dll
EXP=c:\windows\system\msshrui.dll
EXP=c:\windows\system\msnet32.dll
EXP=c:\windows\system\mspwl32.dll
EXP=c:\windows\system\mpr.dll

Anda dapat menambahkan file Export Symbols lainnya, sebagai contoh jika anda ingin menggunakan SoftICE 3.24 untuk mengKrak program yang dibuat dengan bahasa Visual Basic 5, anda dapat menambahkan file msvbvm50.dll pada Winice.Dat seperti ini :

EXP=c:\windows\system\msvbvm50.dll

2. Pengenalan Interface SoftICE

SoftICE bekerja di "belakang" Windows 9x. Untuk masuk ke dalamnya, tekan Ctrl-D, anda akan "terlempar" ke dalam SoftICE. Secara default, layar komputer anda akan terbagi 3 bagian :

  1. Bagian atas disebut 'Local Window' - untuk on/off-nya ketik WL.
  2. Bagian tengah disebut 'Code Window', menampilkan listing program yang sedang di-debug dalam bahasa Assembly - untuk on/off-nya ketik WC.
  3. Bagian bawah adalah Window untuk memasukan perintah - perintah pada SoftICE.

Selain ketiga Window itu, SoftICE juga menyediakan beberapa Window lagi antara lain :

3. SoftICE untuk Kraking

Okeh....now the fun stuff :-)

Seperti yang udah saya tulis pada pembukaan di atas, SoftICE 3.24 ini dapat digunakan sebagai ToolZ untuk mengKrak program Shareware yang menjadi Target kita. Untuk itu saya akan menjelaskan beberapa perintah - perintah penting yang digunakan oleh program ini, tapi sebelum itu sebaiknya saya jelaskan sedikit bagaimana SoftICE 3.24 dapat membantu kita.

Perintah - perintah yang umum digunakan dalam SoftICE :

- BPX ( Breakpoint On Execution )

Agar dapat menghemat penggunaan memory dan ukuran sebuah program yang bekerja di Windows 9x, programer sering menggunakan apa yang disebut sebagai Win32 API. Win32 API adalah kumpulan fungsi - fungsi yang tersedia dalam Windows 9x, dengan menggunakan fungsi yang sudah ada di dalam Win32 API ini, seorang programer dapat membuat program-nya berjalan lebih efisien.

Di sinilah SoftICE bekerja. SoftICE memiliki kemampuan yang disebut BreakPoint, yaitu kemampuan untuk mendebug program pada saat program tersebut memanggil fungsi yang ada di Win32 API. Perintah untuk menjalankan Breakpoint ini adalah BPX.

Contoh penggunaannya adalah BPX GetWindowTextA. GetWindowTextA adalah salah satu Win32 API yang bisa digunakan untuk menerima inputan dari user. Huruf A di belakang GetWindowText menunjukkan bahwa program tersebut berbasis 32-bit sementara untuk program 16-bit, cukup hanya menggunakan BPX GetWindowText.

Berikut ini adalah beberapa Win32 API yang penting untuk diperhatikan oleh para Kraker :

FUNGSI WIN32 API
Mengambil inputan dari User  

GetWindowText ( 16-bit )
GetDlgItemText ( 16-bit )

GetWindowTextA ( 32-bit )
GetDlgItemTextA ( 32-bit )

GetDlgItemInt ( 16 / 32-bit )
Hmemcpy ( 16 / 32-bit )

 

Menampilkan MessageBox  

MessageBox ( 16-bit )
MessageBoxA ( 32-bit )
MessageBoxExA ( 32-bit )
MessageBeep ( 16 / 32-bit )

Berhubungan dengan waktu dan tanggal  

GetSystemTime ( 16 / 32-bit )
GetLocalTime ( 16 / 32-bit )

SystemTimeToFileTime ( 16 / 32-bit )

Membuat atau menghapus Key dalam Registry  

RegCreateKey ( 16-bit )
RegDeleteKey ( 16-bit )

RegCreateKeyA ( 32-bit )
RegDeleteKeyA ( 32-bit )

Membaca sebuah nilai dari Registry Key  

RegQueryValue ( 16-bit )
RegQueryValueA ( 32-bit )

Membuka atau Menutup Registry Key  

RegCloseKey ( 16-bit )
RegOpenKey ( 16-bit )

RegCloseKeyA ( 32-bit )
RegOpenKeyA ( 32-bit )

Cat : Dikutip dari tutorial +gthorne'97 tentang Win32 API

Selain fungsi - fungsi di atas, masih ada banyak lagi Win32 API yang tidak saya tuliskan di tutorial ini.

Selain digunakan untuk Break pada saat pemanggilan Win32 API, BPX juga dapat dipakai untuk Break pada Alamat tertentu.

- BPM ( Breakpoint On Memory Access )

Hampir sama seperti perintah BPX, perintah BPM ini digunakan agar SoftICE break pada kondisi tertentu. Bedanya, BPM digunakan khusus pada Memory Access. Dengan demikian, jika program target anda mencoba mengakses suatu bagian memory yang telah anda BPM, SoftICE akan mendeteksinya dan break pada saat itu.

Perintah ini sangat berguna ketika anda ingin memperhatikan perubahan - perubahan yang terjadi pada lokasi memory tertentu, seperti lokasi memory yang menampung Serial Number misalnya.

- S ( Search for Data )

Perintah ini digunakan untuk mencari data tertentu pada memory. Misalkan saja anda hendak mencari dimana Serial Number yang anda masukan disimpan di dalam memory, anda bisa mencarinya dengan perintah :

    S 0 L ffffffff "123454321"

Keterangan :

- D ( Display Memory )

Sesuai dengan namanya, perintah ini dipakai untuk menampilkan lokasi memory tertentu. Sebagai contoh, jika anda ingin melihat isi lokasi memory pada alamat 0030:00000010, anda dapat menggunakan perintah :

     D 0030:00000010

Setelah anda menjalankan perintah tersebut, pada Data Window, anda dapat melihat lokasi memory tersebut.

- ? ( Evaluate Expression )

Perintah ini ditujukan untuk mengevaluasi suatu perhitungan matematis atau logika. Contohnya, dengan memberi perintah :

     ? 8 + 2

Anda akan mendapatkan hasil : 0000000A   00000010. Selain itu, perintah ini bisa digunakan untuk mendapatkan nilai Hexadecimal dan Decimal dari suatu register.

4. Penutup

Perintah - perintah yang saya tulis di dalam tutorial ini adalah sebagian kecil dari perintah - perintah yang digunakan oleh SoftICE. Oleh karena itu, untuk memperdalam perintah - perintah SoftICE dan kegunaannya, anda bisa membacanya pada Manual SoftICE 3.24 yang bisa di dapatkan di bagian ToolZ

 

chupacabra@softhome.net

© Mei 1999