Latar belakang
Mungkin dalam keseharian ada di antara kita yang tidak sengaja menghilangkan Password
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!
Paper 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, Anda akan melihat 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 (Screen. 1)
Screen 1
Setelah itu coba Anda klik kiri dengan mouse, program Enable Hook yang berada di tray icon sampai
icon dan statusnya berubah menjadi ON (Screen. 2). Tanda berarti OFF, dan tanda berarti 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?
Screen 2
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 benar-
benar aman?? Silahkan berkreasi dan berekspresi dengan Win32 APIs. Terima kasih semoga
bermanfaat.
Tidak ada komentar:
Posting Komentar