支持iOS14 的静态砸壳工具“Iridium”
Iridium 是基于静态砸壳命令行工具 fouldecrypt 做砸壳开发的图形化工具,使用非常方便,砸壳后能够选择重新封装回IPA,支持Airdrop分享,给逆向开发砸壳带来了很多便利。因为是静态砸壳,可以避免使用动态砸壳工具时一些应用运行时做了越狱检查直接退出的情况。
关于砸壳的原理可以参考这篇文章:https://mp.weixin.qq.com/s/xFHA2tlc6HCLti_ihlrsZA?hmsr=joyk.com&utm_source=joyk.com&utm_medium=referral
安装
安装Iridium需要一部iOS 13.5+越狱手机,我使用的设备是一部 iOS 14.0 iphoneXS,是通过uncOver进行的越狱。
可以通过在github上下载最新版本的.deb包,然后通过scp/iFunBox拷贝到手机上,再ssh登录手机使用 dpkg -i xxx.deb
命令安装。或者直接在Cydia中搜索Iridium安装。
使用
使用非常方便,选择好了需要砸壳的App就会自动进入砸壳页面。
砸壳成功如上图所示,砸壳成功之后我们可以通过AirDrop分享到电脑上继续做分析。
现在我们使用otool工具查看下处理后ipa包是否砸壳成功了。
➜ QVBssidScan.app otool -l QVBssidScan | grep crypt
cryptoff 69632
cryptsize 4096
cryptid 0
可以看到cryptid 为 0,意味着砸壳成功了,现在我们可以通过其他分析工具去分析目标文件了。
异常
我在砸壳其他应用时出现异常了,在有多个目标文件需要砸壳的情况会出现,第一个目标文件砸壳成功,之后的目标文件出错的问题。
异常情况如图所示,提示的是Permission denied: failed to call setuid/setgid异常。查看源码可以定位到这个提示是在 RootMe.m
文件的root_me
方法中。
void root_me(void) {
patch_setuidandplatformize();
setuid(0);
setgid(0);
if (getuid() != 0) {
fprintf(stderr, "Permission denied: failed to call setuid/setgid\n");
exit(EX_NOPERM);
}
}
所以不确定是否是因为,我的iphoneXS设备是不完全越狱带来的问题。有思路的同学可以交流一下~