如何在Linux虚拟内存系统中尝试访问其他进程的内存

时间:2013-12-26 03:22:09

标签: linux virtual-memory

当我在Linux中学习虚拟内存系统时,我感到很困惑。

由于每个进程都有自己的虚拟地址空间和自己的页表,将其虚拟地址转换为物理地址(我是对吗?),它怎么可能试图错误地访问其他进程的内存?页面表中应该没有条目,对吗?

3 个答案:

答案 0 :(得分:12)

linux进程可以通过特殊文件/ proc / pid / mem访问另一个进程的内存。例如,这是一个小程序调用{​​{1}}:

poke

它会将一个字符串写入另一个进程的内存(可能导致它崩溃)......

答案 1 :(得分:0)

除非特别安排,否则一个进程可以访问的虚拟地址不会修改分配给另一个进程的内存。

答案 2 :(得分:0)

除了procfs之外,还可以使用process_vm_writevprocess_vm_readv

访问其他进程内存

该程序将从给定进程的给定地址中读取给定的字节数(删除了一些错误检查以提高可读性):

file