是否可以使用标准C中定义的函数创建键盘记录器,即在c89或c99中,而不使用编译器提供的API?
答案 0 :(得分:3)
明确的答案是否,只是假设你想知道为什么:
C是根据抽象机来描述的。在没有详细介绍的情况下,它是一台不存在的机器,但任何C实现都必须公开与此抽象机相同的可观察行为。该机器的一些属性是调用“堆栈”(*)和访问线性内存模型的函数。对于托管环境,添加输入和输出流。
抽象机器不包含的内容是具有操作系统的概念(应该可以在尽可能多的设备上实现)或直到C11,任何概念并行执行。即使像键盘这样的具体输入设备也超出了C抽象机的范围,它只知道输入流,而不关心数据的来源。
键盘记录器所需要的是挂钩代码的地方,这可能是用于输入缓冲的OS层,键盘驱动程序甚至是硬件(在旧的C64之类的简单机器上,控制键盘矩阵的IO寄存器)。无论是什么,C抽象机器都无法以与平台无关的方式描述它。
请注意,这个答案远非完整。只是试图给出一个包含必要的关键词的简洁解释,以便对任何感兴趣的人进行详细研究。
(*)这不一定是一个堆栈,它只是一个常见的实现。