如何理解接口幂等性
327
2022-10-23
利用debug钩子拦截全局钩子,经典反黑客技术
利用debug钩子拦截全局钩子,经典反黑客技术
// 键盘钩子消息处理过程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 ;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~