iOS逆向-ptrace反调试

2019-03-19  本文已影响0人  l富文本l
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运行之后会直接断开连接

上一篇下一篇

猜你喜欢

热点阅读