Пара вещей, которые вы можете сделать, чтобы адаптировать такие сценарии. Во-первых, вы можете спросить dtrace
, какие точки зондирования у него есть:
$ sudo dtrace -l -f 'syscall::exec*'
ID PROVIDER MODULE FUNCTION NAME
18442 syscall execve entry
18443 syscall execve return
Во-вторых, вы можете отслеживать все системные вызовы одного процесса, чтобы увидеть, что происходит.
$ 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
person
Scott Lamb
schedule
17.09.2011