我在vmmap上运行d桁架,它是一个读取另一个远程进程虚拟内存的进程。
我希望命令的输出中会出现一些mach_port系统调用,但无法跟踪任何调用(如mach_vm_read、task_for_pid等)。
我运行的确切命令(请注意,d桁架是OS中dtrace的包装脚本):
sudo dtruss vmmap <pid_of_sample_process> vmmap的输入参数只是任何运行过程的pid,我使用的OS版本为10.10 (在10.11中,在苹果产品(如vmmap)上运行d构架时存在权限问题)。
也许有人能告诉我如何识别我要找的系统电话.我应该在d桁架输出中查找显式名称,还是只查找我想要的syscall的通用调用号(遗憾的是,我还没有找到其中的任何一个):
./bsd/kern/trace.codes:0xff004b10 MSG_mach_vm_read发布于 2016-01-31 17:38:39
在我看来,它似乎没有使用Mach API。它使用libproc接口。我看到了许多proc_info()系统,这就是库调用(如proc_pidinfo() )背后的东西。
我用:
sudo dtrace -n 'pid$target::proc_*:entry {}' -c 'vmmap <some PID>'来跟踪正在调用的各种libproc函数。我看到调用proc_name()、proc_pidpath()和proc_pidinfo()来获取目标进程的信息,然后调用proc_regionfilename()获取有关VM区域的信息。
顺便说一下,vmmap不读取其他进程的内存,它只是报告有关VM区域的信息,而不是它们的内容。所以,我不希望看到mach_vm_read()之类的东西。
https://stackoverflow.com/questions/35113541
复制相似问题