常规的ptrace反调试都已经烂大街了,这里来个新思路,使用函数指针调用:
#import <dlfcn.h>
int (*ptrace_p)(int _request, pid_t pid, caddr_t _addr, int _data);
void ptrace() {
void * handle = dlopen("usr/lib/system/libsystem_kernel.dylib", RTLD_LAZY);
ptrace_p = dlsym(handle, "ptrace");
if (!ptrace_p) {
exit(0);
return;
}
//通过函数指针调用
ptrace_p(31, 0, 0, 0);
}