我正在开发一个OS X应用程序,我想隐藏DTrace的检查。我知道P_LNOATTACH
旗帜,但我读过的所有内容都告诉我,有很多方法可以解决它。有可能吗?
答案 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 article和Ars Technica,如果为进程设置了P_LNOATTACH
标记,Apple的DTrace实现将不会对其执行任何探测。