Target: HMonitor 3.0.1.2 dengan SoftICE 3.23
Ini adalah tutorial yang sangaat lama (saya pilih karena ini yang membutuhkan
imajinasi dan pemikiran yang kreatif). Saya akan terus menulis bertahap hingga
ke tingkatan yang paling sulit yang pernah saya coba (edisi - edisi terbaru).
Program - program shareware adalah program yang memperbolehkan user untuk menggunakan
program tersebut dalam jangka waktu tertentu. Setelah jangka waktu yang telah
ditentukan tersebut, program tersebut akan menjalankan pesan - pesan tertentu
yang mengingatkan agar membeli program tersebut secara legal, hal ini bisa hanya
berupa window yang muncul setiap kali menjalankan program atau "pelumpuhan
program" secara total sehingga user tidak dapat menggunakannya lagi
Dalam tutorial ini, kita akan mempelajari cara menghilangkan batas waktu yang
amat mengganggu itu sehingga program tidak akan pernah kadaluarsa (epxired).
Pengenalan Program
HMonitor adalah sebuah Utility yang memantau berbagai data - data hardware
di dalam komputer kita dan menampilkannya pada sebuah window. Program ini antara
lain dapat memonitor tegangan listrik, temperatur CPU & motherboard serta
kecepatan kipas pendingin di dalam komputer.
Program ini memberikan batas waktu bagi 30 hari bagi user untuk menggunakannya,
jika telah melewati batas waktu, sebuah window akan muncul setiap kali kita
akan menjalankannya, tetapi program masih tetap dapat digunakan sepenuhnya.
Setelah program dijalankan akan keluar sebuah window yang menampilkan data-data
hardware di dalam komputer kita sementara icon HMonitor diletakan di taskbar
Win95/98. Window yang muncul tidak menyediakan menu apapun, kalo begitu coba
cek icon di taskbar....klik kanan di icon tersebut dan akan muncul menu singkat.
Kalo kamu sudah mencoba semua menu yang ada, kamu akan menyadari bahwa tidak
ada tempat untuk mengisi nama ato s/n kita ke dalam program, yang ada hanya
pesan untuk membeli program tersebut pada menu About. kalo tidak ada tempat
untuk mengisi nama ato s/n, bagaimana cara program itu mengetahui bahwa user
telah membeli ato masih hanya mencobanya saja selama 30 hari ???
Setelah membaca file Register.txt yang ada di foldernya, ternyata kita harus
mendaftar via Internet dan pembuat program tersebut nantinya akan mengirim informasi
mengenai registrasi melalui e-mail. Informasi yang bagaimana ??? Karena aku
ngak pernah membayar program ini jadi aku ngak bisa menjawab pertanyaan itu.......but
it doesn't matter :-)
Menurut apa yang ada di License.txt, program hanya boleh dijalankan dalam jangka
waktu 30 hari, apa yang akan terjadi kalo kita menggunakannya lebih dari itu
??? Untuk mencobanya, majukan tanggal komputer kamu satu bulan ke depan dan
coba jalnakan kembali HMonitor.....ternyata setelah melewati 30 hari, HMonitor
akan menampilkan window yang isinya sama dengan apa yang kita liat di menu About
tadi. Tetapi kita dapat melewati window tersebut hanya dengan menekan tombol
Esc dan menjalankan program seperti biasa. Kalo kamu tidak keberatan melihat
pesan tersebut setiap kali menjalankan HMonitor, kamu ngak perlu membaca tutorial
ini, tapi kalo kamu membenci pesan tersebut sama seperti aku, baca tutorial
ini baik - baik dan window tersebut akan lenyap selama-lamanya :-)
Sebelum mulai, kamu harus menghentikan HMonitor terlebih dahulu lalu dengan
tanggalan yang masih maju satu bulan ke depan, masuk ke SoftICe dengan menekan
Ctrl-D dan pasang breakpoint di GetLocalTime dengan mengetikan perintah BPX
GetLocalTime.
Catatan :
GetLocalTime adalah fungsi yang berguna untuk mengambil data mengenai tanggal
komputer pada saat itu. Fungsi ini sering dipakai untuk program - program shareware
yang menggunakan Time Trial Protection seperti HMonitor ini.
Setelah menyiapkan breakpoint, keluar dari SoftICE dengan menekan Ctrl-D dan
jalankan program HMonitor.
Beberapa detik kemudian, kita akan terlempar ke dalam SoftICE, ini karena fungsi
GetLocalTime sedang dipanggil. Pada saat ini, kita masih berada di dalam fungsi
GetLocalTime, kita tidak perlu menghabiskan waktu di sini, untuk itu tekan F12
satu kali dan kita akan melompat ke baris perintah setelah GetLocalTime tadi
selesai dijalankan.
:00408344 E8DFD6FFFF Call 00405A28 <== GetLocalTime
:00408349 668B4C240E mov cx, word ptr [esp+0E] <== CX = Tanggal Hari ini
:0040834E 668B54240A mov dx, word ptr [esp+0A] <== DX = Bulan
:00408353 668B442408 mov ax, word ptr [esp+08] <== AX = Tahun
Untuk mengetahui isi CX, DX dan AX, gunakan perintah D (D CX, D DX dan D AX)
setelah melewati baris perintah yang bersangkutan dengan menekan F10.
Ternyata di sini, program mengambil informasi waktu pada saat itu. Kalo kamu
ngak begitu suka berlama - lama dalam mengkrak program dan hanya ingin menghilangkan
window yang muncul tadi, kamu bisa merubah perintah di atas sehingga informasi
waktu yang akan diterima HMonitor kapanpun ia mengecek waktu, adalah sama. Dengan
menggunakan fixed date (bukan fixed rate :-)), HMonitor tidak akan menyadari
bahwa telah melewati waktu yang diperbolehkan (programnya stupid yach :-D)
Begini caranya :
Gunakan perintah A (Assemble Code) pada SoftICE ketika sedang berada di baris
perintah 00408349, dengan mengetik A dan menekan tombol Enter. Kemudian isi
baris - baris tersebut dengan perintah di bawah ini :
:00408349 MOV CX, 01 <== Tanggal 01 dalam Hexa
:0040834D NOP
:0040834E MOV DX, 0B <== Bulan 11 dalam Hexa (0B)
:00408352 NOP
:00408353 MOV AX, 07CE <== Tahun 1998 dalam Hexa (07CE)
:00408357 NOP
:00408358 <== Tekan Enter untuk menghentikan perintah A
Perintah di atas memasukan tanggal, bulan dan tahun yang telah kamu tentukan,
jangan lupa informasi yang kamu masukan itu harus sama dengan tanggal, bulan
dan tahun ketika kamu menginstall HMonitor. Kenapa demikian ??? Karena tanggal
penginstallan digunakan oleh HMonitor sebagai patokan untuk menghitung jangka
waktu penggunaan program dengan membandingkannya dengan tanggal, bulan dan tahun
pada saat program dipanggil. Kalo kamu memasukan tanggal satu bulan ke depan
dari saat penginstallan maka perintah di atas percuma saja, HMonitor akan tetap
mengeluarkan window-nya.
Setelah menulis perintah di atas, ketikan BC * untuk membersihkan jebakan (breakpoint)
yang ada di dalam SoftICE dan liat hasilnya. Window tersebut tidak muncul lagi,
karena penggunaannya masih dianggap dalam jangka waktu yang diperbolehkan tetapi
kalo kamu meliat bagian About, pesan bahwa program tersebut masih Unregistered
tetap muncul. Kalo kamu ingin mengubahnya, maka kita harus menggunakan cara
yang berbeda.
Oke sekali lagi matikan HMonitor dan masuk ke dalam SoftICE, pasang kembali
breakpoint di GetLocalTime lalu jalankan HMonitor. Seperti tadi kita akan terlempar
ke dalam SoftICE, di bagian GetLocalTime. Tekan F12 satu kali dan kita kembali
ke bagian program yang tadi telah kita rubah....tapi tunggu dulu, perhatikan
perintah tersebut. Kenapa perintah - perintah tadi masih tetap sama dengan semula
walaupun kamu telah merubahnya tadi, bagaimana dengan perintah yang tadi kita
masukan ??? Dengan menggunakan fungsi A, perintah - perintah yang tadi kita
masukan tidak akan disimpan, apabila kita me-restart program yang bersangkutan,
maka semua perintah - perintah awal akan kembali normal. Karena itu aku sangat
menganjurkan untuk menggunakan fungsi A ini kalo kamu masih belum yakin dengan
hasil krakmu.
Sebelum kita melangkah lebih jauh, kita perlu sedikit memahami sistem proteksi
ini. Pada saat kita menjalankan HMonitor, ia akan memeriksa apakah kita adalah
Registered User, jika tidak maka HMonitor akan menjalankan prosedur pengecekan
waktu dengan memanggil fungsi GetLoclaTime. Dengan demikian kita perlu mencari
di mana proses pengecekan user (registered or not) itu berada, proses pengecekan
itu tentunya berada sebelum fungsi GetLocalTime dijalankan, oleh karena itu
tekan F12 untuk keluar dari proses penghitungan waktu.
:0045CAC7 E83813FEFF call 0043DE04
:0045CACC 898379030000 mov dword ptr [ebx+00000379], eax
:0045CAD2 E865B8FAFF call 0040833C
:0045CAD7 E8F05DFAFF call 004028CC <== Kita ada di sini
Hmmm......kalo kamu menelusuri ke atas perintah - perintah tersebut, kamu ngak
menemukan Conditional Jump yang merupakan saat penentuan apakah harus dijalankan
pengecekan waktu ato tidak. Jangan putus asa dulu, coba tekan F5 satu kali,
agar program kembali dijalankan dengan normal. Ternyata kita berhenti di dalam
GetLocalTime kembali, tekan F12 satu kali, masih inget tempat ini ? :-). Kita
sudah pernah ada di sini, jadi tekan F12 sekali lagi, dan kamu akan terlempar
ke sini :
:0045C3CE E88578FAFF call 00403C58 <== Proses pengecekan
:0045C3D3 0F849C000000 je 0045C475 <== Conditional Jump
:0045C3D9 E85EBFFAFF call 0040833C
:0045C3DE E8E964FAFF call 004028CC <== Kita ada di sini
Catatan :
Dead Lsiting dalam tutorial ini aku ambil dari WDasm, oleh karena itu ada sedikit
perbedaan pada Conditional Jumpnya. Pada SoftICE kau akan melihat JZ (Jump If
Zero) sementara pada WDasm akan terlihat JE (Jump If Equal). Perbedaan ini tidak
merubah hasil eksekusinya.
Ahaa.......kita menemukan Conditional Jumpnya, pada lokasi 0045C3D3 ada sebuah
JZ (Jump If Zero). Apa maksudnya ??? Perintah JZ ini akan dijalankan (melompat
ke 0045C475) dan tidak akan memanggil fungsi GetLocalTime jika ada sebuah nilai
yang dikembalikan bernilai 0. Nilai apa yang dimaksud ??? Untuk menjawab itu,
kita harus masuk ke dalam rutin Call yang ada di atasnya. Bersihkan breakpoint
yang ada (BC *) dan pasang BPX di 0045C3CE dengan perintah BPX 0045C3CE. Tekan
Ctrl-D dan restart HMonitor. Ketika mencapai lokasi tersebut, kita akan terlempar
ke dalam SoftICE, gunakan F8 untuk memasuki rutin Call tersebut dan ini yang
akan kamu temui.(telusuri dengan menekan F10)
:00403C58 53 push ebx
:00403C59 56 push esi
:00403C5A 57 push edi
:00403C5B 89C6 mov esi, eax
:00403C5D 89D7 mov edi, edx
:00403C5F 39D0 cmp eax, edx
:00403C61 0F848F000000 je 00403CF6 <== No Jump
:00403C67 85F6 test esi, esi
:00403C69 7468 je 00403CD3 <== No Jump
:00403C6B 85FF test edi, edi
:00403C6D 746B je 00403CDA <== Jump
:00403C6F 8B46FC mov eax, dword ptr [esi-04]
:00403C72 8B57FC mov edx, dword ptr [edi-04]
:00403C75 29D0 sub eax, edx
:00403C77 7702 ja 00403C7B
:00403C79 01C2 add edx, eax.
:00403CDA 8B46FC mov eax, dword ptr [esi-04]
:00403CDD 29D0 sub eax, edx <== Perhatikan nilai EAX
:00403CDF EB15 jmp 00403CF6
:00403CF6 5F pop edi
:00403CF7 5E pop esi
:00403CF8 5B pop ebx
:00403CF9 C3 ret <== Kembali ke 0045C3D3
Perhatikan baik - baik langkah yang tadi kamu telusuri. Seperti yang telah
aku kemukakan di atas, Conditional Jump akan memeriksa apakah nilai sebuah register
0 ato tidak (0 berarti registered user). dari langkah - langkah yang tadi kita
telusuri, satu-satunya nilai yang dirubah adalah nilai register EAX (liat lokasi
00403CDD) Kalo kamu memperhatikan nilai EAX, nilai itu tidak 0 ketika kembali
ke Conditional Jump (pada lokasi 0045C3D3) sehingga perintah Jump tidak dijalankan
melainkan fungsi GetLocalTime yang akan dijalankan.
Sekarang kita memiliki 2 cara pilihan untuk mengkrak program ini, yaitu :
1. Rubah Conditional Jump menjadi Jump murni dengan menggunakan perintah A
ketika berada di lokasi :0045C3D3
:0045C3D3 JMP 0045C475
:0045C3D8 NOP
:0045C3D9 <== Tekan Enter
Dengan demikian, registered or not, HMonitor tidak akan menjalankan GetLocalTime..
2. Merubah nilai EAX agar menghasilkan nilai 0 :
Pada saat mencapai lokasi 00403CDD, ketik A
:00403CDD SUB EAX,EAX
:00403CDF <== Tekan Enter
Dengan cara kedua ini, EAX akan dikurangkan dengan EAX sendiri sehingga menghasilkan
nilai 0.
Aku lebih menganjurkan untuk memilih cara kedua karena dengan me-nol-kan EAX,
kita akan dianggap sebagai Registered User sehingga pada menu About tidak akan
muncul lagi pesan yang meminta untuk membeli program ini, tulisan itu digantikan
oleh tulisan This Program Registered to :
K r a K
Untuk mempatch program tersebut, edit HMonitor.EXE dengan Hex Editor yang kamu
punya dan cari :
29 D0 EB 15 5A 38
000030D6 29 D0 EB 15 5A 38
Rubah dengan :
000030D6 33 C0 EB 15 5A 38
Catatan Singkat
Walaupun kita sudah dianggap sebagai Registered User, masih ada satu kekurangan.....nama
kita tidak muncul di window About. Tapi jangan khawatir, bukankah yang penting
program sudah teregister, jadi kamu bisa pake tanpa takut akan time trial protection
yang ada :-D
HMonitor cukup cepat mengeluarkan versi - versi terbaru mereka, pada saat kamu
baca tutorial ini, kemungkinan besar HMonitor telah mencapai versi yang berbeda,
jika masih menggunakan sistem proteksi yang sama, kamu bisa menggunakan tutorial
ini sebagai acuan.
Langkah - langkah yang perlu diperhatikan :
- Pasang breakpoint di GetLocalTime
- Tekan F12 dua kali untuk mencari Conditional Jump
- Kalo belum ketemu, tekan F5 untuk menjalankan program secara normal
- Pada saat break, ulangi langkah diatas sampai mendapatkan Conditional Jump
- Apabila ada perintah CMP di atasnya, perhatikan register yang terlibat di
dalamnya, lalu rubah register yang mencurigakan dengan 0.
- Kalo hanya ada rutin Call di atasnya, masuk ke dalamnya dan telusuri dengan
cermat. Curigai register yang berubah :-)
Yang kurang dimengerti, silahkan ke hackerlinkers(at)yahoo(dot)com
Tambahan: Untuk kalangan profesional, pe -bisnis, dosen2, mhsw/i tingkat akhir
jika anda membutuhkan software yang harganya sangat - sangat mahal hingga ribuan
(puluhan ribu) dollar. Saya bisa membantu anda. Kirim saja kepada saya, nama
software, versi, alamat web pembuat, juga alamat download software tersebut.
Apapun softwarenya baik : teknik, marketing, management, design, translate,
art, assembler, industri berat, manufaktur, kimia, pengetesan, office tanpa
terkecuali (termasuk yang dongle, yang register ke server, very big size etc).
Kalau anda mengirim software yang sudah dalam CD tidak ada di on line.. maaf,
bukannya saya tidak percaya, tapi saya harus very2 paranoid kan? Jadi anda harus
saya percayai dulu.. Tentu saja harus mengetahui nama dan versi software2 tersebut.
Sebagai gambaran, saya mempunyai beberapa contoh software tersebut dibawah:
1. TAS versi terbaru
Thermal Analisis System, software terbaru, bagi teknik mesin / mekanik yang
membutuhkan analisa panas suatui zat seharga US$ 4.500
2. SyStran versi terbaru
Software terjemahan dokumen dalam sekejap untuk bhs Inggris, Jerman Rusia, Spanyol
dan bhs2 didunia (bhs Indonesia tidak ada). Seharga US $ 3.000.
3. DESIG II for Windows versi terbaru
Sofware untuk Chemical Engineering seharga US$3.999 dipakai untuk mensimulasikan
suatu proses kimia yang ciamik bgt.
4. Win Est (windows Estimator for Project Management) versi terbaru
Seharga US$3.500 dipakai untuk perencanaan proyek yang komplet.
5. Plane ProjVizt versi terbaru
Sofware rahasia yang digunakan untuk analisa keadaan pesawat terbang (halo USA
airlines, maaf tidak sengaja obok - obok server anda dan ketemu :-)). Tidak
bebas dijual, tapi harganya US$ 28.000
Nah bagi Anda yang membutuhkan software sangat mahal untuk koleksi maupun untuk
digunakan dapat, menghubungi saya. Sebutkan saja nama software, versi, alamat
pembuat dan alamat download software tersebut (untuk mengurangi kesalahan software).
Satu lagi, kalau harganya hanya dibawah US$ 1.000 maaf, dibeli saja secara legal
yah. Soalnya, buat capek saja.. karena tanggung..
To my Helm Jeruk, I love you !
|