安全性

# 使用国密加密

## 防止动态调试和代码注入

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]));  

    }  

}  

## 防止重签名

## 防止动态库注入

## 代码混淆

代码混淆就是把易读的类名、方法名替换成不易读的名字。常用的方法有宏替换和脚本替换。

比如本来方法名为:- (void)loadNetData; 进行代码混淆后,用class-dump导出头文件后会显示成修改后的方法名:- (void)showxhevaluatess;

## 安全键盘

## 接口信息进行加密,用户信息加密储存

## 检测tweak

可以检测/Library/MobileSubstrate/DynamicLibraries 下的plist 文件里是否包含自己app的bundle id。如果包含,可以进行限制app的功能、提示该手机不安全 等。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容