防止消息钩子入侵

本文介绍了一种在用户层通过hook LoadLibraryExW函数来防止全局消息钩子入侵的方法。作者通过Detours库实现了对LoadLibraryExW的拦截,过滤掉特定的dll加载,例如"hook.dll",以此增强程序的安全性。然而,在MFC的release版本中,该方法可能由于编译器优化而失效,作者对此感到困惑并寻求解决方案。
摘要由CSDN通过智能技术生成

很久以前就知道可以使用LoadLibraryExW来防止全局钩子入侵,说实话一直很反感消息钩子。曾经想过在驱动层通过过hook NtUserSetWindowsHookEx来防止,但是我们并不是很好区分钩子不是不恶意的,而且windows系统本身也会使用,还有就是驱动层很多安全软件和rootkit都盯上了,稳定性是一个问题。后来我看到xuetr.exe也是在用户层hook自身的LoadLibraryExW的,我也想尽可能的保护好自己的程序,经过我亲身测试发现在win32非mfc程序hook这个函数很有效,mfc程序的debug版本也是没有问题,但是在mfc的release版本却失效了,后来注意到了内联汇编,我想可能是被编译器优化了。曾向利用__declspec(naked)禁止对内联汇编的优化,但是使用了__declspec(naked)之后我们不能使用return。经过很多挫折还是没能最终解决,如果有高手知道的话,指点一下,谢谢。今天主要利用LoadLibraryExW过滤特定的dll,以下例子是"hook.dll"。

代码如下:

AntiHook.h:


#ifndef _H_ANTIHOOK_
#define _H_ANTIHOOK_

#include "detours.h"

#pragma comment(lib,"detours")

typedef HMODULE (WINAPI* LoadLibraryExW_t)(LPCWSTR,HANDLE,DWORD);
HMODULE WINAPI NewLoadLibraryExW(LPCWSTR lpLibFileName,HANDLE hFile,DWORD dwFlags);

class CAntiHook
{
public:
 CAn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值