新iTunes中的一个有趣功能是它无法接受附加到它的调试器进程(像F-Script这样的瘫痪工具)这不仅涉及detection method,而且还需要某种类型的进程要么检查中间运行的附加调试器,要么尝试附加自身时调试器发出的入口点方法。另外,它需要一种方法来告诉调试器在不终止进程的情况下离开(原样)。问题是:如何?很显然,每隔X秒轮询一次调试器效率低下,并且不允许它连接到给定进程(像ptrace()这样的重写)看起来非常私密。检测和取消调试器
检测和取消调试器
回答
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
上有一些内容。
+1谢谢,我没有看到。这是你提到我感兴趣的其他方法。似乎他们会知道一件事情就像打破ptrace一样简单。 – CodaFi
我已经添加了一些讨论检测方法的潜在书籍。 – mttrb
回答这个问题让我调查了禁用“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
- 1. 调试Angular2变化检测器
- 2. ASP.Net核心,在控制器中检测调试与不调试
- 3. 检测拖动取消JavaFX
- 4. 取消测试后清理
- 5. Pytest:取消选择测试
- 6. 取消测试(带警告)
- 7. 测试和调试驱动
- 8. 检测编译器和调用
- 9. 检查和调试器,X(C#)
- 10. “等待调试器”消息?
- 11. 使用节点检查器调试茉莉节点测试
- 12. g ++的自动测试器/调试器?
- 13. 如何检测,测量和调试CPU的应变?
- 14. 日志和调试消息
- 15. SQL CLR调试获取“用户取消”
- 16. 在长时间运行的单元测试中协调取消
- 17. 获取单元测试调试
- 18. 检测何时用于调试的Firebug(或任何其他网络调试器)
- 19. 节点检查器调试
- 20. 检测订阅是否自动取消
- 21. 检测CancelIoEx是否同步取消
- 22. iPhone - 检测触摸并取消它们?
- 23. 检测作物的取消事件
- 24. 检测paypal订阅取消登录asp.net
- 25. 在jQuery中检测拖动取消
- 26. 检测用户取消与JS下载?
- 27. 检测范围取消选择
- 28. 测试后无法取消MPI请求
- 29. 取消应用测试订阅
- 30. 取消激活CakePHP测试套件
这不是一个新功能;苹果公司推出这家商店以来iTunes一直是这样的(几乎是十年前的一位好主人)。通常的假设是,苹果公司与音乐发行商签订的合同是逆向工程DRM的障碍。 dtrace的作者在得知它时感到非常恼火:https://blogs.oracle.com/ahl/entry/mac_os_x_and_the –