Posted on 2010-01-13 00:30
S.l.e!ep.¢% 閱讀(2362)
評論(0) 編輯 收藏 引用 所屬分類:
RootKit
鍵盤鉤子中KBDLLHOOKSTRUCT到MSG的轉換,
|
|
?
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) {????
????assert(hookWnd !=NULL); ????if(nCode ==HC_ACTION) ????{ ????????KBDLLHOOKSTRUCT *Key_Info =(KBDLLHOOKSTRUCT*)lParam; ????????DWORD dwvk = Key_Info->vkCode; ????????DWORD dwMsg = 1; ????????dwMsg += Key_Info->scanCode << 16; ????????dwMsg += Key_Info->flags << 24; ???? ????????//str存儲的即是鍵盤的鍵名。
#ifdef _DEBUG ????????char str[20]={0}; ????????GetKeyNameText( dwMsg, str, 20); #endif ????????::PostMessage( hookWnd, WM_USER_DEFINE,(WPARAM)dwvk,(LPARAM)dwMsg); ????????if((166 <= dwvk && dwvk<=169)||(170 <= dwvk && dwvk<= 181)) ????????????returntrue; ????}
????return CallNextHookEx(hhkHook, nCode, wParam, lParam); }
|
改部分代碼在斷點調試的情況下并不能屏蔽一些系統擴展鍵!在運行時可以屏蔽!可能系統的鍵盤事件是異步的,在一定時間沒有TRUE返回的時候將調用別的事件函數(系統事件處理函數)。導致上述情況出現 !!!
|
|