Senin, 04 April 2011

Menembus Proteksi Password dan Serial Number pada Program dengan Trik Win32 Hook

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 (Redaksi : program disertakan dalam bundel Xcode e-mag #14), 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)

Setelah itu coba Anda klik kiri dengan mouse, program Enable Hook yang berada di tray icon sampai
icon dan statusnya berubah menjadi ON (Screen.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.


sumber : X Code Magz 14


Tidak ada komentar:

Posting Komentar