我尝试过让Brendan Gregg的sshkeysnoop.d在Mac上运行,但遇到了麻烦。有没有可能让它正常工作?如果是这样的话,是怎么做的?
我得到的错误是:
dtrace: failed to compile script ./sshkeysnoop.d: line 40: probe description syscall::exec:return does not match any probes是否可以使用DTrace在Mac上进行任何其他类型的键记录?
发布于 2011-09-17 16:03:04
你可以做几件事来适应像这样的脚本。首先,您可以询问dtrace它有哪些探测点:
$ sudo dtrace -l -f 'syscall::exec*'
ID PROVIDER MODULE FUNCTION NAME
18442 syscall execve entry
18443 syscall execve return其次,您可以跟踪单个进程上的所有syscall,以查看发生了什么。
$ sudo dtruss ssh somewhere 2>dtrussout
Password: (type something here)如果你通过dtrussout查看,你可以看到
read_nocancel(0x5, "a\0", 0x1) = 1 0
read_nocancel(0x5, "s\0", 0x1) = 1 0
read_nocancel(0x5, "d\0", 0x1) = 1 0
read_nocancel(0x5, "f\0", 0x1) = 1 0
read_nocancel(0x5, "\n\0", 0x1) = 1 0有了这些知识,改编脚本就很容易了。
$ diff sshkeysnoop.d{.orig,}
40c40
< syscall::exec:return, syscall::exece:return
---
> syscall::execve:return
51c51
< syscall::open:entry, syscall::open64:entry
---
> syscall::open:entry
58c58
< syscall::open:return, syscall::open64:return
---
> syscall::open:return
68c68
< syscall::read:entry
---
> syscall::read_nocancel:entry
75c75
< syscall::read:return
---
> syscall::read_nocancel:return发布于 2011-09-09 09:33:28
OS X没有syscall::exec DTrace探测器。它确实有一个syscall::execve。类似地,它没有syscall::open64,它也在这个脚本中使用。但是,即使将exec替换为execve并删除open64,脚本也不能正常工作。
发布于 2014-04-11 19:04:23
还要确保使用all选项进行加载
kldload dtraceall而且不仅仅是
kldload dtrace否则syscall将无法加载。
https://stackoverflow.com/questions/7356155
复制相似问题