2009-11-29 10 views
14

Grüße!Reverse Engineering ein Apple Kext - Wiederaufbau der Klasse

Ich versuche derzeit, die Funktionalität der Magic Mouse zu erweitern. Um dies zu tun, hoffe ich, einen Kext zu schreiben, der Ereignisse vom Multitouch-Treiber AppleMultitouchDriver.kext abfängt, sie interpretiert und entweder neue Ereignisse versendet oder das eigentliche Ereignis weiterleitet. Dieser Ansatz ähnelt dem von DoubleCommand verwendeten Ansatz.

Ich habe bereits einen kleinen Test Kext erstellt, der die Mausereignisse abfängt (Klick, Bewegung, usw.), die auch benötigt werden.

Das Problem, das ich jetzt habe, ist, dass ich die Ereignisse von den AppleMultitouchDevice und/oder AppleMultitouchHIDEventDriver Objekten abfangen kann, weil es keine Klassendefinition für sie gibt. Ich muss in der Lage sein, den Zeiger auf die Callback-Funktion wie im Maus-Interceptor und wie in DoubleCommand getan. Soweit ich weiß, bedeutet dies, dass ich die AppleMultitouchDevice-Klasse rekonstruieren muss. Ich bin bereits in der Lage, einen Verweis auf die Instanz des AppleMultitouchDevice-Objekts zu bekommen, also muss ich es nur noch verwenden können.

Nachdem Sie nun den Hintergrund haben, hier sind meine direkten Fragen:

  • Welche Methoden kann ich nutzen, um brauchen die kext Reverse Engineering oder die Klassen in Frage zu rekonstruieren?
  • Welche Programme stehen mir zur Verfügung?
  • Gibt es Tutorials oder E-Books, die sich auf dieses spezielle Thema konzentrieren, das Sie kennen?
  • Kann ich den Callback-Zeiger neu zuweisen, ohne die gesamte Klasse zu rekonstruieren?
  • Alles andere habe ich vielleicht verpasst, da ich so neu darin bin.

Vielen Dank im Voraus für jede Beratung oder Unterstützung !!

+0

Liefert Apple die Quellen nicht zu ihren Kexten? –

+0

Ja, für die meisten von ihnen. Dieser wird jedoch privat gehalten. Ich vermute, dass sie nicht wollen, dass die Leute darüber nachdenken, wie all ihre patentierten, proprietären Technologien für Multitouch funktionieren. – Tyler

Antwort

1

Ich habe es geschafft, zu finden, was ich brauchte. Alles was es braucht ist Zeit und Mühe. :)

+1

Möchten Sie mit anderen teilen? – jackrabbit

+0

Ich habe ein Programm namens IDA Pro gefunden. Es ist großartig für das Reverse-Engineering, so ziemlich jede binäre da draußen. Ich hoffe, dieses Programm in Kombination mit GDB/Remote-Kernel-Debuggen zu verwenden, um die Methode zu finden, in der der Callback-Zeiger zugewiesen ist. Sobald ich den Offset des Callback-Zeigers gefunden habe, sollte/kann ich ihn neu zuweisen, indem ich diesen Speicher entweder über ASM oder C direkt adressiere. Der schwierigste Teil wird also alle Methodenaufrufe durchlaufen und alle Assemblys lesen finde diesen Zeigeroffset. – Tyler

+0

Was passiert, wenn ein OS-Update die Adresse des Callback-Zeigers verschiebt? Ich wollte in der Lage sein, den Systemtastaturtreiber zu hacken, um Numpad '/', '*' und '-' als Lautstärke auf/ab/aus zu behandeln. Ich habe festgestellt, dass es zwar möglich ist, den Callback zu greifen, er könnte sich aber mit jedem Systemupdate ändern. –

1

Könnte das helfen?

FingerMgMt

+0

Leider nicht. Ich habe das schon mal gesehen. Es verwendet den gleichen Ansatz wie meine Post hier: http://StackOverflow.com/Questions/1669909/Extending-Functionality-of-Magic-Mouse-Do-i-Need-Akext Es nutzt den MultiTouchSupport. Rahmen, der im Benutzerraum ist. Ich möchte dies im Kernelraum schreiben, um die bestmögliche Kontrolle zu erhalten. – Tyler

Verwandte Themen