Linux下运行在用户态的两个进程,一个进程可以修改另一个进程的内存吗?(不考虑共享内存,IPC)进程以root运行是否可以,如果可以,具体的操作是怎样的?Windows我不了解,是否可以?如果不可以,那gdb, valgrind的运行原理是怎样的?
可以,典型方法 ptrace, process_vm_writev需要权限,处于安全考虑是不能让任意进程访问其他进程的内存地址空间的,例如 process_vm_writev 是需要 root 权限的Windows 也可以,有类似的 WriteProcessMemorygdb 用 ptrace, valgrind 用类似 LD_PRELOAD 的机制替换 malloc/free。
ptrace
,process_vm_writev
process_vm_writev
是需要 root 权限的WriteProcessMemory
ptrace
, valgrind 用类似 LD_PRELOAD 的机制替换 malloc/free。