2015-10-22 7 views
7

ich versuchte, was zu sehen SYSCALL ps verwendet die Befehlszeile eines Prozesses auf OS X 10.11 (El Capitan) zu bekommen, und lief in den folgenden Fehler:dtruss nicht auf ps auf OS X 10.11

# dtruss ps -p 43520 -o args 

dtrace: failed to execute ps: dtrace cannot control executables signed with restricted entitlements 

Googeln ergab den Vorschlag, dass eine Kopie von ps würde mir erlauben, dies zu umgehen, aber das hat nicht für mich funktioniert. Warum kann ich dtruss nicht mehr auf beliebigen Binärdateien ausführen, und gibt es irgendeine Möglichkeit für mich, das alte Verhalten wiederherzustellen?

Antwort

10

Das Problem hat mit dem Codesignatur zu tun. Wenn Sie eine Kopie erstellen und sie dann mit Ihrer eigenen Identität (oder vermutlich einer Nicht-Apple-Identität) erneut signieren, wird dtrace an sie angeschlossen.

$ mkdir ~/temp 
$ cp /bin/ps ~/temp/ 
$ codesign -f -s `whoami` ~/temp/ps 
$ sudo dtruss ~/temp/ps -p 43520 -o args 
+0

Ja, das ist sinnvoll, da sich der Kommentar im Quellcode auf den Prozess bezieht, der mit eingeschränkten Berechtigungen signiert ist. Das Entfernen der Signatur würde also die Art und Weise ändern, wie diese Logik gehandhabt wird. – TheDarkKnight

4

cannot control executables signed with restricted entitlements

Der Sicherheitsintegritätsschutz ('wurzellos') verhindert nun, dass Dtruss hier funktioniert.

können Sie disable it durch den Wiederherstellungsmodus starten, aber es sieht aus wie dtrace hat zwar unabhängig von dem Zustand der wurzellos blockiert worden, wie in den source code gesehen werden, wenn man für sucht „dtrace nicht kontrollieren können“.

Sie können auch aus den Kommentaren in pcreate sehen:

/* 
    * <rdar://problem/13969762>: 
    * If the process is signed with restricted entitlements, the libdtrace_dyld 
    * library will not be injected in the process. In this case we kill the 
    * process and report an error. 
    */ 
+0

Hat die Deaktivierung tatsächlich für Sie funktioniert? – Glyph

+0

@Glyph, es wurde kein dtrace speziell erstellt, um nicht an Systemprozessen zu arbeiten. Ich habe die Antwort aktualisiert. – TheDarkKnight

Verwandte Themen