C++ 对Apple Kext进行反向工程-重构类

C++ 对Apple Kext进行反向工程-重构类,c++,kernel,reverse-engineering,device-driver,magic-mouse,C++,Kernel,Reverse Engineering,Device Driver,Magic Mouse,你好 我目前正在尝试扩展神奇鼠标的功能。为此,我希望编写一个kext来截取来自多点触控驱动程序AppleMultitouchDriver.kext的事件,并对其进行解释,然后发送新事件或转发实际事件。此方法与所使用的方法类似 我已经创建了一个小测试kext,它可以截取鼠标事件(单击、运动等),这也是需要的 我现在遇到的问题是,我无法截获来自AppleMultitouchDevice和/或AppleMultitouchHIDEventDriver对象的事件,因为它们没有类定义。我需要能够像在鼠标拦

你好

我目前正在尝试扩展神奇鼠标的功能。为此,我希望编写一个kext来截取来自多点触控驱动程序AppleMultitouchDriver.kext的事件,并对其进行解释,然后发送新事件或转发实际事件。此方法与所使用的方法类似

我已经创建了一个小测试kext,它可以截取鼠标事件(单击、运动等),这也是需要的

我现在遇到的问题是,我无法截获来自AppleMultitouchDevice和/或AppleMultitouchHIDEventDriver对象的事件,因为它们没有类定义。我需要能够像在鼠标拦截器和DoubleCommand中那样重新分配回调函数的指针。据我所知,这意味着我需要重建AppleMultitouchDevice类。我已经能够获得对AppleMultitouchDevice对象实例的引用,所以我只需要能够转换它并使用它

既然你有了背景,下面是我的直接问题:

  • 我需要使用什么方法来对kext进行反向工程或重构有问题的类
  • 有哪些计划可以帮助我完成这项工作
  • 你知道有关于这个特定主题的教程或电子书吗
  • 我是否可以在不重建整个类的情况下重新分配回调指针
  • 还有什么我可能错过了,因为我对这件事很陌生

提前感谢您的任何建议或帮助

这有什么帮助吗


我设法找到了我需要的东西。现在所需要的只是时间和努力

苹果公司不为他们的kexts提供资源吗?是的,对大多数人来说。然而,这件事是保密的。我猜他们不想让人们窥探他们所有的专利技术是如何为多点触控工作的。不幸的是,他们不想。我以前见过这个。它使用的方法与我在这里的帖子相同:它使用的是用户空间中的multi-touchsupport.framework。我想在内核空间中编写它,以获得尽可能好的控制。我找到了一个名为IDA Pro的程序。这对于逆向工程非常有用,几乎任何二进制代码都可以。我希望使用该程序,结合GDB/远程内核调试来定位分配回调指针的方法。一旦找到回调指针的偏移量,我/应该/能够通过ASM或C直接寻址该内存来重新分配它。因此,最困难的部分将是跟踪所有方法调用并读取所有程序集以找到该指针偏移量。当操作系统更新移动回调指针的地址时会发生什么情况?我希望能够破解系统键盘驱动程序,将numpad“/”、“*”和“-”视为音量增大/减小/关闭。我发现,虽然可以获取回调,但它可能会随着每次系统更新而改变。这里有一个讨论覆盖系统驱动程序的好链接:事实上,破解键盘驱动程序根本不是问题,因为这都是IOHIKeyboard提供给您的。我在(DoubleCommand)[项目中工作,它在许多版本中都工作得很好。但是,当您没有标题时,您会遇到一个大问题。如果我找到了回调,我必须在每次驱动程序更改时重新找到它。谢谢您的链接!!