
IPA简介
类似于安卓上的APK安装包,IPA文件本质是zip压缩包,包含一个ARM平台可执行文件和音乐、图片等资源文件,可以将.ipa后缀改成.zip查看包内容。
出于对IPA证据的功能性分析鉴定目的,对IPA文件进行证据固定。
IPA类型
在取证和鉴定工作中由于固定方法不同,IPA包含的内容会产生巨大的差异,例如固定的IPA如果没有砸壳解密可执行文件,或者存在一些AppleID信息,后续会产生一些无法修正的问题。
所以现在将不同类型的IPA文件分类并总结固定方法。
类型一 官方IPA包
官方包就是直接从苹果商店下载下来的包,通常情况下会包含Payload、iTunesMetadata.plist、iTunesArtwork、META-INF四种文件,以TikTok为例解压查看包内容。

Payload:里面只有一个以“应用名.app”命名的文件夹,是软件的主程序,这个文件夹在IPA安装时会被移动到/var/containers/Bundle/Application/XXXX-XXX-XX/下,里面的内容很乱,图片视频什么都有。

将文件按大小降序,一般第一个就是可执行文件,它的名字和应用名相同,苹果为了控制数字版权(FairPlay DRM),会将这个文件加密,类似于安卓的加壳。

把它拖到IDA,提示文件已加密。

iTunesMetadata.plist:为了控制数字版权,控制对单个Apple ID重新分发,IPA中最上层目录的iTunesMetadata.plist文件会记录此IPA购买者的身份信息、应用信息等,包括APPLE ID(邮箱手机号)、用户名、应用名、版本号、版本ID等,取证信息量丰富。

iTunesArtwork:应用图标的高清大图,尺寸600x600,后缀添加.png即可查看。

META-INF:元数据?两个二进制文件。
固定方法
适用场景:
1.目标应用没有在应用商店下架,可以正常下载。
2.目标应用已下架但是在AppleID的已购项目中可以找到并且下载。
需要检材:涉案AppleID或者委托方提供的AppleID。
使用工具:iTunes v12.6.5.3,最后一个可以下载应用的版本。
1 | #官方下载地址64位(推荐) |
打开iTunes v12.6.5.3,登录AppleID。

进入应用商店页面

搜索目标应用并且下载

查看资料库文件。

定位IPA位置,在C:\Users\用户名\Music\iTunes\iTunes Media\Mobile Applications底下。

计算一下IPA哈希值,由于IPA中记录了不同AppleID信息,所以不同账号下载的IPA哈希值也不同。
安装方法
爱思助手导入IPA安装,显示类型为苹果正版,主流iPhone都能装上。

注意事项
如此固定的IPA安装后,需要登录固定时用的AppleID才能使用,否则这个IPA没有作用。

所以为了保证账号连续可用,请不要用淘宝买的共享AppleID,由于IPA中存有隐私信息,也不要使用私人AppleID!还需要及时提醒委托方修改涉案AppleID的绑定信息,保证以后可用。
类型二 硬拉IPA包
硬拉版IPA包意思是仅将安装目录/var/containers/Bundle/Application/XXXX-XXX-XX/下的“应用名.app”复制出来,外面套个Payload文件夹,然后压缩成ZIP包,后缀改成IPA。
像爱思助手或者一些商业取证软件可以自动实现上述步骤,前提是手机先越狱,或者让商业取证软件在拉取时自动提权。
固定方法
适用场景:目标应用已经完全不能下载,但是检材手机上安装了还在,并且手机已经越狱。
使用工具:爱思助手
找到爱思助手的备份功能。

备份结果如下

安装方法
爱思助手导入安装。

比对官方包和硬拉包
解压出官方包和硬拉包IPA中的.app目录进行比对,不同之处仅在于硬拉包中的SC_Info目录写入了一些文件。

注意事项
这种方法实现了应用的备份,可以让APP卸载后还能恢复回来。但是很难装到别的手机上,因为不修改IPA的一些文件的话,会有机型和iOS版本限制,并且也需要AppleID存活,有时候装上了也用不了,会频繁闪退。
还有一个缺点,硬拉下来的IPA包的二进制文件是加密的,没办法实现代码分析,经过测试,这种方法是不推荐的,最好不要用,只知道这种类型就好。
类型三 脱壳IPA包
脱壳IPA包和硬拉IPA相比,脱壳IPA包的二进制文件是解密过的,可以进行重新签名安装到其他手机,并且我用trollstore测试安装砸壳IPA包几乎没出现过问题。
解密后的二进制文件可以直接使用IDA分析,操作空间比较大。固定后也不再需要AppleID参与,是我认为比较好的固定方法。
固定方法一
适用场景:
1.目标应用没有在应用商店下架,可以正常下载。
2.目标应用已下架但是在AppleID的已购项目中可以找到并且下载。
使用工具:frida-ios-dump、MacOS的电脑、越狱的iPhone测试手机
1 | #frida-ios-dump代码仓库 |
首先参照公众号上两篇文章越狱iPhone测试手机并安装Frida Server
1 | #《iOS15.0-16.3越狱 (A8-A11)》 |
使用委托方提供的AppleID登陆测试手机的应用商店下载目标应用

去frida-ios-dump代码仓库下载

解压ZIP,进入命令行

安装依赖环境
1 | sudo pip install -r requirements.txt --upgrade |

USB连接iPhone测试机,转发端口
1 | iproxy 2222 22 |

手动打开需要脱壳的APP,开始脱壳
1 | ##./dump.py 应用名 |
固定方法二
适用场景:同上,只是工具不同。
使用工具:CrackerXI
1 | #Cydia插件源地址 |
安装方法
注意事项
总结
取证鉴定中AppStore的应用有很强的时效性,一点风吹草动很有可能会直接导致目标APP突然死亡,所以要把握好固定的时机,一般下架之后App的鉴定难度会增大或者做不了。固定前可以多找几部手机模拟当前情况进行测试,确保固定过程万无一失。提前确定好IPA固定的目的,维护好检材AppleID,达到可持续鉴定的效果。保护好取证鉴定人员隐私,不使用私人AppleID和手机号码,不能涉及任何真实信息。
加密的二进制文件可以用静态脱壳工具Clutch等,通过主动调用iOS解密对二进制解密,或者已知了加密算法对其解密,但是使用条件有点苛刻,我测了很多次都没成功,就放弃了静态砸壳这条路,不好的地方请私信我改正~