atau Serial Number
dari program yang sudah kita beli. Kalau sudah begitu tentunya repot.
Untuk
mendapatkannya kembali bisa saja dengan menghubungi toko retail maupun vendor
program tempat
program tersebut dibeli. Namun, jika ada peraturan dari vendor yang
mengharuskan membeli ulang password maupun serial number yang hilang,
bagaimana? Bagi Anda mungkin itu bukan masalah ☺ Tapi bagi Saya itu mungkin salah satu masalah besar.
Dari kasus inilah
Saya mencoba menerapkan kegunaan Win32 Hook. Sekedar informasi, teknik seperti
ini sering digunakan oleh para Reverser di dunia Reverse Engineering. Untuk
melakukan debugging file berukuran besar bukan hal yang mudah, memerlukan waktu
lama dan harus didukung dengan hardware yang cukup mewah. Bayangkan saja
debugging file berukuran diatas 100 MB dan
didalamnya
mengandung Crypto RSA?!?! Kalau Saya sih membayangkan saja sudah tidak mau,
apalagi benar-benar
mempraktekkannya.. MALAS! ☺
Postingan ini
bukanlah sebuah tutorial, tetapi hanyalah sebuah informasi. Implementasi dari
pemikiran Saya dengan menerapkan Win32 Hook. Jadi jangan berharap lebih ya? ☺ Karena disini Saya
tidak mengajak Anda melakukan proses Reverse Engineering ataupun Coding secara
mendalam.. MALAS! ☺ Mungkin
lain kali.. tapi
gak janji loh..
Teori
Sekedar pengetahuan
bagi Anda yang mungkin masih awam dengan istilah pemrograman dan dunia
komputer, serta
bagi Anda yang bukan Programmer (karena Anda berarti sama seperti Saya.. ☺).
Hook
atau Win32 Hook
merupakan salah satu point mekanisme penanganan pesan (Message-Handling) di
dalam Microsoft
Windows. Dimana sebuah aplikasi dapat menginstal suatu sub-rutin untuk
memonitor
lalu lintas pesan
didalam sistem dan beberapa proses tertentu dari pesan tersebut sebelum
mencapai
prosedur jendela
target.
Hook itu sendiri
termasuk dalam kategori Handles and Object. Dan masuk dalam spesifikasi User
object.
Lantas mengapa hal “ANEH”
ini diperlukan dalam teknik pemrograman?? Ada 2 alasan..
Pertama, penggunaan
obyek dapat memastikan bahwa pengembang (Developer/Programmer) tidak
menulis kode secara
spesifik untuk low-level, struktur internal. Hal ini memungkinkan Microsoft
untuk menambahkan atau mengubah kemampuan sistem operasi, sepanjang pemanggilan
konvensi yang asli terjaga. Jadi jika suatu saat Microsoft meluncurkan
Operating System, aplikasi yang dibuat oleh para developer ini akan mendapatkan
kemampuan baru dengan sedikit penambahan atau tidak sama sekali.
Kedua, pemakaian
obyek memungkinkan pengembang (Developer/Programmer) mendapatkan
keuntungan dari
keamanan Win32. Masing-masing obyek mempunyai daftar kendali akses sendiri
(access-control
list /ACL) yang menetapkan jenis-jenis tindakan proses dapat berjalan pada
obyek.
Operating System
menguji suatu obyek ACL setiap kali sebuah aplikasi mencoba untuk menciptakan
handle pada obyek.
Windows
APIs
SetWindowsHookEx (Referensi USER32.DLL)
HHOOK
SetWindowsHookEx(
int idHook, //
type of hook to install
HOOKPROC lpfn, //
address of hook procedure
HINSTANCE hMod,
// handle of application instance
DWORD dwThreadId
// identity of thread to install hook for
);
CallNextHookEx (Referensi USER32.DLL)
LRESULT
CallNextHookEx(
HHOOK hhk, //
handle to current hook
int nCode, //
hook code passed to hook procedure
WPARAM wParam, //
value passed to hook procedure
LPARAM lParam //
value passed to hook procedure
);
UnhookWindowsHookEx (Referensi USER32.DLL)
BOOL
UnhookWindowsHookEx(
HHOOK hhk //
handle of hook procedure to remove
);
Proof
of Concept
Jalankan program
Enable Hook akan terlihat icon kecil di tray icon dengan caption “MRHPx Enable
Hook OFF”. Program Enable Hook ini
telah diuji pada beberapa aplikasi yang menggunakan
proteksi Password maupun Serial Number pada saat installasi, salah satunya
adalah DigiFish AncientOcean v1.01. Tanpa Serial Number yang benar Anda tidak
akan dapat melakukan installasi program karena tombol “Next” dalam status
disable
Setelah itu coba
Anda klik kiri dengan mouse, program Enable Hook yang berada di tray icon
sampai icon dan statusnya berubah menjadi ON.
Lalu coba klik
tombol “Next” disable yang berada di jendela installasi program tadi. Bagaimana?
Statusnya berubah
menjadi Enable dan bisa di klik dengan mouse bukan?
Kesimpulan
Mengapa tombol “Next”
yang semula disable berubah menjadi enable? Padahal Serial Number masih kosong,
tidak diisi sama sekali? Jawabannya adalah karena di dalam “Handles and Objects”
sebuah aplikasi bisa meraih Obyek-Jendela handle yang ada. Sama halnya dengan
Anda tidak perlu mengganti channel TV manual, sampai harus jalan bolak-balik
dari tempat duduk Anda ke meja TV jika sudah ada remote control di tangan Anda.
Jadi meskipun diisi Password dan Serial Number yang benar ataupun tidak benar
sekalipun, installasi akan tetap berjalan lancar.
Sampai disini, Anda
sudah melihat kehebatan Win32 Hook bukan. Jadi jangan pernah menganggap
remeh Win32 APIs
Hook sebelum mempelajarinya. Bahkan proteksi FLEXlm yang terkenal itupun takluk
karena hal ini. Untuk para developer, apakah masih yakin proteksi program
installer Anda ini benarbenar aman?? Silahkan berkreasi dan berekspresi dengan
Win32 APIs.
Terima kasih semoga
bermanfaat.




0 Komentar
Berkomentarlah dengan bijak