常规的ptrace反调试都已经烂大街了,这里来个新思路,使用函数指针调用:
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
);
}