2009-11-29 14 views
14

Saluti!Reverse Engineering an Apple Kext - Ricostruzione della classe

Attualmente sto tentando di estendere la funzionalità del Magic Mouse. Per fare questo, spero di scrivere un kext che intercetti gli eventi dal driver multitouch, AppleMultitouchDriver.kext, li interpreti e invii nuovi eventi o inoltra l'evento vero e proprio. Questo approccio è simile all'approccio utilizzato da DoubleCommand.

Ho già creato un piccolo test kext che intercetta gli eventi del mouse (clic, movimento, ecc.) Anche in questo caso.

Il problema che sto avendo ora è che non sono in grado di intercettare gli eventi dagli oggetti AppleMultitouchDevice e/o AppleMultitouchHIDEventDriver perché non esiste una definizione di classe per essi. Devo essere in grado di riassegnare il puntatore alla funzione di callback come faccio nell'intercettore del mouse e come è fatto in DoubleCommand. Per quanto ne so, questo significa che ho bisogno di ricostruire la classe AppleMultitouchDevice. Sono già in grado di ottenere un riferimento all'istanza dell'oggetto AppleMultitouchDevice, quindi ho solo bisogno di essere in grado di lanciarlo e usarlo.

Ora che avete lo sfondo, qui sono le mie domande dirette:

  • Quali metodi ho bisogno per utilizzare al fine di reverse engineering del kext o ricostruire le classi in questione?
  • Quali programmi sono disponibili per aiutarmi in questo sforzo?
  • Ci sono tutorial o e-book incentrati su questo particolare argomento che conosci?
  • È possibile riassegnare il puntatore di callback senza ricostruire effettivamente l'intera classe?
  • Qualcos'altro che possa essermi perso visto che sono così nuovo in questo.

Grazie in anticipo per qualsiasi consiglio o assistenza !!

+0

Apple non fornisce le fonti ai loro kits? –

+0

Sì, per la maggior parte di loro. Questo, tuttavia, è tenuto privato. Immagino che non vogliono che la gente faccia capolino su come tutti i loro tecnici brevettati e proprietari lavorano per il multitouch. – Tyler

risposta

1

sono riuscito a trovare quello che mi serviva. Ora tutto ciò che ci vorrà è tempo e fatica. :)

+1

Cura di condividere con gli altri? – jackrabbit

+0

Ho trovato un programma chiamato IDA Pro. È fantastico per il reverse engineering praticamente tutti i binari là fuori. Spero di usare quel programma, in combinazione con GDB/debugging del kernel remoto per localizzare il metodo in cui è assegnato il puntatore di callback. Una volta trovato l'offset del puntatore di callback, I/should/essere in grado di riassegnarlo indirizzando direttamente quella memoria, tramite ASM o C. Quindi la parte più difficile traccerà attraverso tutte le chiamate di metodo e leggerà tutto l'assembly in trova l'offset del puntatore. – Tyler

+0

Cosa succede quando un aggiornamento del SO sposta l'indirizzo del puntatore di callback? Volevo essere in grado di hackerare il driver della tastiera di sistema per trattare il tastierino numerico '/', '*' e '-' come volume su/giù/spento. Ho scoperto che, sebbene sia possibile catturare la richiamata, potrebbe cambiare con ogni aggiornamento di sistema. –

1

Potrebbe essere di qualche aiuto?

FingerMgMt

+0

Purtroppo no. L'ho già visto prima. Sta usando lo stesso approccio del mio post qui: http://stackoverflow.com/questions/1669909/extending-functionality-of-magic-mouse-do-i-need-a-kext Sta utilizzando il MultiTouchSupport. quadro che è nello spazio dell'utente. Voglio scrivere questo nello spazio del kernel per ottenere il miglior controllo possibile. – Tyler

Problemi correlati