Как внедрить код в работающий процесс, используя C/C++

Я ищу совет о том, как манипулировать функциями, вводя код непосредственно в память во время выполнения. Цель состоит в том, чтобы в конечном счете запустить запуск внешнего приложения, способного манипулировать запущенными процессами в целях оптимизации. До сих пор я пошел по пути использования GDB для управления памятью, следуя этому руководству:

http://www.codeproject.com/Articles/33340/Code-Injection-into-Running-Linux-Application?fid=1534990&df=90&mpp=10&sort=Position&spc=Relaxed&tid=4678205

Тем не менее, он довольно устарел, и я не могу заставить его работать на 64-битной архитектуре... Буду признателен за любые советы на эту тему. ура

1 ответ

Разрешение этого открывает огромные уязвимости безопасности, поэтому это строго запрещено в любой нормальной среде. В частности, в более новых версиях Linux (и особенно в x86_64) области исполняемой памяти строго отделены от областей, которые можно изменить. Кроме того, современные процессоры не реагируют на изменения кода вне их кэшей и тому подобное. Возможно, ближайшим будет динамическая загрузка разделяемых библиотек.

Этот вид операций является частью работы большинства языков сценариев, таких как Perl или Python.

Другие вопросы по тегам