python pyhook_pyhook的简单使用

这篇博客介绍了如何通过python的pyhook3和pywin32库来创建键盘和鼠标监控的hook,将事件记录到txt文件中。首先解释了Hook技术的基本原理和Windows API,接着详细说明了安装、卸载Hook的过程以及不同类型的Hook。然后,博主介绍了pyHook3和pywin32这两个Python库,并提供了安装指南。最后,展示了具体的Python代码实现键盘和鼠标事件的监听,当检测到'Q'键时程序退出,并将事件信息写入F://records.txt文件。
摘要由CSDN通过智能技术生成

实验内容:

通过python编程调用windows的api,编写键盘和鼠标监控的hook,将相关信息保存记录到txt文档中。

实验步骤:

1.Hook技术,pyHook3和pywin32简介

1.1 Hook简介

windows应用程序是基于消息驱动的。各种应用程序对各种消息作出响应从而实现各种功能。

hook(钩子)是一种特殊的消息处理机制,它可以监视系统或者进程中的各种事件消息,截获发往目标窗口的消息并进行处理。所以说,我们可以在系统中自定义钩子,用来监视系统中特定事件的发生,完成特定功能,如屏幕取词,监视日志,截获键盘、鼠标输入等等。

钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。Windows消息带了一些程序有用的信息,比如Mouse类信息,就带有鼠标所在窗体句柄、鼠标位置等信息,拦截了这些消息,就可以利用这些信息做出一些功能

每一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程序。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。

系统钩子与线程钩子:

SetWindowsHookEx()函数的最后一个参数决定了此钩子是系统钩子还是线程钩子。

线程钩子用于监视指定线程的事件消息。线程钩子一般在当前线程或者当前线程派生的线程内。

系统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL) 中。系统自动将包含“钩子回调函数”的DLL映射到受钩子函数影响的所有进程的地址空间中,即将这个DLL注入了那些进程。

对于 Hook 技术,可以分为两块,第一块是在 Ring3 层的 Hook,俗称应用层 Hook 技术,另外一块自然是在 Ring0 层得 Hook,俗称为内核层 Hook 技术。

1.2 Hook的windows API

操作系统支持多种类型的钩子,每种类型都提供了它特有的消息处理机制。

对于每种类型的钩子,系统都维护一个各自独立的钩子链,钩子链是一个指向用户提供的回调函数钩子过程的链表指针。

Hook的安装:

HHOOK SetWindowsHookEx{

int idHook,//要安装的钩子的类型

HOOKPPROC lpfn,//钩子过程的指针,拦截到制定系统消息后的预处理过程

HINSTANCE hMod,//应用程序实例的句柄,如果是全局钩子,hInstance是DLL句柄(DllMain中给的模块地址。就是包含HookProc的动态库加载地址。否则给0就可以了,即勾自己。 )

DWORD dwThreadId //要安装钩子的线程id,指定被监视的线程,如果明确指定了某个线程的id就只监视该线程,此时的钩子为线程钩子;如果该参数被设置为0&#

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装pyHook3的完整版,你可以按照以下步骤进行操作: 1. 首先,新建一个名为setup.pyPython文件,文件内容如下: ```python from distutils.core import setup import py2exe setup(console=["monitor.py"]) ``` 2. 在命令行中执行以下命令,将setup.py转换为可执行文件: ```shell python setup.py py2exe ``` 3. 如果在系统上运行时遇到导入错误,建议你只获取导入错误信息,并找到并安装所需的组件,例如pyhook和wxPython。你还可以使用通用的Python库来解决这些问题,该库的位置可能是: 请注意,这些步骤仅提供了安装pyHook3完整版的一种方法,具体的安装步骤可能会因操作系统和环境而有所不同。建议你查阅相关的文档或官方网站以获取更详细的安装指导。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python利用pyHook实现监听用户鼠标与键盘事件](https://blog.csdn.net/InFiNiTeemo/article/details/79641884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [DragonflyRules:与Dragon Naturally Speaking一起使用的命令](https://download.csdn.net/download/weixin_42105816/18938339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值