Managed Kod ile Global Hook

13.09.2005

Okuyucu : 1.527
Günlük Okuyucu : 1,6

Windows programcılığında bence en eğlenceli konular hooklar, processlere dışarıdan erişim, injection ve memory okuma atraksityonlarıdır.

Daha önceden .NET ile bir keylogger yazmıştım bunun için KeyboardHook kullanılıyor, daha sonradan keyboard' u disable etmek için bit Low Level Keyboard Hookları ile de uğraşmıştım. Ancak mouse ve keboard harici diğer hooklar ile uğraşmamıştım. Bu hooklar arasında windows message' larını alanlar var vs.

Dün bu konu hakkında bir şey yazmak istedim ancak klasik hook mantığım çalışmadı, konu hakkında araştırma yapınca öğrendim ki meğersem Keyboard ve Mouse hookları haric .NET üzerinden Global Hook yapılamıyormuş ! ( MS KB 319524 : Global Hook Is Not Supported in .NET Framework )

Olayın temeli de şu ki Low level hooklar Keyboard ve Mouse gibi henüz girişlerin hangi pencereye gideceğini bilmediğinden her uygulama bunları belli window' a gitmeden yakalayabiliyor dolayısıyla belli bir DLL' e enjekte etmek gerekmiyor. Ancak diğer üst seviye hooklarda direk pencereye giden girdileri (input) o pencereye enjekte edip almanız gerekiyor. Bomba kısımda buradaki .NET Framework DLL Export desteklemiyor. Bir yerde türlü şekillerle bunun yapılabildiğini okudum ancak örnek kod vs. bulamadım. Bir fikri olan varsa da bekliyoruz.

Bu durumda yapılacak tek iş kalıyor ki o da C++ ile native bir DLL yazıp .NET üzerinden onu kullanmak yada tüm programı C++ ile geliştirmek.

Güncelleme : Benzer bir konu vbaccelerator' un hook library's inde de konu edilmiş ve VB6' da global hook lar kullanılamıyormuş.

Yorumlar

RSS Bu makalenin yorumlarını RSS ile takip et!

http://www.codeproject.com/csharp/globalhook.asp
....I found this explanation: "Global Hook Is Not Supported in .NET Framework. You cannot implement global hooks in Microsoft .NET Framework...". Anyway, I continued my research and found out that there are exceptions. There are WH_KEYBOARD_LL and WH_MOUSE_LL hooks that can be installed globally. So I have basically replaced WH_MOUSE to WH_MOUSE_LL in the MSDN example and it worked...

[ # | 17.09.2005 ]

Codeproject' te de benim dediğim gibi klavye ve mouse hookları global olarak .NET te de kullanılabiliyor ancak diğer hooklar kullanılamıyor.

Zaten örnek kodda da mouse hook u kullanılmış.

Ferruh Mavituna [ # | 18.09.2005 ]

Visual Basic 6.0 'da global hookları kullanabiliyorsun. vbaccelerator'daki hook library zaten vb6 ile yazılmış bir dll.

Mehmet Gurevin [ # | 06.11.2005 ]

Yorum Ekle





Kullanılabilir Taglar : [<blockquote>] [<strong>] [<em>]

Diğer Yazılar

Neredeyim ?

Ferruh.Mavituna » Haberler » Managed Kod ile Global Hook

Ferruh Mavituna
© 2002-2007, Ferruh Mavituna

Sabit IP Adresi : 81.22.99.133, SSL Erişimi, Hakkında