Как внедрить код в работающий процесс, используя C/C++
Я ищу совет о том, как манипулировать функциями, вводя код непосредственно в память во время выполнения. Цель состоит в том, чтобы в конечном счете запустить запуск внешнего приложения, способного манипулировать запущенными процессами в целях оптимизации. До сих пор я пошел по пути использования GDB для управления памятью, следуя этому руководству:
Тем не менее, он довольно устарел, и я не могу заставить его работать на 64-битной архитектуре... Буду признателен за любые советы на эту тему. ура
1 ответ
Разрешение этого открывает огромные уязвимости безопасности, поэтому это строго запрещено в любой нормальной среде. В частности, в более новых версиях Linux (и особенно в x86_64) области исполняемой памяти строго отделены от областей, которые можно изменить. Кроме того, современные процессоры не реагируют на изменения кода вне их кэшей и тому подобное. Возможно, ближайшим будет динамическая загрузка разделяемых библиотек.
Этот вид операций является частью работы большинства языков сценариев, таких как Perl или Python.