检测并调试关闭调试器

时间:2013-01-25 03:51:12

标签: objective-c clang

新iTunes中一个有趣的功能是它无法接受附加到它上面的调试程序进程(像F-Script这样的削弱工具)这不仅会涉及detection method,而且需要某种过程这要么是检查调试器在运行中附加自身,要么是调试器在尝试连接自身时会发出的入口点方法。此外,它需要一种方法来告诉调试器在没有终止进程的情况下离开(原样)。问题是:怎么样?显然,每X秒对一个调试器进行轮询是低效的,并且不允许它附加到给定进程(像ptrace()这样的覆盖覆盖)似乎非常私密。

1 个答案:

答案 0 :(得分:5)

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

有关详细信息,请参阅Is it possible to conceal a OS X app from DTrace?

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

有许多书籍都有保护Cocoa应用程序的方法,包括检测调试器。一些潜在的头衔浮现在脑海中(我没有仔细检查过这些内容,所以不要假设他们有检测方法):“Mac Hacker's Handbook”,“Hacking and Securing iOS Applications”,“Professional Cocoa Application Security”和 “用于C& C ++的安全编程手册”。

“Mac OS X Internals”和“Mac OS X和iOS Internals”可能会在PT_DENY_ATTACH上显示内容。