我想知道在 Unix 之类的操作系统中更改子进程的虚拟地址空间是否可行。我想有能力
(a) 加载/卸载共享库
(b) 写入子进程的随机用户空间内存位置(不是共享内存)
我基本上想要对子进程的进程地址空间进行完全控制(想想 windows 95 之类的控制)。
我知道调试器在一定程度上实现了这一点,但是你实现了这一点(要使用的系统调用,关于主题的教程等)?
我想知道在 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)读取/写入数据/代码部分。