C 拦截来自操作系统的输入

C 拦截来自操作系统的输入,c,operating-system,keylogger,C,Operating System,Keylogger,我想在下学期之前学习一个例子,并想尝试一些与操作系统一起工作的东西 C程序如何截获来自操作系统的输入。我能想到的唯一一个例子就是键盘记录器 如何编程一个C程序来深入操作系统 这有意义吗?基本上取决于操作系统,您需要“钩住”操作系统的事件机制。操作系统中会发生不同的事件,按键就像鼠标单击一样。可以挂接到这些事件中,并提供操作系统在事件发生时调用的函数 例如,对于Windows,基本上取决于操作系统,您需要“钩住”操作系统的事件机制。操作系统中会发生不同的事件,按键就像鼠标单击一样。可以挂接到这些事

我想在下学期之前学习一个例子,并想尝试一些与操作系统一起工作的东西

C程序如何截获来自操作系统的输入。我能想到的唯一一个例子就是键盘记录器

如何编程一个C程序来深入操作系统


这有意义吗?

基本上取决于操作系统,您需要“钩住”操作系统的事件机制。操作系统中会发生不同的事件,按键就像鼠标单击一样。可以挂接到这些事件中,并提供操作系统在事件发生时调用的函数


例如,对于Windows,基本上取决于操作系统,您需要“钩住”操作系统的事件机制。操作系统中会发生不同的事件,按键就像鼠标单击一样。可以挂接到这些事件中,并提供操作系统在事件发生时调用的函数


例如,对于Linux上的Windows,您可以查看所有键盘的设备节点,并记录接收到的事件

/dev/input/event*
节点提供了一个通用的界面-您必须查看与鼠标或键盘相对应的任何节点。您需要
evdev
内核模块才能使用它

头文件包含您需要了解的有关编程接口的大部分信息。根据我的经验,它非常简单明了

请记住,某些X-server驱动程序会抓取其设备节点并阻止所有其他应用程序获取事件,因此您可能需要更改其选项或使用基于X的界面

我认为这是在Linux上不需要编写内核模块就可以做到的

编辑:


您应该意识到,每个操作系统都有自己的输入子系统接口。没有跨平台的方法可以做到这一点。您到底想做什么?

在Linux上,您可以查看设备节点上的所有键盘,并记录接收到的事件

/dev/input/event*
节点提供了一个通用的界面-您必须查看与鼠标或键盘相对应的任何节点。您需要
evdev
内核模块才能使用它

头文件包含您需要了解的有关编程接口的大部分信息。根据我的经验,它非常简单明了

请记住,某些X-server驱动程序会抓取其设备节点并阻止所有其他应用程序获取事件,因此您可能需要更改其选项或使用基于X的界面

我认为这是在Linux上不需要编写内核模块就可以做到的

编辑:


您应该意识到,每个操作系统都有自己的输入子系统接口。没有跨平台的方法可以做到这一点。您到底想做什么?

这是特定于平台的。哪个操作系统?你选择了一个你想关注的操作系统吗?这是特定于平台的。哪个操作系统?你选择了你想关注的操作系统吗?