2012-05-10 7 views
8

Ich verwende CreateRemoteThread in Windows und würde gerne wissen, ob das Gleiche unter Linux möglich ist. Ist es möglich, dies in Linux zu tun?CreateRemoteThread in Linux

+0

Wie ist das eine C++ Frage? –

+0

CreateRemoteThread ist eine WINAPI, die in C++ - Code verwendet wurde. – CrazyC

Antwort

-2

`#include pthread.h

pthread_create int (* pthread_t Gewinde, const pthread_attr_t * attr, void * (* start_routine) (void *), void * arg);` Kompilieren und Linken mit - Pthread.

siehe man pthread_create zum Detail

+2

So erstellen Sie einen Thread, erstellen keinen Thread und injizieren ihn in einen Remote-Prozess. –

6

Der traditionelle Weg, dies auf Linux zu tun wäre, eine dynamische Bibliothek (.so) mit Ihrem Code in ihm zu erstellen, zwingt dann separat das Laden der Bibliothek in die laufenden Anwendung . Es gibt keine One-Stop-Shop, wie es mit CreateRemoteThread unter Windows ist.

Also hier sind die grundlegenden Schritte:

  1. eine dylib erstellen/so, dass Sie den Code enthält wollen in dem Remote-Prozess auszuführen.
  2. Schreiben Sie einige sehr einfachen Code in Assembly, die die angegebene so Datei lädt (hauptsächlich Kopieren und Einfügen von this link, Teil 1).
  3. Betten Sie den Loader ASM als binäre Payload in einen Puffer in einer zweiten Codedatei/App ein. Hier verwenden Sie ptrace, um die in Schritt 2 geschriebene binäre Nutzlast auszuführen. Dadurch wird die Zielanwendung aufgerufen, _dl_open() für die in Schritt 1 erstellte .so aufzurufen, die den tatsächlichen Code enthält, den Sie ausführen möchten. (Probe in the same link gegeben, Teil 2.)

Wenn Sie Ihren Code müssen in einem separaten Thread von der Hauptpumpe laufen, dann sollten Sie pthread_create im Code in Schritt verwenden 1.

Hope Diese beantwortet deine Frage. Ja, es ist komplizierter als unter Windows. aber es sollte genauso gut funktionieren. Außerdem können Sie nahezu den gesamten Code aus den Schritten 2 und 3 für zukünftige Remote-Code-Injection-Projekte wiederverwenden.