¡Saludos!Ingeniería inversa y Apple Kext - Reconstruyendo la clase
Actualmente estoy intentando extender la funcionalidad del Magic Mouse. Para hacer esto, espero escribir un kext que intercepte eventos del controlador multitáctil, AppleMultitouchDriver.kext, los interprete y despache eventos nuevos o reenvíe el evento real. Este enfoque es similar al enfoque utilizado por DoubleCommand.
Ya he creado una pequeña prueba kext que intercepta los eventos del mouse (clic, movimiento, etc.) ya que también será necesario.
El problema que estoy teniendo ahora es que no soy capaz de interceptar los eventos de los objetos AppleMultitouchHIDEventDriver AppleMultitouchDevice y/o porque no hay una definición de clase para ellos. Necesito poder reasignar el puntero a la función de devolución de llamada como lo hago en el interceptor del mouse y como se hace en DoubleCommand. Hasta donde yo sé, esto significa que necesito reconstruir la clase AppleMultitouchDevice. Ya puedo obtener una referencia a la instancia del objeto AppleMultitouchDevice, así que solo necesito poder usarlo.
Ahora que tiene el fondo, aquí están mis preguntas directas:
- ¿Qué métodos necesito para utilizar con el fin de alterar el diseño del kext o reconstruir las clases en cuestión?
- ¿Qué programas están disponibles que me ayudarán en este esfuerzo?
- ¿Hay algún tutorial o libro electrónico que se centre en este tema en particular que conozca?
- ¿Puedo reasignar el puntero de devolución de llamada sin reconstruir toda la clase?
- Cualquier otra cosa que haya echado de menos, ya que soy muy nuevo en esto.
Gracias de antemano por cualquier consejo o ayuda !!
¿Apple no suministra las fuentes a sus kexts? –
Sí, para la mayoría de ellos. Este, sin embargo, se mantiene privado. Supongo que no quieren que la gente se fije en cómo todos sus técnicos patentados y propietarios trabajan para multitouch. – Tyler