Menembus Proteksi Password dan Serial Number Pada Program Dengan Trik Win32 Hook
Latar belakang
Mungkin dalam keseharian ada di antara kita yang tidak sengaja menghilangkan Password danSerial 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..
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
);
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
);
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
);
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
Untuk programnya silahkan download.
Nama : Win32 Hook
Ukuran : file 504 Kb
Pasword : www.flasinfo.co.cc
Pasword : www.flasinfo.co.cc
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.
Leave Comments