首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用d桁架捕获Mach系统调用

使用d桁架捕获Mach系统调用
EN

Stack Overflow用户
提问于 2016-01-31 11:53:22
回答 1查看 454关注 0票数 1

我在vmmap上运行d桁架,它是一个读取另一个远程进程虚拟内存的进程。

我希望命令的输出中会出现一些mach_port系统调用,但无法跟踪任何调用(如mach_vm_read、task_for_pid等)。

我运行的确切命令(请注意,d桁架是OS中dtrace的包装脚本):

代码语言:javascript
复制
sudo dtruss vmmap <pid_of_sample_process>  

vmmap的输入参数只是任何运行过程的pid,我使用的OS版本为10.10 (在10.11中,在苹果产品(如vmmap)上运行d构架时存在权限问题)。

也许有人能告诉我如何识别我要找的系统电话.我应该在d桁架输出中查找显式名称,还是只查找我想要的syscall的通用调用号(遗憾的是,我还没有找到其中的任何一个):

代码语言:javascript
复制
./bsd/kern/trace.codes:0xff004b10       MSG_mach_vm_read
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-31 17:38:39

在我看来,它似乎没有使用Mach API。它使用libproc接口。我看到了许多proc_info()系统,这就是库调用(如proc_pidinfo() )背后的东西。

我用:

代码语言:javascript
复制
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()之类的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35113541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档