[英]Disabling debug sessions on iOS - is that useful?
我最近浏览了这篇文章( http://www.splinter.com.au/2014/09/16/storing-secret-keys/ ),该文章讨论了iOS上的混淆。 我引用:
为了在某种程度上减轻破解者用调试器(LLDB或GDB)攻击您的应用程序的风险,您可以在应用程序中插入一些代码,使其在检测到调试器连接后立即崩溃。 iTunes应用程序使用此技术,您可以在此处阅读有关此技术的信息。
这是通过在main()
调用以下代码来实现的
#import <dlfcn.h>
#import <sys/types.h>
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif // !defined(PT_DENY_ATTACH)
void disable_gdb() {
void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}
我知道这些代码行在将调试器附加到进程时会使调试器崩溃,但是它如何实现此行为?
此外,这是否会以任何方式损害应用程序的稳定性?
似乎已经在OS X上回答了类似的问题: 实现PT_DENY_ATTACH反盗版代码 。
TL; DR-正如Jim Ingham在评论中指出的那样,这是浪费时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.