Tôi có một ứng dụng chạy bằng cách sử dụng hộp cát. Làm thế nào tôi có thể chạy nó mà không có hộp cát? Giả sử tôi không thể biên dịch lại ứng dụng bằng cách tắt hộp cát.Tôi làm cách nào để chạy ứng dụng OS X có hộp cát không có hộp cát?
Trả lời
này hoạt động:
$ ditto MySandboxedApp.app MySandboxedApp.backup.app
$ codesign -f -s- MySandboxedApp.app
Note trừ thêm trong "-S-".
Có nhiều cách làm tất cả các khái niệm giống nhau - làm cho sandbox_init
không có gì. Ví dụ bạn có thể sử dụng gdb
cho điều này, đặt điểm ngắt trên sandbox_init
và trở về từ chức năng ngay lập tức. Hoặc bạn có thể tải trước thư viện chứa một số trống rỗng sandbox_init
với DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES=foo.dylib
trong đó foo.dylib
chỉ chứa int sandbox_init() { return 0; }
.
Lưu ý rằng hộp cát là tự nguyện và nếu bạn chạy một ứng dụng bên ngoài hộp cát như được thiết kế, bạn sẽ làm cho hệ thống của bạn dễ bị tổn thương hơn.
Tôi đã thử đặt điểm ngắt trên sandbox_init và nó không bị tấn công. Suy nghĩ? – Taylor
Tôi đoán chúng ta đang nói về những điều khác nhau sau đó - Tôi đã nói về sandboxing rõ ràng (xem 'sandbox') như được sử dụng bởi OS X, nhưng tôi cho rằng bạn đang nói về sandboxing cửa hàng ứng dụng mà đặc điểm kỹ thuật khác nhau anentirely. –
Tuyệt vời, điều này làm việc một điều trị với các ứng dụng AppStore. – Camsoft