可能会有重复:
在OS X 10.5/10.6中检索其自身进程的内存映射 在OS X上,我可以使用
我想知道如何找出当前的保护级别。例如,在Linux上,我可以使用
在OS X 10.5/10.6中检索其自身进程的内存映射 在OS X上,我可以使用
mprotect()
请求将特定页面的内存设置为可读、可写或可执行的某种组合。我想知道如何找出当前的保护级别。例如,在Linux上,我可以使用
cat /proc/$$/maps
找出相同的信息:$ cat /proc/$$/maps
00400000-004db000 r-xp 00000000 fb:00 131145 /bin/bash
006da000-006db000 r--p 000da000 fb:00 131145 /bin/bash
006db000-006e4000 rw-p 000db000 fb:00 131145 /bin/bash
006e4000-006ea000 rw-p 00000000 00:00 0
00df4000-00e55000 rw-p 00000000 00:00 0 [heap]
...
我可以看到主可执行文件(bash
)有5个内存映射范围,其中一个是读/执行的,一个是只读的,其余都是读/写的。
我查阅了所有能找到的man页面和官方API,但在OS X上没有找到相同的信息。我唯一找到的接近方法是使用mincore()
来确定页面是否在核心中。但这还不够,我还想知道当前的权限集合。
是否有任何未公开的方法可以做到这一点?
/usr/include/mach/mach_vm.h
”中的“Mach VM region APIs”,正如第二个最受欢迎的答案所暗示的那样。可惜,提供的链接已经失效,头文件也并不明显。 - mpontillo