Answers:
简而言之,在尝试跟踪已请求不跟踪的进程时显示错误。
从技术上讲,该错误不是由iTunes引起的,而是由使用以下代码的禁用跟踪的过程引起的。
ptrace(PT_DENY_ATTACH, 0, 0, 0);
此代码在内核级别在进程上设置标志,从而防止调试和跟踪进程。
做到这一点的最著名的应用程序恰好是iTunes,该应用程序可能发明了该API的DRM,但该API可用于其他进程。我已经看到许多第三方应用程序使用此API。
当然,像所有DRM一样,它可以被破坏。绕过此反跟踪和反调试功能的选项包括使用调试器跳过对内核扩展的API调用,这些内核扩展会将功能修补到内核空间中。
这可能与El Capitan及其系统完整性保护(
csrutil status
)有关,后者可能会影响dtrace
行为。可能的解决方法包括将Mac重新引导至恢复模式(⌘- R在引导时),然后在终端中运行:
csrutil enable --without dtrace
保持启用SIP,但禁用DTrace限制(注意:这是未记录的参数)。
或通过以下方式完全禁用SIP:
csrutil disable # Not recommended.
看到: