购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3.3 进程的虚拟地址空间及其访问

进程的虚拟地址空间(见图2.17)和体系结构有关。64位Linux系统的进程的虚拟地址空间大小为2 64 B。

图2.17 64位Linux的进程的虚拟地址空间

在Linux下,用户可以使用proc文件系统查看进程的虚拟地址空间。proc文件系统是一个伪文件系统,提供了访问内核数据结构的一个接口。

(1)/proc/[pid]/mem:进程的内存镜像,可以通过open()、read()和lseek()函数对该文件进行打开、读和查找操作。

(2)/proc/[pid]/maps包含进程的当前内存镜像以及各个区的访问权限。

下面举例说明proc文件系统的使用,被测的应用源码如Listing 2.22所示。

Listing 2.22 进程虚拟地址空间测试的应用源码loop.c

(1)访问进程空间的脚本文件:其功能是在进程的堆中搜索要查找的字符串,若找到,则用另一字符串进行替换,代码如Listing 2.23所示。

Listing 2.23 读取进程虚拟地址空间的脚本,read-write-heap.py

(2)脚本文件的运行,命令如下:

上述命令的作用是在进程4618的虚拟内存空间中查找字符串“Holberton”,找到后使用“Fun w vm!”进行替换。 3JYMjhpvvCtPqEz5RvXnQfvN02SOdNw0qIET9t7afWEnfBaz5eJlof8dcO0hVWAX

点击中间区域
呼出菜单
上一章
目录
下一章
×