如何编写在输入到达内核之前拦截输入的程序?
How to write a program that intercepts input before it reaches the kernel?
有这个程序 install-interception.exe,可以从这里下载:http://www.oblita.com/interception.html
它在到达内核之前拦截任何类型的输入。例如,它允许我在 windows 级别上区分多个键盘。无论如何,这是一个非常方便的程序,但我不知道它是如何工作的。这是我能找到的关于源代码的全部内容:https://github.com/oblitum/Interception/issues/5
所以我使用了一些我不明白的东西,我想问问你是否可以指导我如何编写一个 c/c++ 程序来做同样的事情。
编辑:
我想我不妨描述一下我使用这个程序的目的。
使用这个输入拦截器,我编写了一个允许我执行以下操作的程序:
我有一个主键盘和一个宏键盘。主键盘工作正常,但宏键盘有一些额外的功能。
这些功能是通过按下宏键盘上的一个按钮来激活的,什么按钮做什么由程序启动时加载的 XML 文件决定。这些是功能:
- 插入文本
- Enable/disable键盘输入捕获+将输入写入文件
- 复制到剪贴板 1/2/3 等
- 从剪贴板 1/2/3 等粘贴
- 运行程序(例如,启动chrome、运行批处理文件)
- 找到程序的下一个实例 X/Y/Z,并将其显示在屏幕上。例如:找到 "Visual Studio" 的下一个实例并将其放在前台屏幕上。基本上是 Alt-Tab 的替代品。
- 在宏键盘按钮上贴上贴纸,这样我就可以轻松识别每个按钮的功能:D :D
基本上我用拦截API写了这个非常方便的程序,但我不知道输入在传递给API之前是如何被拦截的,我想学习如何,这样我就可以更完整地理解我的程序。
我相信我找到了部分答案:
有用户态,也有内核态。我想我需要一个在内核模式下运行的程序。
https://msdn.microsoft.com/en-us/library/windows/hardware/ff554836(v=vs.85).aspx
我想我会通过阅读和学习以下 3 个教程来理解 install-interception.exe 是如何编程的:
http://www.adlice.com/kernelmode-rootkits-part-1-ssdt-hooks/
http://www.adlice.com/kernelmode-rootkits-part-2-irp-hooks/
http://www.adlice.com/kernelmode-rootkits-part-3-kernel-filters/
我有很多书要读:O
有这个程序 install-interception.exe,可以从这里下载:http://www.oblita.com/interception.html
它在到达内核之前拦截任何类型的输入。例如,它允许我在 windows 级别上区分多个键盘。无论如何,这是一个非常方便的程序,但我不知道它是如何工作的。这是我能找到的关于源代码的全部内容:https://github.com/oblitum/Interception/issues/5
所以我使用了一些我不明白的东西,我想问问你是否可以指导我如何编写一个 c/c++ 程序来做同样的事情。
编辑:
我想我不妨描述一下我使用这个程序的目的。 使用这个输入拦截器,我编写了一个允许我执行以下操作的程序: 我有一个主键盘和一个宏键盘。主键盘工作正常,但宏键盘有一些额外的功能。 这些功能是通过按下宏键盘上的一个按钮来激活的,什么按钮做什么由程序启动时加载的 XML 文件决定。这些是功能:
- 插入文本
- Enable/disable键盘输入捕获+将输入写入文件
- 复制到剪贴板 1/2/3 等
- 从剪贴板 1/2/3 等粘贴
- 运行程序(例如,启动chrome、运行批处理文件)
- 找到程序的下一个实例 X/Y/Z,并将其显示在屏幕上。例如:找到 "Visual Studio" 的下一个实例并将其放在前台屏幕上。基本上是 Alt-Tab 的替代品。
- 在宏键盘按钮上贴上贴纸,这样我就可以轻松识别每个按钮的功能:D :D
基本上我用拦截API写了这个非常方便的程序,但我不知道输入在传递给API之前是如何被拦截的,我想学习如何,这样我就可以更完整地理解我的程序。
我相信我找到了部分答案:
有用户态,也有内核态。我想我需要一个在内核模式下运行的程序。
https://msdn.microsoft.com/en-us/library/windows/hardware/ff554836(v=vs.85).aspx
我想我会通过阅读和学习以下 3 个教程来理解 install-interception.exe 是如何编程的:
http://www.adlice.com/kernelmode-rootkits-part-1-ssdt-hooks/
http://www.adlice.com/kernelmode-rootkits-part-2-irp-hooks/
http://www.adlice.com/kernelmode-rootkits-part-3-kernel-filters/
我有很多书要读:O