1. 程式人生 > >利用debug鉤子攔截全局鉤子,經典反黑客技術

利用debug鉤子攔截全局鉤子,經典反黑客技術

函數 con sdn info hook ret class set wpar

// 鍵盤鉤子消息處理過程
LRESULT CALLBACK DebugProc ( int nCode, WPARAM wParam, LPARAM lParam )
{
if ( nCode == HC_ACTION )
{
PDEBUGHOOKINFO pDebugHookInfo = (PDEBUGHOOKINFO)lParam ;
switch ( wParam )
{
case WH_KEYBOARD:
case WH_MOUSE:
{
// 如果鉤子不是由當前DEBUG鉤子所在線程安裝
// 就直接返回非0值,取消鉤子函數過程調用
if ( pDebugHookInfo->idThread != pDebugHookInfo->idThreadInstaller )
return 1 ;
}
break ;
}
}
// 繼續傳遞消息
return CallNextHookEx ( hDebug, nCode, wParam, lParam ) ;
}

BOOL WINAPI SetHook ( BOOL isInstall )
{
// 需要安裝,且鉤子不存在
if ( isInstall && !hDebug )
{
// 設置全局鉤子
hDebug = SetWindowsHookEx ( WH_DEBUG, (HOOKPROC)DebugProc, 0, GetCurrentThreadId() ) ;
if ( hDebug == NULL )
return FALSE ;
}

// 需要卸載,且鉤子存在
if ( !isInstall && hDebug )
{
// 卸載鉤子
BOOL ret = UnhookWindowsHookEx ( hDebug ) ;
hDebug = NULL ;
return ret ;
}

return TRUE ;
}

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

利用debug鉤子攔截全局鉤子,經典反黑客技術