2013-01-25 31 views
2

新iTunes中的一个有趣功能是它无法接受附加到它的调试器进程(像F-Script这样的瘫痪工具)这不仅涉及detection method,而且还需要某种类型的进程要么检查中间运行的附加调试器,要么尝试附加自身时调试器发出的入口点方法。另外,它需要一种方法来告诉调试器在不终止进程的情况下离开(原样)。问题是:如何?很显然,每隔X秒轮询一次调试器效率低下,并且不允许它连接到给定进程(像ptrace()这样的重写)看起来非常私密。检测和取消调试器

+0

这不是一个新功能;苹果公司推出这家商店以来iTunes一直是这样的(几乎是十年前的一位好主人)。通常的假设是,苹果公司与音乐发行商签订的合同是逆向工程DRM的障碍。 dtrace的作者在得知它时感到非常恼火:https://blogs.oracle.com/ahl/entry/mac_os_x_and_the –

回答

5

iTunes正在呼叫ptrace(PT_DENY_ATTACH),它设置P_LNOATTACH标志,该标志阻止调试程序(以及其他进程,例如F-Script和DTrace)附加到进程。

请参阅Is it possible to conceal a OS X app from DTrace?了解更多信息。

如果iTunes也在积极使用检测方法来识别调试器,我不会感到惊讶。苹果竭尽全力保护iTunes中的DRM。

有很多书籍都有保护Cocoa应用程序的方法,包括检测调试器。想到一些潜在的标题(我没有仔细检查过这些内容,所以不要假设它们有检测方法):“Mac黑客手册”,“黑客和保护iOS应用程序”,“专业可可应用程序安全性”和 “用于C++的安全编程手册”& C++“。

“Mac OS X内部”和“Mac OS X和iOS内部”可能在PT_DENY_ATTACH上有一些内容。

+0

+1谢谢,我没有看到。这是你提到我感兴趣的其他方法。似乎他们会知道一件事情就像打破ptrace一样简单。 – CodaFi

+0

我已经添加了一些讨论检测方法的潜在书籍。 – mttrb

+0

回答这个问题让我调查了禁用“P_LNOATTACH”进程标志的内核模块。我试图将模块更新到Mountain Lion,最终由于写入受保护的内存而失败,但我确实解决了由内核地址空间布局随机化创建的问题。有关详情的博客文章可在以下网址找到:http://www.blendedcocoa.com/blog/2013/02/16/failing-to-update-the-pt_deny_attach-kernel-module-for-mountain-lion/ – mttrb