钩子太短,请高手加长!
我做了一个全局API钩子,拦截删除文件和重命名文件的操作,但是只能钩住设置钩子的那个程序的操作,请高手帮我看看哪里有错:
//定义全局共享数据段
#pragma data_seg("Shared")
HMODULE hmodDll=NULL;
HHOOK hHook=NULL;
#pragma data_seg()
#pragma comment(linker,"/Section:Shared,rws") //设置全局共享数据段的属性
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//if(sHook)
hmodDll=hModule;
break;
case DLL_PROCESS_DETACH:
UnInstallHook();
break;
}
return TRUE;
}
hHook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,hmodDll,0);
HookAllAPI("kernel32.dll",GetProcAddress(GetModuleHandle("kernel32.dll"),
"DeleteFileW"),(PROC)&H_DeleteFileW,NULL);
HookAllAPI("kernel32.dll",GetProcAddress(GetModuleHandle("kernel32.dll"),
"DeleteFileA"),(PROC)&H_DeleteFileA,NULL);
//MoveFile
HookAllAPI("kernel32.dll",GetProcAddress(GetModuleHandle("kernel32.dll"),
"MoveFileW"),(PROC)&H_MoveFileW,NULL);
HookAllAPI("kernel32.dll",GetProcAddress(GetModuleHandle("kernel32.dll"),
"MoveFileA"),(PROC)&H_MoveFileA,NULL);
//.def文件
LIBRARY APIHook_Dll.dll
EXPORT
InstallHook @1
//安装钩子的应用程序
InstallHook(TRUE,0);//第2个参数是线程ID号,设为0就是全局钩子,否则只钩住本线程.