您的位置:威尼斯官方网站 > 威尼斯正规官网 > 我们可以通过dlopen拿到它

我们可以通过dlopen拿到它

发布时间:2019-09-12 06:09编辑:威尼斯正规官网浏览(118)

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

    1. #import <sys/ptrace.h> 3. int main(int argc, charchar *argv[]) 4. { 5. #ifndef DEBUG 6. ptrace(PT_DENY_ATTACH,0,0,0); 7. #endif 8. @autoreleasepool { 9. return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class])); 10. } 11. } 
    

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

    dlopen: 当path 参数为0是,他会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库.

    1. #import <dlfcn.h> 2. #import <sys/types.h> 4. typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data); 5. #if !defined(PT_DENY_ATTACH) 6. #define PT_DENY_ATTACH 31 7. #endif // !defined(PT_DENY_ATTACH) 9. void disable_gdb() { 10. void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW); 11. ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace"); 12. ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0); 13. dlclose; 14. } 16. int main(int argc, charchar *argv[]) 17. { 18. #ifndef DEBUG 19. disable_gdb(); 20. #endif 21. @autoreleasepool { 22. return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class])); 23. } 24. }
    

    --------“不积小流,无以成江海;不积跬步,无以至千里。 ”--------

    (机会永远是留给那些有准备的人) ↓ ↓ ↓

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:我们可以通过dlopen拿到它

    关键词: