Używam CreateRemoteThread w systemie Windows i chciałbym się dowiedzieć, czy to samo jest możliwe w Linuksie. Czy można to zrobić w Linuksie?CreateRemoteThread in Linux
Odpowiedz
`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
W ten sposób można utworzyć wątek, a nie utworzyć wątek i wprowadzić go do procesu zdalnego. –
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:
- Tworzenie dylib/tak, że zawiera kod, który chcesz wykonać w zdalnym procesie.
- Napisz bardzo prosty kod w zestawie, który ładuje określony plik (głównie kopię i wklej z this link, część 1).
- 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.
jak to jest pytanie C++? –
CreateRemoteThread jest WINAPI, który został użyty w kodzie C++. – CrazyC