Ho un'app che funziona utilizzando il sandboxing. Come posso eseguirlo senza sandboxing? Supponiamo che io non possa semplicemente ricompilare l'app con sandboxing off.Come posso eseguire un'app OS X sandbox senza sandbox?
risposta
Questo funziona:
$ ditto MySandboxedApp.app MySandboxedApp.backup.app
$ codesign -f -s- MySandboxedApp.app
Nota il segno meno in più in "-s-".
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.
Ho provato a inserire un breakpoint su sandbox_init e non è stato colpito. Pensieri? – Taylor
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. –
Fantastico, funziona con le app AppStore. – Camsoft