iOS 应用加固
方案简介
深思数盾 iOS 应用加固通过对 iOS IPA 中的主程序进行加固,有效解决 iOS 应用存在的安全问题,保护应用免受破解、篡改等风险。
温馨提示
建议在 Mac 电脑上对 ios 程序加密
要求IPA主程序编译时需要关掉 bitcode
不支持直接对 ipa 文件加密,您可以解压ipa,对里面的 .app 文件包加密,勾选签名,加密后会重新生成 ipa文件。
加密流程
本文以 helloworld.app 为例。
编译xcarchive包
1、Xcode->TARGETS->Build Setting->Build Options->Debug Information Format选择DWARF with dSYM File选项,目的是编译成xcarchive包内带有dSYM文件,加壳工具解析app时可以解析出函数名称,否则,函数将会只会显示地址;

2、加壳工具暂不支持bitcode,编译时关闭bitcode的编译选项,Xcode->TARGETS->Build Setting->Build Options->Enable Bitcode->no;

3、以上选项配置完后,选择Xcode->Prodcut->Archive进行编译程序;

4、编译成功后进入到Archives页面;

5、选中编译好的程序,右键在Finder里打开该程序;
6、找到编译好的xcarchive,右键显示包内容;
7、进入包内容后,在Products\Applications目录下为待保护的app程序。
加密流程#
1、将程序拖入VirboxProtector界面#
首先找到ios打包出来的应用所在的文件目录,将ios程序打包出来的应用(如:helloworld.app) 直接拖入加壳工具中(支持两种格式的识别,用户可以选择app格式的包文件,也可以直接使用app包中的可执行文件)

2、函数选项-添加函数#
点击按钮函数选项-【添加函数】可以选择要保护的函数
添加函数可以多选,可参考:添加函数的常用操作

可以选择想要保护的函数(代码混淆和代码虚拟化)

注意
将dSYM文件放到app包所在的目录下,可以解析出函数名称;否则,函数将会只会显示地址。xcarchive包无需此操作,加壳工具会自动读取。
dSYM文件放置位置,如图所示:

3、加密选项设置#
输出信息设置:#
输出文件夹:可设置加密后的程序存储的位置及命名
设置选项#
内存校验:可以针对应用程序防篡改
Objective-C 名称混淆:防止 objective-c class-dump dump 出方法名
调试器检测:可以检测调试器,防止动态调试
签名设置#
若勾选启用签名,签名证书选择和Xcode编译xcarchive时的证书一致,则程序保护生成的app默认已签名;
若不勾选启用签名,则程序保护生成的app默认不签名,需自行在对加固后的app手动签名(比如使用codesign命令行、iOS App Signer工具等),签名证书选择也要和Xcode编译xcarchive时的证书一致。
注意
注意:若使保护后的app程序在非越狱手机上安装,需要确保Xcode编译中signing->Team指定的account和VBP界面所选的一致。

4.点击保护选中项目#
选择完成后,单机保护所选项目按钮,等待完成即可。

保护完成后,生成的文件
***.app.ssp:指配置文件,主要存储Virbox Protector界面选择的函数和加密所选的选项,该配置文件和原程序在同目录且名称一致,即Virbox Protector再次保护程序时可不用重新配置;
protected/***.ipa:指加固后的app程序打包成ipa的包;
protected/***.app:指加固后生成的程序;

上架APP Store#
若需上架App Store,将原程序移动备份到其他位置,再将protected/***.app移动到原程序的位置上,不能存在xcarchive包内;
修改完后,在返回Archives页面,点击Distribute APP对程序进行上架。

命令行加壳#
本文以 helloworld.app 为例。
生成 SSP 配置文件#
使用界面工具,设置函数选项、加密选项后,点击【保存所有配置】,即可生成 SSP 配置文件。如果不生成 SSP 文件,则无法对加固后的文件进行签名。

执行命令进行加固#
找到 命令行工具 virboxprotector_con 文件位置:在应用程序中找到 Virbox Protector 2 Trial.app,打开包内容,在/Contents/MacOS/bin目录下就可以找到 virboxprotector_con。
打开终端窗口,进入到“virboxprotector_con”所在的路径,直接输入“virboxprotector_con”运行可查看帮助信息;
Copy
注意事项#
非越狱手机上安装ipa#
【注】这种情况只在个人测试时才会出现这个问题,如果程序正常上架后,在app store里下载,就不会区分手机是越狱还是非越狱。
问题:若加壳时文件签名证书选择和Xcode编译xcarchive时的证书不一致,程序重新签名,如何在非越狱手机上安装程序?
解决1:重新签名时,证书用一致的。
解决2:
1、下载爱思助手,并打开
2、连接设备
3、点击爱思助手的工具箱,选择”IPA签名“,选择使用“Apple ID签名”
4、点击“添加Apple ID”,输入开发者账号,选择设备UDID,点击添加。

4、选择ipa文件,选择对应的Apple ID,点击开始签名
5、签名成功后,点击“打开已签名IPA位置”,可以看到重签后的IPA
6、在非越狱手机上可以安装成功(注:这种情况下签名的ipa只能在该设备ID上安装)。
崩溃信息#
若程序加壳后在手机上运行崩溃,需要将崩溃信息提供给Virbox人员,如何获取崩溃信息?
1、手机连接电脑,保证手机ip地址要和电脑IP地址在同一网段内。
2、打开Xcode ,选择Window->Devices and Simulators选项;

2、点击View Device Logs选项;

3、若手机ip地址要和电脑IP地址在同一网段内,在手机上运行的app崩溃后,日志会自动同步到此页面;

4、选中Type为Crash,点击右键Export log,将该日志保存到本地。
如何用命令给app签名#
1、使用该命令查询电脑上的证书
Copy
2、使用该命令对app进行签名
Copy
如果将app打包成ipa#
1、创建一个文件夹,名称为Payload;
2、将保护后的.app文件放入该文件夹中;
3、将Payload文件夹进行压缩(默认压缩为.zip);
4、将后缀名.zip改名为.ipa;
最后更新于
这有帮助吗?