ptrace头文件不能直接导入app工程,可以直接复制ptrace.h的文件到自己新建的MyPtrace.h中,然后调用
ptrace.h路径:/usr/include/sys/ptrace.h
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "MyPtrace.h"
#import <dlfcn.h>
int main(int argc, char * argv[]) {
/**
反调试
*/
#ifndef PT_DENY_ATTACH
#define PT_DENY_ATTACH 31
#endif
//第一次,通过符号直接调用ptrace
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
ptrace(PT_DENY_ATTACH, 0, 0, 0);
//第二次,通过dlopen,dlsym调用
void *handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = (ptrace_ptr_t)dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH,0,0,0);
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
Xcode运行之后会直接断开连接