может быть, посмотрите здесь: CreateRemoteThread in Linux
Я не знаю более простым способом, описанные там. В Windows у вас есть этот фантастический API, такой как VirtualProtectEx. В Linux вы будете писать .so, например, выполняет pthread_create в функции __attribute__((constructor))
. Затем вы загрузите это .so через механизм LD_PRELOAD.
Следующая лучшая вещь для CreateRemoteThread будет манипулировать основной нитью процесса с помощью API ptrace. Но это предполагает
- Держа нить
- Сохранение его контекст
- аргументы Установочные для pthread_create
- Set IP для pthread_create и выполнить
- Восстановление старого контекста.
Я думаю, что манипулирование правами доступа к памяти также будет включать вызов mprotect из контекста процесса. Как уже упоминалось выше, самый простой способ сделать это не будет, используя ptrace, но используя предварительно скомпилированный общий объект.
Если это не по теме, я больше не знаю, что по теме. –
Вы не должны запрашивать эквивалент Windows '' Foo' в Linux, вы должны объяснить свои цели и мотивацию и спросить, как это сделать в Linux. Нет никаких оснований полагать, что каждая функция в Windows имеет прямой эквивалент в Linux (и наоборот) –
Мои цели и мотивации четко объясняются в конце моего сообщения, я цитирую: «Это нужно сделать .so в запущенном процессе не убивая его ». Я понимаю, что нет никакой причины, что каждая функция в Windows имеет прямой эквивалент в Linux, поэтому я сформулировал вопрос в стиле «да» или «нет». – Alex