博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS程序 防止动态调试和代码注入
阅读量:6710 次
发布时间:2019-06-25

本文共 864 字,大约阅读时间需要 2 分钟。

http://ruixiazun.blog.163.com/blog/static/9068791820141173588694/

iPhone真实的运行环境是没有sys/ptrace.h抛出。ptrace 方法没有被抛出, 可以通过dlopen拿到它。

dlopen: 当path 参数为0是,他会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库. 
#import <dlfcn.h>  
#import <sys/types.h>  
  
typedef 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]));  
    }  
}  

转载于:https://www.cnblogs.com/Keys/p/6170151.html

你可能感兴趣的文章
android捕获ListView中每个item点击事件
查看>>
Zookeeper C API 指南五(同步 API 介绍)
查看>>
IE 10将加强对Flash的支持
查看>>
Maganto错误-Cannot initialize the indexer process的解决方法
查看>>
OpenCV 学习资源整理
查看>>
Apache http强制转为https页面访问(转)
查看>>
C++数据结构之二叉树
查看>>
dbcp、c3p0、jdbc常用连接配置
查看>>
publish_subscribe
查看>>
C语言初学者代码中的常见错误与瑕疵(4)
查看>>
php 递归读取目录
查看>>
C++操作xls
查看>>
开源存储
查看>>
【cs229-Lecture2】Gradient Descent 最小二乘回归问题解析表达式推导过程及实现源码(无需迭代)...
查看>>
php中的 file_get_contents(‘php://input’)
查看>>
C/C++中各种类型int、long、double、char表示范围(最大最小值)
查看>>
linux权限---【600,644,700,755,711,666,777】 - - 博客频道 - CSDN.NET
查看>>
SSAS系列——【04】多维数据(物理体系结构)
查看>>
Android Handler传递参数动态更新UI界面demo
查看>>
[转]在SqlServer 中解析JSON数据
查看>>