बाइनरी को उस निर्देशिका में कॉपी करें जो "प्रतिबंधित" नहीं है, उदाहरण के लिए, /tmp
csrutil disable
कुछ हद तक dtruss के लिए काम नहीं करता है। लेकिन @ जेजे ने कहा कि chroot
काम करता है, इससे मुझे प्रेरणा मिली।
फिर भी मुझे नहीं पता कि यह क्यों काम करता है। यह "संरक्षित निर्देशिका" के साथ कुछ करना हो सकता है, मुझे लगता है।
यहाँ परीक्षण है:
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