在OS X 10.11上,ps上的dtruss失败

Dan*_*Dan 7 macos truss dtrace dtruss osx-elcapitan

我试图查看哪个系统调用ps用于获取OS X 10.11(El Capitan)上的进程的命令行,并遇到以下错误:

# dtruss ps -p 43520 -o args

dtrace: failed to execute ps: dtrace cannot control executables signed with restricted entitlements
Run Code Online (Sandbox Code Playgroud)

谷歌搜索结果表明,制作副本ps会让我绕过这个,但这对我不起作用.为什么我不能再dtruss使用任意二进制文件了,有什么方法可以恢复旧的行为吗?

Ken*_*ses 10

该问题与代码签名有关.如果您制作副本然后使用您自己的身份(或者,可能是任何非Apple身份)重新签名,那么dtrace将附加到它就好了.

$ mkdir ~/temp
$ cp /bin/ps ~/temp/
$ codesign -f -s `whoami` ~/temp/ps
$ sudo dtruss ~/temp/ps -p 43520 -o args
Run Code Online (Sandbox Code Playgroud)