Domanda:
Iniezione di thread su OSX
mrduclaw
2013-03-31 06:32:02 UTC
view on stackexchange narkive permalink

Negli anni è stato fatto molto di reverse engineering su Windows portando a ottime funzionalità non documentate, come l'utilizzo di NtCreateThreadEx per iniettare thread tra le sessioni.

Su OSX l'argomento dell'iniezione di thread sembra relativamente inesplorato. Dato che il sistema operativo è così incredibilmente grande, dove posso iniziare a cercare per scoprire le funzionalità che desidero?

Ad esempio, se qualcuno mi chiedesse questo su Windows, mi aspetterei una risposta che mi dicesse per iniziare il reverse engineering di CreateRemoteThread o per iniziare a guardare come il kernel crea i thread utente e indirizzarli in ntoskrnl.exe .

Il [tag: software] è ridondante poiché la maggior parte delle domande qui riguarda il software.
Sembra che ci sia anche un numero significativo di domande relative all'hardware. Se un RE hardware volesse utilizzare questo sito, non sarebbe bello se potesse semplicemente mettere "software" sui tag ignorati ed essere libero da domande come le mie?
Un RE hardware potrebbe anche aggiungere il [tag: hardware] ai suoi tag preferiti. Avrebbe un effetto simile. Pubblica la tua opinione qui -> http://meta.reverseengineering.stackexchange.com/questions/3/how-should-software-questions-be-tagged
@AshRj Punto giusto. Lo aggiusterò in futuro.
Tre risposte:
#1
+11
omghai2u
2013-03-31 06:39:13 UTC
view on stackexchange narkive permalink

Certo, non so molto di OSX, e nemmeno di Linux. Ma suggerirei di guardare il codice sorgente di GDB. GDB in qualche modo è in grado di connettersi ai processi in esecuzione per eseguirne il debug. Immagino che questo fornirebbe, almeno, una funzionalità simile a quella che stai cercando e si dimostrerebbe un buon punto di partenza.

Se stai cercando una chiamata di sistema, sembra che ptrace è come potrebbe farlo GDB. Inoltre, ecco una bella panoramica di come funzionano i debugger.

Aggiornamento :

In realtà sembra che Uninformed abbia scritto un articolo che tratta in qualche modo questo argomento. Nell'articolo discutono:

Molte persone sembrano passare a Mac OS X da uno sfondo Linux o BSD e quindi si aspettano che la syscall ptrace () sia utile. Tuttavia, sfortunatamente, questo non è il caso di Mac OSX. Per qualche motivo empio, Apple ha deciso di lasciare ptrace () incompleto e incapace di fare molto di più che fare un debole tentativo di un meccanismo anti-debug o di un singolo passaggio del processo.

Anche da quello articolo, sembra che thread_create_running potrebbe essere la funzione che stai cercando. Link alla pagina man.

L'articolo Uninformed è davvero fantastico e penso che sia giusto ciò di cui avevo bisogno per iniziare nella giusta direzione. Grazie!
#2
+4
broadway
2013-04-03 12:52:17 UTC
view on stackexchange narkive permalink

Per l'iniezione di OS X, guarderei i progetti mach_star (mach_override e mach_inject)

https://github.com/rentzsch/mach_star

Inoltre, Pin ora ha il supporto per 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

Potresti trovarlo utile: ho finito per scrivere un tutorial su questo di recente, poiché, come noti, la documentazione per questo materiale è sempre così approssimativa e spesso obsoleta.

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



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...