2014-12-16 7 views
6

La mia app OS X è stata decifrata modificando l'eseguibile principale. È stato firmato con un ID sviluppatore valido.OS X, l'applicazione mal codificata ancora lanciata senza avvisi

Mi aspettavo alcuni avvisi all'avvio di questa versione di crack su un'installazione OS X predefinita in quanto il codesign non è più valido. Sono sorpreso che venga avviato senza problemi con la regola predefinita GateKeeper "App Store o solo convalidato"

Perché OS X lancia ancora questa app non valida senza alcun avviso come "Questa app è danneggiata"? C'è qualche modifica che devo fare nel mio codesign in modo che gli utenti debbano almeno modificare la regola GateKeeper su "Everywhere" quando si avvia questo crack?

$ spctl -a -t exec -vv CrackedApp.app/ 
CrackedApp.app/: invalid signature (code or signature have been modified) 

$ codesign --verify --deep --verbose=4 CrackedApp.app/ 
CrackedApp.app/: invalid signature (code or signature have been modified) 
In architecture: x86_64 
+0

È coinvolto un installatore? Ho scoperto che OS X lascerà felicemente un'app corrotta tramite GateKeeper, se l'app è stata originariamente installata tramite un programma di installazione con firma del codice. È come se si preoccupasse solo della firma del codice dell'app se NON fosse stato utilizzato un programma di installazione. Questo sembra strano, ma posso davvero riprodurre questo comportamento. Non sono sicuro se è correlato a ciò che stai vedendo. – whiskeyspider

+0

Nessun installer coinvolto, l'app arriva in un file zip. Non viene consegnato tramite App Store. – Tom

risposta

1

Ricordate che GateKeeper è efficace solo quando viene avviata un file con il set quarantine attribute. I file scaricati direttamente tramite Safari, Mail, Messaggi e altri software Apple impostano automaticamente l'attributo di quarantena. Dopo aver fatto clic su "Sei sicuro di volerlo aprire?" alert, il flag di quarantena viene cancellato e GateKeeper non viene più consultato. Se si desidera l'equivalente di un controllo GateKeeper ogni volta che si esegue l'applicazione, è necessario implementare il proprio controllo della firma del codice statico utilizzando un'API come SecStaticCodeCheckValidity. Ovviamente, se le persone stanno già modificando il tuo eseguibile, allora potrebbero anche modificarlo per aggirare questo controllo aggiuntivo della firma del codice.