是否有可能恢复在Mac OS启动时完成的键盘输入?

时间:2010-01-09 19:11:38

标签: macos input keyboard reverse-engineering startup

我想知道在他的Mac OS启动时是否有可能弄清楚用户正在按什么键?

任何方式都可以。据我所知,没有简单的方法来简单地挂钩应用程序/脚本以开始工作并同时捕获与操作系统一起的击键。但也许有一种方法可以进行某种逆向工程呢?也许正在查看特定的日志文件或类似的东西?

任何结果都可以。基本上我感兴趣的是找出用户在OS启动期间按下/保持的键。它可能是字符串,字符代码或十六进制,并不重要。

更新:在Pekka的建议的指导下,我发现了一个应该完成这项工作的内核扩展。希望,在这个后续问题 - Why this keyboard intercepting kernel extension doesn’t work?得到回答之后,它会这样做。 :)

3 个答案:

答案 0 :(得分:1)

我不是操作系统大师,但我认为非常非常非常难。我不认为像这样的东西会自动记录在任何地方。

我想您必须查看处理startup keys的系统部分是否以某种方式可访问,并且可以扩展为调用您定义的命令。

首先想到的是你编写某种自定义设备驱动程序或启动脚本,它们在启动时加载,并监听按键事件。

答案 1 :(得分:1)

如何处理此问题完全取决于您要检查密钥的boot process中的哪一点。

  • 如果你想早点检查,你唯一的选择是使用EFI(固件)环境 - 也许你可以修改rEFIt来做你想做的事情?
  • 在固件之后,控制传递给boot.efi(PPC Mac上的BootX)。这可能会被替换/黑客攻击,我希望源代码可以作为Darwin的一部分获得,但我不会在快速检查中看到它。
  • 之后,内核加载(您可以构建自己的内核)并使用一组最小的缓存驱动程序(您可以编写驱动程序,但不知道如何将其缓存)。
  • 之后,各种各样的事情会或多或少地发生。正常的驱动程序被加载,/ etc / rc.local运行,/ {System / Library / LaunchDaemons中的launchd items和Library / LaunchDaemons变为活动状态...如果你愿意等到启动过程的这个阶段,你有很多选择。

答案 2 :(得分:0)

它不仅没有记录在任何地方,在启动期间相当长一段时间没有键盘驱动程序。所以从软件的角度来看,在那段时间内键盘根本不存在。