【发布时间】:2020-05-05 15:37:11
【问题描述】:
我有正在运行的进程,我想挂接特定的功能。
主要想法是终止进程并使用 LD_PRELOAD 再次运行它,然后就可以了。
问题是我不想杀死进程,或者使用ptrace(因为我不想让进程一直处于调试状态)
有什么方法可以在运行过程中使用 LD_PRELOAD?
我假设我需要将 so 加载到进程内存中并更改导入表。
【问题讨论】:
标签: c linux hook ptrace ld-preload
我有正在运行的进程,我想挂接特定的功能。
主要想法是终止进程并使用 LD_PRELOAD 再次运行它,然后就可以了。
问题是我不想杀死进程,或者使用ptrace(因为我不想让进程一直处于调试状态)
有什么方法可以在运行过程中使用 LD_PRELOAD?
我假设我需要将 so 加载到进程内存中并更改导入表。
【问题讨论】:
标签: c linux hook ptrace ld-preload
如果您不能使用ptrace,这通常是不可能的。问题是,与PTRACE_POKETEXT 不同,process_vm_writev 不能写入只读页面。在具有 RELRO 等的现代系统上,您可以覆盖以实现目标的任何内容在进程开始后都将是只读的。
【讨论】: