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

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

可以的,不然你以为win和Linux和Mac下的游戏修改器再搞什么呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题