【教程】 iOS 混淆加固原理篇
摘要
本文介绍了 iOS 应用程序混淆加固的缘由,编译过程以及常见的加固类型和逆向工具。详细讨论了字符串混淆、类名、方法名混淆、程序结构混淆加密等加固类型,并介绍了常见的逆向工具和代码虚拟化技术。
引言
在 iOS 开发中,为了保护应用程序免受逆向工程和反编译的威胁,需要对应用程序进行混淆加固。本文将从混淆加固的缘由、编译过程、加固类型和逆向工具等方面展开讨论。
正文
1. 加固的缘由
在越狱机型上,应用程序的可执行文件容易被获取并进行反编译,导致数据泄露和程序被篡改等安全问题。iOS 应用程序混淆加固的主要缘由包括但不限于:
任意读写文件系统数据
HTTP(S)实时被监测
重新打包 ipa
暴露的函数符号
未加密的静态字符
篡改程序逻辑控制流
拦截系统框架 API
逆向加密逻辑
跟踪函数调用过程(objc_msgSend)
可见视图的具体实现
伪造设备标识
可用的 URL schemes
runtime 任意方法调用
2. 编译过程
使用 Xcode 构建 iOS 程序的编译过程包括预处理、符号化、宏定义展开、语法和语义分析、生成代码和优化等步骤。Objective-C 采用 GCC,而 Swift 采用 swift()作为前端,二者都使用 LLVM 作为编译器后端。
3. 加固类型
iOS 应用程序混淆加固主要包括字符串混淆、类名、方法名混淆、程序结构混淆加密和一些主动保护策略,如反调试、反注入等。
1) 字符串混淆
对应用程序中使用到的字符串进行加密,保证源码被逆向后不能看出字符串的直观含义。
2) 类名、方法名混淆
对应用程序的方法名和方法体进行混淆,保证源码被逆向后很难明白其真正功能。
3) 程序结构混淆加密
对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低。
4) 反调试、反注入等一些主动保护策略
增大破解者调试、分析 App 的门槛。
4. 逆向工具
常见的 iOS 逆向工具包括ipa guard、Hopper、IDA 等,它们可以被用于反汇编、反编译和调试 32 位/64 位英特尔处理器的 Mac、Linux、Windows 和 iOS 可执行程序。
5. OLLVM
OLLVM 是基于 LLVM 进行编写的一个开源项目,主要用于对前端语言生成的中间代码进行混淆。它包含控制流扁平化、指令替换和虚假控制流程等功能,用于增加代码的混淆度。
6. IPA guard
IPA guard 是一个基于 Obfuscator-LLVM 对 Xcode 的适配的工具,用于对 iOS 应用程序进行混淆加固。
7. 代码虚拟化
代码虚拟化是一种基于虚拟机的代码保护技术,通过自定义字节码替换原生指令,并由程序中的解释器来解释执行,以增加程序的保护性和防止恶意代码对系统造成破坏。
总结
本文介绍了 iOS 应用程序混淆加固的原理和常见方法,包括编译过程、加固类型、逆向工具和代码虚拟化技术。通过合理选择加固方法和工具,可以提高 iOS 应用程序的安全性,减少被逆向工程和反编译的风险。
评论