Salutations!Reverse engineering d'une Apple Kext - Reconstruire la classe
Je suis actuellement tente de prolonger la fonctionnalité de la Magic Mouse. Pour ce faire, j'espère écrire un kext qui intercepte les événements du pilote multitouch, AppleMultitouchDriver.kext, les interprète et distribue de nouveaux événements ou transfère l'événement réel. Cette approche est similaire à l'approche utilisée par DoubleCommand.
J'ai déjà créé un petit kext test qui intercepte les événements de souris (clic, mouvement, etc.), qui seront nécessaires aussi. Le problème que j'ai maintenant est que je suis incapable d'intercepter les événements des objets AppleMultitouchDevice et/ou AppleMultitouchHIDEventDriver parce qu'il n'y a aucune définition de classe pour eux. Je dois être en mesure de réaffecter le pointeur à la fonction de rappel comme je le fais dans l'intercepteur de la souris et comme cela est fait dans DoubleCommand. Pour autant que je sache, cela signifie que j'ai besoin de reconstruire la classe AppleMultitouchDevice. Je suis déjà en mesure d'obtenir une référence à l'instance de l'objet AppleMultitouchDevice, donc je dois juste pouvoir le convertir et l'utiliser.
Maintenant que vous avez le fond, voici mes questions directes:
- Quelles méthodes dois-je utiliser pour désosser le kext ou reconstruire les classes en question?
- Quels programmes sont disponibles pour m'aider dans cet effort?
- Y a-t-il des didacticiels ou des livres électroniques qui traitent de ce sujet particulier que vous connaissez?
- Est-il possible pour moi de réaffecter le pointeur de rappel sans réellement reconstruire la classe entière?
- Autre chose que j'ai peut-être manqué car je suis si nouveau à cela.
Merci à l'avance pour tout conseil ou assistance !!
Apple ne fournit-il pas les sources à leurs kexts? –
Oui, pour la plupart d'entre eux. Celui-ci, cependant, est gardé privé. Je suppose qu'ils ne veulent pas que les gens jettent un coup d'œil sur la façon dont tous leurs techniciens brevetés et propriétaires travaillent pour le multitouch. – Tyler