【问题标题】:Intercepting input from the OS拦截来自操作系统的输入
【发布时间】:2010-12-22 13:49:13
【问题描述】:
我想在下学期之前通过一个例子来学习,并想尝试一些与操作系统一起工作的东西。
C 程序如何拦截来自操作系统的输入。我能想到的唯一例子是键盘记录器。
如何编写 C 程序以深入操作系统?
这有意义吗?
【问题讨论】:
标签:
c
operating-system
keylogger
【解决方案1】:
在 Linux 上,您可以查看所有键盘的设备节点并记录接收到的事件。
/dev/input/event* 节点提供了一个通用接口——您必须观察其中任何一个与鼠标或键盘相对应的节点。您需要 evdev 内核模块才能使用它。
/usr/include/linux/input.h 头文件包含您需要了解的有关编程接口的大部分内容。根据我的经验,它非常简单易用。
请记住,某些 X 服务器驱动程序会获取其设备节点并阻止所有其他应用程序获取事件,因此您可能必须更改它们的选项或同时使用基于 X 的接口。
我认为这是你在不编写内核模块的情况下在 Linux 上所能达到的程度。
编辑:
您应该意识到每个操作系统都有自己的输入子系统接口。没有跨平台的方法可以做到这一点。你到底想做什么?
【解决方案2】:
基本上取决于操作系统,您需要“挂钩”到操作系统的事件机制中。操作系统中发生了不同的事件,按键就像鼠标点击一样。可以挂钩这些事件并提供一个函数,只要事件发生,操作系统就会调用该函数。
例如see 适用于 Windows