Câu trả lời:
Bảo vệ tính toàn vẹn hệ thống trong 10.11 có thể bị vô hiệu hóa, mặc dù đó không phải là điều bạn nên làm nhẹ nhàng.
Bạn có thể vô hiệu hóa SIP hoàn toàn bằng cách thực hiện như sau:
csrutil disable
Ngoài ra, bạn có thể bật lại SIP trong khi vẫn cho phép dtrace
hoạt động bằng cách chạy như sau:
csrutil enable --without dtrace
Lưu ý rằng khi làm như vậy bạn sẽ nhận được cảnh báo sau:
Đây là một cấu hình không được hỗ trợ, có khả năng bị hỏng trong tương lai và khiến máy của bạn ở trạng thái không xác định.
Khi bạn khởi động lại, dtrace
sẽ hoạt động như đã làm trong Yosemite.
Sao chép nhị phân vào một thư mục không bị "hạn chế", ví dụ, /tmp
csrutil disable
không làm việc cho dtruss ở một mức độ nào đó. Nhưng như @JJ nói chroot
hoạt động, điều này truyền cảm hứng cho tôi.
Tôi vẫn không biết tại sao điều này hoạt động. Nó có thể có một cái gì đó để làm với "thư mục được bảo vệ", tôi đoán.
Đây là bài kiểm tra:
CC@~ $ csrutil status
System Integrity Protection status: disabled.
CC@~ $ sudo dtruss /bin/echo
dtrace: failed to execute /bin/echo: dtrace cannot control executables signed with restricted entitlements
CC@~ $ cp /bin/echo /tmp
CC@~ $ sudo dtruss /tmp/echo
SYSCALL(args) = return
thread_selfid(0x0, 0x0, 0x0) = 46811 0
csops(0x0, 0x0, 0x7FFF51B6CA20) = 0 0
issetugid(0x0, 0x0, 0x7FFF51B6CA20) = 0 0
shared_region_check_np(0x7FFF51B6A918, 0x0, 0x7FFF51B6CA20) = 0 0
stat64("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x7FFF51B6BEA8, 0x7FFF51B6CA20 = 0 0