首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从源代码中跟踪FreeBSD中的系统调用?

如何从源代码中跟踪FreeBSD中的系统调用?
EN

Stack Overflow用户
提问于 2015-06-13 03:06:32
回答 2查看 723关注 0票数 3

如何从源代码中将系统调用( int 0x80sysenter/syscall的syscall编号和返回值)记录在FreeBSD 10.1 x86_64上?

我知道truss可以完成这项工作,但我需要在每次系统调用期间记录其他信息,比如copyout缓冲区。

我试图定位truss的源代码,但失败了。此外,我试图在amd64_syscall()中跟踪它们,但是与truss的结果相比,结果似乎是不完整的。知道在实现中我应该关心哪些功能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-13 07:24:23

你还没有说明为什么你需要这些。特别是,如果您出于安全目的需要这样做,那么您就做错了。

你失败是什么意思?资料来源:http://bxr.su/FreeBSD/usr.bin/truss/

像这样的工具使用的通用机制称为ptrace (https://www.freebsd.org/cgi/man.cgi?query=ptrace),除其他外,它允许在执行syscalls时停止跟踪线程。

但是,必须注意的是,虽然这样的机制允许您复制所有参数,但其他线程可以在复制前面的args之后,在syscall之前更改它们所指向的内存。如果这与你有任何关系的话,你想使用MAC挂钩。

票数 2
EN

Stack Overflow用户

发布于 2015-06-14 21:33:10

可能不完全是您想要的,但您可能想看看ktrace(1)/kdump(1)实用程序是如何工作的。

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

https://stackoverflow.com/questions/30814675

复制
相关文章

相似问题

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