Zoh*_*r81 5 c macos xnu mach vmmap
我想弄清楚VMMAP进程是如何运作的.
在使用dtrace运行此可执行文件后,似乎方法proc_regionfilename提取虚拟内存中每个部分的地址空间.
所以,我深入挖掘,并在文件
libsyscall/wrappers/libproc/libproc.c 下的xnu中找到它的实现.
在函数体中,我看到主调用是proc_pidinfo:
retval = proc_pidinfo(pid, PROC_PIDREGIONPATHINFO, (uint64_t)address, ®info, sizeof(struct proc_regionwithpathinfo));
Run Code Online (Sandbox Code Playgroud)
而proc_pidinfo又调用了__proc_info符号:
int __proc_info(int callnum, int pid, int flavor, uint64_t arg, void * buffer, int buffersize);
Run Code Online (Sandbox Code Playgroud)
但是,这个符号在代码中找不到,我想知道它是如何在预编译,编译,链接或实时创建的.
任何想法我在哪里可以找到它,或者它是如何创建的(我还没有尝试编译内核).
谢谢
proc_info是一个系统调用,因此它的实现是在内核中。10.11.2 版本的源代码可以在这里找到:
http://opensource.apple.com/source/xnu/xnu-3248.20.55/bsd/kern/proc_info.c
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |