iOS 8上的ptrace

ima*_*145 8 ptrace file-not-found ios8

我试图ptrace像这样调用一个函数ptrace(PT_DENY_ATTACH, 0, 0, 0); 但是当我尝试使用#include <sys/ptrace.h>Xcode 导入它时给了我一个错误'sys/ptrace.h' file not found.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

Nik*_* DS 2

这似乎对我有用,并且会阻止附加调试器。我还没有测试 #ifdef OPTIMIZE是否可以在发行版中工作,所以如果您发现任何问题,请告诉我。

//#include <sys/ptrace.h>
#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);
}

int main(int argc, char *argv[]) {

//#ifndef DEBUG => use the following instead.
 #ifdef __OPTIMIZE__
    //ptrace(PT_DENY_ATTACH, 0, 0, 0);
    disable_gdb();
#endif
Run Code Online (Sandbox Code Playgroud)