为什么要加固
引用:iOS APP安全加固方案(一、代码混淆CodeObfuscation)
1:iOS应用逆向常用工具
Reveal
Cycript
Class-dump
Keychain-Dumper
gdb
iNalyzer
introspy
Fishhook
removePIE
IDA pro or Hopper
snoop-it
iDB
Charles
SSL Kill Switch
2:裸奔app的安全隐患
一部越狱的iOS设备,外加上述的逆向工具,给裸奔的iOS应用程序带来哪些威胁呢?
任意读写文件系统数据
HTTP(S)实时被监测
重新打包ipa
暴露的函数符号
未加密的静态字符
篡改程序逻辑控制流
拦截系统框架API
逆向加密逻辑
跟踪函数调用过程(objc_msgSend)
可见视图的具体实现
伪造设备标识
可用的URL schemes
runtime任意方法调用
……
3:iOS应用安全防护开源工具
ios-class-guard(代码混淆工具)
ios-class-guard是对抗class-dump的利器,作用是将ObjC类名方法名等重命名为难以理解的字符。
iOS应用安全防护框架概述
1、本地数据加密
对NSUserDefault、sqlite存储文件数据加密,保护账号和关键信息;
2、URL编码加密
对项目中的URL进行编码加密,防止URL被别人静态解析;
3、网络传输加密
对客户端网络传输数据加密,防止被别人通过网络接口的拦截获取数据;
4、方法体,方法名混淆
方法体和方法名混淆之后,保证源码被逆向之后无法解析代码;
5、ObjC类名方法名等重命名为难以理解的字符。加密静态字符串运行时解密
6、程序结构混排 :混淆:程序逻辑结构,方法名,方法实现混淆。
对应用程序逻辑结构打乱混排,使源码可读性降到最低;
7、借助第三方做APP加固,加固:加入SDK,包括多处调试检测,越狱检测,注入检测,关键代码加密,防篡改等等功能。并提供接口给开发者处理检测结果。
8:加密爱加密:加密:对一些明文数据加密,资源图片加密,静态字符串加密,传输加密,核心方法加密。
4:检测
调试状态检测
越狱环境检测
ObjC的Swizzle检测
任意函数的hook检测
指定区域或数据段的校验和检测
自修复
自修复被篡改的数据和代码段