首页 > 移动平台 > 详细

ios 阻止GDB依附

时间:2014-04-16 10:20:20      阅读:547      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣
  1. #import <sys/ptrace.h>   
  2.    
  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. }   
bubuko.com,布布扣

 

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

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

bubuko.com,布布扣
  1. #import <dlfcn.h>   
  2. #import <sys/types.h>   
  3.    
  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)   
  8.    
  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(handle);   
  14. }   
  15.    
  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. }   
bubuko.com,布布扣

 

ios 阻止GDB依附,布布扣,bubuko.com

ios 阻止GDB依附

原文:http://www.cnblogs.com/tinkl/p/3667580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!