Изменить виртуальное адресное пространство дочернего процесса

Я хотел бы знать, можно ли изменить виртуальное адресное пространство дочернего процесса в Unix, например, в операционной системе. Я хочу иметь возможность

(a) Загрузка/выгрузка общих библиотек

(b) Запись в произвольные области памяти пользовательского пространства дочернего процесса (не разделяемая память)

Я в основном хочу полный контроль (думаю, Windows 95 как контроль) над адресным пространством процесса дочернего процесса.

Я знаю, что отладчики достигают этого в определенной степени, но достигаете ли вы этого (используемые системные вызовы, учебные пособия по предмету и т. д.)??


person qwrty    schedule 12.12.2012    source источник


Ответы (1)


Вам нужно изучить ptrace.

 ptrace() provides tracing and debugging facilities.  It allows one
 process (the tracing process) to control another (the traced process).

Вы можете использовать PTRACE_ATTACH для запуска трассировки, PTRACE_GETREGS (SETREGS) для получения/установки регистров, PTRACE_PEEKUSER (POKEUSER) для чтения/записи пользовательских данных и PTRACE_PEEKDATA (POKEDATA) для чтения/записи данных/разделов кода.

person perreal    schedule 12.12.2012