阻止 GDB 依附

作者: 无沣 | 来源:发表于2017-05-06 10:52 被阅读48次

    GDB 是大多数 hackers 的首选,阻止 GDB 依附到应用的常规办法是:

    #importint main(int argc, charchar *argv[])

    {

    #ifndef DEBUG

    ptrace(PT_DENY_ATTACH,0,0,0);

    #endif

    @autoreleasepool {

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));

    }

    }

    但遗憾的是,iPhone 真实的运行环境是没有 sys/ptrace.h 抛出的。虽然 ptrace 方法没有被抛出, 但是不用担心,我们可以通过 dlopen 拿到它。

    dlopen: 当 path 参数为 0 是,他会自动查找

    $LD_LIBRARY_PATH, $DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和当前工作目录中的动态链接库。

    #import#importtypedef 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, charchar *argv[])

    {

    #ifndef DEBUG

    disable_gdb();

    #endif

    @autoreleasepool {

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));

    }

    }

    相关文章

      网友评论

        本文标题:阻止 GDB 依附

        本文链接:https://www.haomeiwen.com/subject/ulpetxtx.html