是否可以从 DTrace 隐藏 OS X 应用程序?
Posted
技术标签:
【中文标题】是否可以从 DTrace 隐藏 OS X 应用程序?【英文标题】:Is it possible to conceal a OS X app from DTrace? 【发布时间】:2012-05-02 00:59:36 【问题描述】:我正在开发一个 OS X 应用程序,我想隐藏它以防止 DTrace 检查。我知道P_LNOATTACH
标志,但我读过的所有内容都告诉我有办法绕过它。有可能吗?
【问题讨论】:
【参考方案1】:如前所述,您可以将 ptrace(2) 与 PT_DENY_ATTACH 一起使用,但 DTrace 或调试器可以拦截这些调用并禁用它们。此外,您希望您的用户在您的程序中使用 DTrace。如果有问题,让他们帮你诊断。唯一真正专有的软件在受控环境(如设备和云)上执行——一旦你把你的比特交给用户,唯一能理解你在做什么的方式就是时间。
【讨论】:
【参考方案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
【讨论】:
您可以通过指向适用于 10.7.x 的 kext 来改进答案以上是关于是否可以从 DTrace 隐藏 OS X 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Mac OS X 上是不是有 dtrace ustack() 助手?
我可以在 OS X 10.5 上使用 dtrace 来确定我的哪个 perl 子程序导致的内存分配最多吗?