格式化/打印执行参数

时间:2018-12-17 06:58:50

标签: macos dtrace

我正在尝试从execve调用中打印环境。我是通过以下方式捕获的:

syscall::exec*:entry {
  printf("%i %i %s %s\n", ppid, pid, execname, copyinstr(arg0));
}

但是我似乎无法说服dtrace arg2[0]是可以打印的东西。在这种情况下如何获取envp的内容?

1 个答案:

答案 0 :(得分:1)

应该可以使用 curpsinfo 内置变量,其 pr_envp field来实现。但这并不容易,因为它是数组,并且dtrace不支持循环。您可能可以通过使用著名的newproc.d脚本并用 curpsinfo-> pr_envp 代替 curpsinfo-> pr_argv 来对其进行破解,但是您也应该做一些计数,即this-> argc-也许将其设置为较高的值?无论如何,请检查this question on serverfault的答复和讨论。我认为环境变量也是如此。