更改子进程的进程虚拟地址空间



我想知道在像操作系统这样的Unix中更改子进程的虚拟地址空间是否可以。我想有能力

(a) 加载/卸载共享库

(b) 写入子进程的随机用户空间内存位置(非共享内存)

我基本上想要完全控制(认为Windows 95类似控制)子进程的进程地址空间。

我知道调试器在一定程度上实现了这一点,但是您是否实现了(要使用的系统调用,有关主题的教程等)?

你需要研究 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)读取/写入数据/代码部分。

最新更新