2012-02-20 10 views

risposta

7

Questo funziona:

$ ditto MySandboxedApp.app MySandboxedApp.backup.app 
$ codesign -f -s- MySandboxedApp.app 

Nota il segno meno in più in "-s-".

+0

Fantastico, funziona con le app AppStore. – Camsoft

0

Ci sono molti modi in cui tutti concettualmente fanno la stessa cosa: rendere sandbox_init un no-op. Ad esempio è possibile utilizzare gdb per questo, impostare il punto di interruzione su sandbox_init e tornare immediatamente dalla funzione. Oppure puoi precaricare una libreria contenente uno sandbox_init vuoto con DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES=foo.dylib dove foo.dylib contiene solo int sandbox_init() { return 0; }.

Si noti che il sandboxing è volontario e se si esegue un'app all'esterno di una sandbox come progettato si rende il sistema più vulnerabile.

+0

Ho provato a inserire un breakpoint su sandbox_init e non è stato colpito. Pensieri? – Taylor

+0

Immagino che stiamo parlando di cose diverse allora - stavo parlando di sandboxing esplicito (vedi 'man sandbox') come usato da OS X, ma suppongo che tu stia parlando della sandboxing dell'app store che ha specifiche completamente diverse. –