我想知道在像操作系统这样的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)读取/写入数据/代码部分。