Question:
Injection de fil sur OSX
mrduclaw
2013-03-31 06:32:02 UTC
view on stackexchange narkive permalink

Une grande partie de l'ingénierie inverse a été effectuée sur Windows au fil des ans, ce qui a conduit à de grandes fonctionnalités non documentées, telles que l'utilisation de NtCreateThreadEx pour injecter des threads dans les sessions.

Sous OSX, le sujet de l'injection de threads semble relativement inexploré. Le système d'exploitation étant si incroyablement volumineux, par où puis-je commencer à chercher pour découvrir les fonctionnalités que je souhaite?

Par exemple, si quelqu'un me posait cette question à propos de Windows, je m'attendrais à ce qu'une réponse me dise pour commencer le reverse engineering de CreateRemoteThread ou pour commencer à regarder comment le noyau crée les threads utilisateur et les pointe vers ntoskrnl.exe .

Le [tag: software] est redondant car la majorité des questions ici concernent le logiciel.
Il semble qu'il existe également un nombre important de questions liées au matériel. Si un RE matériel voulait utiliser ce site, ne serait-il pas bien s'il pouvait simplement mettre du «logiciel» sur ses balises ignorées et être libre de questions comme la mienne?
Un RE matériel pourrait également ajouter le [tag: hardware] à ses balises préférées. Cela aurait un effet similaire. Postez votre opinion ici -> http://meta.reverseengineering.stackexchange.com/questions/3/how-should-software-questions-be-tagged
@AshRj Point équitable. Je vais le réparer à l'avenir.
Trois réponses:
#1
+11
omghai2u
2013-03-31 06:39:13 UTC
view on stackexchange narkive permalink

Certes, je ne connais pas grand chose à OSX, ni même à Linux. Mais je suggérerais de regarder le code source GDB. GDB est en quelque sorte capable de s'attacher aux processus en cours d'exécution afin de les déboguer. J'imagine que cela fournirait au moins une fonctionnalité similaire que vous recherchez et prouverait un bon point de départ.

Si vous recherchez un appel système, il semble que ptrace est comment GDB pourrait le faire. En outre, voici un bon aperçu du fonctionnement des débogueurs.

Mise à jour :

En fait, il semble que Non informé ait écrit un article qui couvre un peu ce sujet. Dans l'article, ils discutent:

Beaucoup de gens semblent passer à Mac OS X depuis un arrière-plan Linux ou BSD et s'attendent donc à ce que l'appel système ptrace () soit utile. Cependant, ce n'est malheureusement pas le cas sur Mac OSX. Pour une raison impie, Apple a décidé de laisser ptrace () incomplet et incapable de faire beaucoup plus que de faire une faible tentative de mécanisme anti-débogage ou une seule étape du processus.

Aussi à partir de cela article, il semble que thread_create_running soit la fonction que vous recherchez. Lien vers la page de manuel.

L'article Uninformed est vraiment génial et je pense que ce dont j'avais besoin pour commencer dans la bonne direction. Merci!
#2
+4
broadway
2013-04-03 12:52:17 UTC
view on stackexchange narkive permalink

Pour l'injection OS X, je regarderais les projets mach_star (mach_override et mach_inject)

https://github.com/rentzsch/mach_star

De plus, Pin prend désormais en charge os x

http://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads

#3
  0
jar
2014-05-08 00:16:16 UTC
view on stackexchange narkive permalink

Vous trouverez peut-être cela utile - j'ai fini par écrire un tutoriel à ce sujet récemment, car, comme vous le remarquez, la documentation sur ce sujet est toujours si sommaire et souvent obsolète.

http://soundly.me/osx-injection-override-tutorial-hello-world/



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...