是否可以从DTrace隐藏OS X应用程序?

时间:2012-05-02 00:59:36

标签: macos dtrace

我正在开发一个OS X应用程序,我想隐藏DTrace的检查。我知道P_LNOATTACH旗帜,但我读过的所有内容都告诉我,有很多方法可以解决它。有可能吗?

3 个答案:

答案 0 :(得分:3)

如上所述,您可以将ptrace(2)与PT_DENY_ATTACH一起使用,但DTrace或调试器可以拦截这些调用并禁用它们。此外,您希望您的用户在您的程序上使用DTrace。如果出现问题,请让他们帮助您进行诊断。唯一真正专有的软件在诸如设备和云等受控环境中执行 - 一旦您向用户提供了您的位,唯一能理解您正在做的事情的就是时间。

答案 1 :(得分:2)

是的,这是可能的。尝试对iTunes运行DTrace;它没有用。

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

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

然而,有各种方法可以解决各种kext问题。谷歌周围,你会发现其中一些。

适用于10.6& 10.7:https://github.com/dwalters/pt_deny_attach

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

答案 2 :(得分:-2)

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