Как использовать LD_PRELOAD, не убивая процесс - PullRequest
0 голосов
/ 05 мая 2020

У меня есть запущенный процесс, который я хочу подключить к определенной функции c.

Основная идея заключалась в том, чтобы убить процесс и запустить его снова с помощью LD_PRELOAD, и это сработает.

Проблема в том, что я не хочу убивать процесс или использовать ptrace (потому что я не хочу, чтобы процесс постоянно находился в состоянии отладки)

Есть ли способ использовать LD_PRELOAD при запуске обработать?

Полагаю, мне нужно загрузить это в память процесса и изменить таблицу импорта.

1 Ответ

1 голос
/ 07 мая 2020

Это невозможно, если вы не можете использовать ptrace. Проблема в том, что, в отличие от PTRACE_POKETEXT, process_vm_writev не может писать на страницы, доступные только для чтения. В современных системах с RELRO и т.п. все, что вы можете перезаписать до достижения sh вашей цели, будет доступно только для чтения после запуска процесса.

...