您的位置:首页 > 移动开发

iOS安全攻防-阻止lldb对app的依附

2016-10-14 13:49 169 查看
ptrace是一个用于断点调试的工具,取自于linux

使用方法:

int ptrace(int request, int pid, int addr, int data);

其中request为请求类型,当request为31时,会阻止断掉调试

所以我们通过在main函数中调用ptrace来阻止所以的断掉调试,代码如下:

#import
#import

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

void disable_lldb() {
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);
}

int main(int argc, charchar *argv[])
{
#ifndef DEBUG
disable_lldb();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));
}
}


dlopen: 当path 参数为0是,他会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: