2012-05-02 52 views

回答

2

是的,这是可能的。试着在iTunes上运行DTrace;它不起作用。

您必须使用PT_DENY_ATTACH调用ptrace函数。

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/ptrace.2.html

不过,也有围绕它的方式与不同的内核扩展的。谷歌周围,你会发现一些。

10.6 & 10.7:https://github.com/dwalters/pt_deny_attach

嗯,看起来它与10.8打破由于ASLR:Detecting, and Shirking Off, the Debugger

+0

您可以通过指向与10.7.x一起使用的kext来改进答案 – ericg

-2

根据网络上的各种消息,包括Wikipedia's DTrace articleArs Technica,如果P_LNOATTACH标志被设置为一个进程,Apple的DTrace实现将不会对其执行任何探测。

+0

我读过的所有内容都表明有围绕这种保护的方法。这个答案似乎不完整。 – ericg

+2

如果您的代码在其他人的计算机上运行,​​他们将*总是*围绕您可以实施的任何保护措施。数十年来人们一直试图发明完美的数字版权管理,并且他们一致地失败了;你不会做得更好。 –

3

正如指出的那样,你可以使用ptrace的与PT_DENY_ATTACH(2),但是DTrace的还是一个调试器可以拦截这些呼叫并禁用它们。此外,您希望您的用户在您的程序中使用DTrace。如果有问题,让他们帮你诊断。唯一真正的专有软件在家用电器和云环境等受控环境中执行 - 一旦您将用户交给您,您理解您所做的唯一事情就是时间。

相关问题