HOOK的应用一般有3个:
(1)本程序内的钩子(一般用处不大)
(2)全局钩子
(3)其他任意指定线程的钩子
由于最近要做一个关于针对指定应用程序的劫持,在网上看了很多资料,大部分是讲全局钩子的。针对特定程序的钩子,讲得要么不清楚,要么没有给详细的代码,当然,鄙人的水平有限。现在,我就把任意指定程序的钩子创建过程,给一个详细的代码。
本文所用的关键函数是:GetWindowThreadProcessId,FindWindow,SetWindowsHookEx
整体上和创建全局钩子类似,但是多了一个获取线程ID的入口
第一步:
创建动态链接库DLL。用VC来创建DLL,创建Windows应用程序,名称为Hook。方法和孙鑫老师第20课讲的一样。
Hook.cpp(没有h头文件)
<pre class="cpp" name="code">#include <windows.h>
HHOOK g_hMouse=NULL;
HHOOK g_hKeyboard=NULL;
#pragma data_seg("MySec")
HWND g_hWnd=NULL;
#pragma data_seg()
//#pragma comment(linker,"/section:MySec,RWS")
/*HINSTANCE g_hInst;
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to the DLL module
DWORD fdwReason, // reason fo

本文详细介绍了如何使用VC创建DLL动态链接库,并利用GetWindowThreadProcessId、FindWindow和SetWindowsHookEx函数,实现对指定程序如"文档 - 写字板"的HOOK钩子,使得该程序无法响应鼠标消息。通过创建本程序内、全局和指定线程的钩子,实现了对特定应用的劫持功能。
最低0.47元/天 解锁文章
516

被折叠的 条评论
为什么被折叠?



