【计算机编程社团】如何整蛊你最恨(爱)的人

WAccelerated (加速)
【A+研究所】荣誉会员☆网校制霸
BASIC
713 19 8
发表于:2015-07-17 08:42 [只看楼主] [划词开启]

前言:


嘿嘿,楼主最近在追小说《全职高手》。看到主角大神叶修帮他的老板最恨的人修理了一顿,那个真是太爽了!


于是,楼主最近学了Hook,,嘿嘿,就发了这一贴。。嘿嘿嘿嘿。。。


可以学习完之后把程序发给你最恨的人,解解气。也可以发给你最爱的人,让他受受惊~



语言:

    C++


环境:

    Microsoft Visual Studio 2013


好啦,今天来介绍一个新的WINAPI函数:SetWindowsHookEx


这个函数的作用呢,是把一个回调钩子函数”挂“到指定窗口里,可以使这个钩子处理这个窗口获得的消息

SetWindowsHookEx函数原型:


HHOOK SetWindowsHookEx(
     int idHook// 钩子的类型,即它处理的消息类型
     HOOKPROC lpfn// 钩子子程的地址指针。如果dwThreadId参数为0
// 或是一个由别的进程创建的线程的标识,
// lpfn必须指向DLL中的钩子子程。
// 除此以外,lpfn可以指向当前进程的一段钩子子程代码。
// 钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数。
     HINSTANCE hMod// 应用程序实例的句柄。标识包含lpfn所指的子程的DLL。
// 如果dwThreadId 标识当前进程创建的一个线程,
// 而且子程代码位于当前进程,hMod必须为NULL。
// 可以很简单的设定其为本应用程序的实例句柄。
     DWORD dwThreadId // 与安装的钩子子程相关联的线程的标识符。
// 如果为0,钩子子程与所有的线程关联,即为全局钩子。
      );




既然有安装,就有卸载:UnhookWindowsHookEx


这个函数的作用是卸载指定钩子


再让我们看看钩子回调函数:HookProc

(当然你这个名称可以随便取啦,,你满意就行)

声明如下:

LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)


其中,nCode是Hook代码,一般我们管不着,只要记住它大于等于0时,我们就处理。


wParam,lParam这两个分别是消息带来的两个参数,根据自己的需要获取他们的信息。


我们新建一个Win32项目,然后在WndProc窗口消息回调函数里,在获得WM_CREATE消息时,挂上钩子


也别忘了在WM_DESTROY消息里卸载钩子哦,不然终身不能用键盘



接下来呢,我们就看看这个”挂钩“函数参数的具体情况:

————————————————————————————————————————————

第一个参数写的是钩子处理消息的类型,写完后系统就自动对应钩子的类型然后分配消息。上图的WH_KEYBOARD_LL是处理键盘及系统键的消息;


第二个参数是填写钩子函数的函数地址,我们直接把钩子函数的函数名写进去就行。


第三个是当前窗口的实例。因为win32窗口有这个HINSTANCE,所以直接填了。因为控制台没有,所以本例不用控制台。


第四个参数是写钩子挂到哪个窗口的线程id,写0就是全局钩子

————————————————————————————————————————————


然后呢,来看看我们的钩子函数:

————————————————————————————————————————————

当我们处理的是键盘消息的时候,就可以让结构体PKBDLLHOOKSTRUCT来转换wParam所带来的按键消息


上文也说过,nCode大于等于0时,我们方便处理


然后使用switch来看看wParam的消息对应的是什么消息,然后直接return 1;屏蔽掉


定义PKBDLLHOOKSTRUCT是来判断钩子截获的按键是啥,可以进一步处理,在这里楼主就没有处理啦,各位同学感兴趣可以自己研究下哦~


最后最后,别忘记了还有一个函数:return CallNextHookEx(hKeyBoard, nCode, wParam, lParam);

这个函数是把钩子处理权交给下一个钩子。


(因为这里就我们一个钩子所以哈哈哈哈哈——————)

——————————————————————————————————————————————————


好了,让我们来实战一下:

打开记事本,运行程序

嘿嘿,现在你还能输入abc。下一秒你就不能动啦!~


哈哈,本文到此结束,如果想整蛊的同学,可以试试把鼠标键盘一起hook哦。到时候你看热闹喽~

【计算机编程社,以上资料出自百度】


最后编辑于:2015-07-18 13:21 @ "计算机编程社" 全社团成员
分类: 知识交流
全部回复 (19) 回复 反向排序

  • 8

    点赞

  • 收藏

  • 扫一扫分享朋友圈

    二维码

  • 分享

课程推荐

需要先加入社团哦

编辑标签

最多可添加10个标签,不同标签用英文逗号分开

保存

编辑官方标签

最多可添加10个官方标签,不同标签用英文逗号分开

保存
知道了

复制到我的社团