2012-05-10 17 views

Odpowiedz

-2

`include pthread.h

Int pthread_create (pthread_t * gwint const pthread_attr_t * atr, nieważne * (* start_routine) (void *), pozbawiony * Arg);` kompilacji i z - pthread.

zobaczyć pthread_create man szczegółowo

+2

W ten sposób można utworzyć wątek, a nie utworzyć wątek i wprowadzić go do procesu zdalnego. –

6

Tradycyjny sposób to zrobić na Linux byłoby stworzenie dynamicznej biblioteki (.so) z kodem w nim, a następnie oddzielnie wymusić ładowanie biblioteki w uruchomionej aplikacji . Nie ma jednego punktu kontaktowego, jak to jest z CreateRemoteThread w systemie Windows.

Więc tutaj są podstawowe kroki:

  1. Tworzenie dylib/tak, że zawiera kod, który chcesz wykonać w zdalnym procesie.
  2. Napisz bardzo prosty kod w zestawie, który ładuje określony plik (głównie kopię i wklej z this link, część 1).
  3. Osadź wymieniony moduł ładujący ASM jako ładunek binarny w buforze w pliku/aplikacji drugiego kodu. Tutaj użyjesz ptrace do uruchomienia binarnego ładunku napisanego w kroku 2, co spowoduje, że aplikacja docelowa wywoła _dl_open() na .so utworzonym w kroku 1, który zawiera rzeczywisty kod, który chcesz uruchomić. (Próbka podane w the same link, część 2.)

Jeśli potrzebny jest kod do uruchomienia w osobnym wątku z pompy głównej, należy użyć pthread_create w kodzie w kroku 1.

nadzieję, że ten odpowiada na twoje pytanie. Tak, jest bardziej zaangażowany niż w Windows; ale powinno działać równie dobrze. Ponadto można ponownie użyć tylko całego kodu z kroków 2 i 3 dla przyszłych projektów zdalnego wprowadzania kodu.