试水ios-一次过闪退记录

admin 2022年4月9日01:27:38评论166 views字数 1180阅读3分56秒阅读模式

前言

上次写文章还是2021年,一下就一年过去了,最近挖洞有点累,研究了一手ios的应用,为后面挖洞先未雨绸缪下。踩了不少坑,但是还是学到不少东西,简单记录下一个app从闪退到”基本“能进行调试的过程。

背景

之前有安排过测试这个企业内部的办公app,移动端安卓,ios都有,pc端同样也有win和osx的。之前搞不定,这次继续硬着头皮搞。

测试环境

ipx ios 13.6 已越狱
xcode 10.x
可能会有问题,需要去GitHub下载对应的设备支持文件(你高版本xcode没关系)。
放到下面的目录:

  1. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

还有问题就谷歌吧。

开始

从appstore中下载该应用,直接点开发现闪退(意料之中)。
要去分析肯定第一步是要砸壳(应用商店下载的都有壳),尝试直接从cydia安装CrackerXI来砸壳,并不行。还是老老实实用frida砸壳,好在没有什么别的问题。

试水ios-一次过闪退记录

看一下砸壳以后的二进制文件,已经没有壳了。看文件名像是企业微信。

试水ios-一次过闪退记录

真机调试

完成上面两步,开始尝试真机调试(肯定还不能调,有检测)。
安装monkeyDev,创建项目,真机运行。
让它跑,到断下来。

试水ios-一次过闪退记录

查看堆栈调用信息,一眼能看到这个checkEnv,它有问题。

试水ios-一次过闪退记录

看他的调用应该是在framework,找到它ida慢慢分析它。

试水ios-一次过闪退记录

过闪退

已经找到闪退的调用处了,一点一点改,它的调用还是很常规,exit、svc之类的。都能改问题就不大。
一处一处找,一处一处patch,有好几处,检测越狱,注入,调试等。

试水ios-一次过闪退记录

我这里后来选用的是把exit调用跳掉,svc我是nop。


试水ios-一次过闪退记录

最后伪码是这样的,打印不管,退出跳掉。

试水ios-一次过闪退记录

过签名检测

完成闪退修复后,发现进入仍然是有别的问题。会弹窗提示,不合法。
这种只能图层调试,但是我这个不行,因为之前改过一次主文件,导致后续加载会有问题。

试水ios-一次过闪退记录

到这里其实是卡住了(思路和应用都是卡住了)。
正常思路是图层,找到弹窗的事件,然后去回推。
不过好在柳暗花明,发现调试信息如下:

试水ios-一次过闪退记录

去主文件找,"invalid team id",很幸运,找到了。

试水ios-一次过闪退记录

这里只列出一部分,最开始if判断进入该逻辑后,输出检测信息,弹窗调用等,我if处给他反条件,成功绕过。

试水ios-一次过闪退记录

其实到这里重新打包,就已经能进行调试了,不闪退,不弹窗。没有账号没进行进一步测试。

填坑

完成上面的所有步骤,发现还是会崩溃断下来,可以说”屡试不爽“,调试崩溃断下来循环。

试水ios-一次过闪退记录

尝试找到崩溃的调用。
通过崩溃地址最近的主文件函数地址减去偏移,在主文件中找到函数调用。

试水ios-一次过闪退记录

发现了自己挖的坑,把这里nop了,后面的调用直接出问题。所以崩溃了。

试水ios-一次过闪退记录

还原成原来的样子,再xcode run起来,一切都很美好了。


原文始发于微信公众号(雷石安全实验室):试水ios-一次过闪退记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月9日01:27:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   试水ios-一次过闪退记录http://cn-sec.com/archives/890254.html

发表评论

匿名网友 填写信息