zoukankan      html  css  js  c++  java
  • ios 阻止GDB依附

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

      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. }   

    但遗憾的是,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>   
      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. }   
  • 相关阅读:
    Stm32设置串口300波特率
    STM32F103ZET6移植FreeRTOS过程
    什么时候该用裸机?什么时候该用RTOS?
    又到了立flag时间
    关于掉电数据保存的心得
    一个教训
    下个月回国给自己定目标
    GPRS模块/4G开发过程
    ftp登陆失败,check pass; user unknown
    python深浅拷贝
  • 原文地址:https://www.cnblogs.com/tinkl/p/3667580.html
Copyright © 2011-2022 走看看