为什么要加固

引用: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检测
指定区域或数据段的校验和检测
自修复
自修复被篡改的数据和代码段