2015-10-22 18 views
7

stavo cercando di vedere quali syscall ps utilizza per ottenere la linea di comando di un processo su OS X 10.11 (El Capitan), e corse nel seguente errore:dtruss non riesce su ps su OS X 10.11

# dtruss ps -p 43520 -o args 

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

Googling ha suggerito che fare una copia di ps mi avrebbe permesso di aggirare questo problema, ma questo non ha funzionato per me. Perché non riesco più a eseguire dtruss su binari arbitrari e c'è un modo per ripristinare il vecchio comportamento?

risposta

10

La questione ha a che fare con la firma del codice. Se esegui una copia e poi la firmi di nuovo con la tua identità (o presumibilmente qualsiasi altra identità non Apple), allora lo dtrace si allegherà a esso correttamente.

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

Sì, è logico, poiché il commento nel codice sorgente si riferisce al processo firmato con autorizzazioni limitate, pertanto la rimozione della firma cambierà il modo in cui viene gestita quella logica. – TheDarkKnight

4

cannot control executables signed with restricted entitlements

Security Integrity Protection ('rootless') impedisce ora al dispositivo di operare qui.

Puoi disable it per l'avvio in modalità di recupero, ma sembra che DTrace è specificamente stato bloccato indipendentemente dallo stato di senza radici, come si può vedere nella source code se si cerca "DTrace non può controllare".

È anche possibile vedere dai commenti in Pcreate:

/* 
    * <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

Disattivare effettivamente funziona per voi? – Glyph

+0

@Glyph, non è stato specificamente creato dtrace per non funzionare sui processi di sistema. Ho aggiornato la risposta. – TheDarkKnight