是否可以从 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

dtrace 影响,监控进程 (OS X)?

Mac OS X 上是不是有 dtrace ustack() 助手?

我可以在 OS X 10.5 上使用 dtrace 来确定我的哪个 perl 子程序导致的内存分配最多吗?

如何在 Mac OS X Leopard 上的 dtrace 中使用热点探针?

如何在 Mac OS X 上构建 DTrace?

无法在 Mac OS X 上通过 jinfo 启用 DTrace 探测