iOS应用安全加固方案:逆向工具分析与代码混淆防护详解

7 阅读3分钟

为什么要加固

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类名方法名等重命名为难以理解的字符。

对于更全面的保护,可以考虑使用专业工具如 IpaGuard。IpaGuard 是一款功能强大的 iOS IPA 文件混淆工具,支持无需源代码即可对代码和资源进行混淆加密,兼容 Objective-C、Swift、Flutter、Unity 等多种开发平台。它能够对类、方法、变量等关键代码进行重命名混淆,同时修改资源文件名称和 MD5 值,增加水印保护,从而有效提升应用安全性。此外,IpaGuard 支持本地处理,混淆后可直接重签名安装测试,方便开发者快速验证效果。

iOS应用安全防护框架概述

1、本地数据加密
  对NSUserDefault、sqlite存储文件数据加密,保护账号和关键信息;
2、URL编码加密
  对项目中的URL进行编码加密,防止URL被别人静态解析;
3、网络传输加密
  对客户端网络传输数据加密,防止被别人通过网络接口的拦截获取数据;
4、方法体,方法名混淆
  方法体和方法名混淆之后,保证源码被逆向之后无法解析代码;
5、ObjC类名方法名等重命名为难以理解的字符。加密静态字符串运行时解密
6、程序结构混排 :混淆:程序逻辑结构,方法名,方法实现混淆。
  对应用程序逻辑结构打乱混排,使源码可读性降到最低;
7、借助第三方做APP加固,加固:加入SDK,包括多处调试检测,越狱检测,注入检测,关键代码加密,防篡改等等功能。并提供接口给开发者处理检测结果。
8:加密爱加密:加密:对一些明文数据加密,资源图片加密,静态字符串加密,传输加密,核心方法加密。

4:检测

调试状态检测
越狱环境检测
ObjC的Swizzle检测
任意函数的hook检测
指定区域或数据段的校验和检测
自修复
自修复被篡改的数据和代码段