繁体   English   中英

在iOS上禁用调试会话-有用吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM