Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
400 views
in Technique[技术] by (71.8m points)

一个进程可以修改另一个进程的内存吗?

  1. Linux下运行在用户态的两个进程,一个进程可以修改另一个进程的内存吗?(不考虑共享内存,IPC)
  2. 进程以root运行是否可以,如果可以,具体的操作是怎样的?
  3. Windows我不了解,是否可以?
  4. 如果不可以,那gdb, valgrind的运行原理是怎样的?

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
  1. 可以,典型方法 ptrace, process_vm_writev
  2. 需要权限,处于安全考虑是不能让任意进程访问其他进程的内存地址空间的,例如 process_vm_writev 是需要 root 权限的
  3. Windows 也可以,有类似的 WriteProcessMemory
  4. gdb 用 ptrace, valgrind 用类似 LD_PRELOAD 的机制替换 malloc/free。

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...