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程序。
#
加密流程#
将程序拖入VirboxProtector界面首先找到ios打包出来的应用所在的文件目录,将ios程序打包出来的应用(如:helloworld.app) 直接拖入加壳工具中(支持两种格式的识别,用户可以选择app格式的包文件,也可以直接使用app包中的可执行文件)
#
函数选项-添加函数点击按钮函数选项-【添加函数】可以选择要保护的函数;
可以选择想要保护的函数(代码混淆和代码虚拟化);
注意
将dSYM文件放到app包所在的目录下,可以解析出函数名称;否则,函数将会只会显示地址。xcarchive包无需此操作,加壳工具会自动读取。
dSYM文件放置位置,如图所示:
#
加密选项设置#
输出信息设置输出文件夹:可设置加密后的程序存储的位置及命名
#
设置选项内存校验:可以针对应用程序防篡改
Objective-C 名称混淆:防止 objective-c class-dump dump 出方法名
调试器检测:可以检测调试器,防止动态调试
#
签名设置- 若勾选启用签名,签名证书选择和Xcode编译xcarchive时的证书一致,则程序保护生成的app默认已签名;
- 若不勾选启用签名,则程序保护生成的app默认不签名,需自行在对加固后的app手动签名(比如使用codesign命令行、iOS App Signer工具等),签名证书选择也要和Xcode编译xcarchive时的证书一致。
注意
注意:若使保护后的app程序在非越狱手机上安装,需要确保Xcode编译中signing->Team指定的account和VBP界面所选的一致。
#
点击保护选中项目选择完成后,单机保护所选项目按钮,等待完成即可。
保护完成后,生成的文件
***.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”运行可查看帮助信息;
执行加固命令:virboxprotector_con helloworld.app -o ssp.helloworld.app
#
注意事项#
非越狱手机上安装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、使用该命令查询电脑上的证书
security find-identity -v -p codesigning
2、使用该命令对app进行签名
codesign -fs <证书信息> ***.app
#
如果将app打包成ipa1、创建一个文件夹,名称为Payload;
2、将保护后的.app文件放入该文件夹中;
3、将Payload文件夹进行压缩(默认压缩为.zip);
4、将后缀名.zip改名为.ipa;