如何防止dll注入

不管LoadLibraryA,LoadLibraryW,LoadLibraryExA,LoadLibraryExW,所以只要hook LoadLibraryExW就可以监视所有的dll加载。

 

值得注意的是,win7 以上系统,LoadLibraryExW函数在KernelBase.dll中,kernel32中的只是个跳板函数。

 

还有一种利用dll的回调方法,会更优雅,下一次介绍,不需要hook任何函数。

简单的示例:

#pragma once

#include "../../../../ComAll/XHook.hpp"

namespace HookLoadLibraryW

{

static HookEnv env;

 

HMODULE WINAPI MyLoad(

__in const WCHAR* lpFileName,

__reserved HANDLE hFile,

__in DWORD dwFlags

)

{

wcout<<lpFileName<<endl;

return NULL;

}

 

 

 

static int32 Hook(){

InitHookEnv(env);

addr_t old=GetProcAddress(GetModuleHandleA("KernelBase.dll"),"LoadLibraryExW") ;

Hook(env,old,MyLoad);

return 0;

}

 

static int32 UnHook(){

UnHook(env);

return 0;

}

 

}

 

欢迎关注 windows驱动编程微信公众号,微信号:driverdevelop

posted on 2015-10-29 00:15  driverdevelop  阅读(3700)  评论(0编辑  收藏  举报

导航