首页
社区
课程
招聘
9
[原创]记一则iOS App 反调试绕过
发表于: 2021-4-5 23:09 92034

[原创]记一则iOS App 反调试绕过

2021-4-5 23:09
92034


 

前段时间在一个群里看到有人在讨论这个app,连一个专职接单的人都被难住了说有反调试过不了,不禁激起了好奇心,这个从来没听过的app有这么牛逼的技术了吗?
起源

 

看了下下载链接,直接跳到AppStore,那就还好,不会有太变态的混淆,下下来看看吧。

 

果然,在越狱手机上一启动就退出,且没有crash log,是主动退出的没跑了,既然已经有人踩坑说有反调试策略了,那就先想办法拿到解密后的应用吧。

 

AppStore上架的应用都是统一的FairPlayDRM 数字版权加密保护,所以现有的各种解密套路也都一样,在程序跑起来以后进行dump。先试试用的比较多的两个工具frida-ios-dump、CrackerXI看看能不能直接dump出来。经过测试,都不行,皆是由于程序退出导致没有完成dump操作,但是在用frida-ios-dump的时候看log显示所有的framework都已经成功的加载,只是dump操作由于程序退出没有完成。

 

图片描述

 

确实没那么简单,但是似乎也不是丝毫没办法嘛,翻翻dyld的源码,看下dyld的加载流程,这里借用 李斌同学 总结的图:

 

图片描述

 

可以看出至少已经能走到加载动态库的地方了,至于是在初始化的地方做的检测还是在进入main函数之后做得检测目前还不得而知,也不重要。由于用lldb拉起程序的时候,断点是断在_dydl_start上,所以我们完全有时机可以dump出程序的,直接memory read手撸出来再做个修复就好。这里为了省事,就直接修改frida-ios-dump 的代码,在砸壳的时候让程序暂停,直接把resume注释掉:

 

图片描述

 

这样就成功把解密后的IPA包拿到了,先把主程序丢尽ida里分析一波,粗略看一下有下面这些检测越狱的API:
图片描述

 

使用搜索引擎大致搜了下,发现多是一些sdk提供的检测,那么在越狱屏蔽插件的基础上再针对性做些处理就够了,应该不会有太骚的操作。可以直接写frida脚本或是substrate插件hook
图片描述

 

对于懒癌患者来说,哐叽哐叽写那么多代码实非所愿,就想着能不能直接把退出的逻辑处理下,这样只要解决一处即可,谁让它动静那么大。

 

ida搜下exit,发现确实有好几处调用,大致看了下却都不像是检测到调试或越狱后调用的,经过调试发现确实不是这几处导致程序退出的。那就很奇怪了,还会是怎么退出的呢?

 

ummm, 直接上MonkeyDev调试一波吧(不得不说MonkeyDev真是一个好东西,把重打包等一系列操作都做了,还集成了一些调试环境,真香),先把MonkeyDev里面反调试相关的注释全部打开,然后就直接跑起来

 

图片描述


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费 9
支持
分享
赞赏记录
参与人
雪币
留言
时间
一路南寻
为你点赞!
2025-1-14 06:52
飘零丶
为你点赞!
2024-11-2 02:07
東陽不列山
为你点赞!
2024-10-26 03:58
Youlor
看雪因你而更加精彩!
2024-6-27 02:47
0xEA
为你点赞~
2023-4-10 17:19
PLEBFE
为你点赞~
2023-1-14 01:39
wx_益达
为你点赞~
2022-12-13 21:41
hk有缘人
为你点赞~
2022-9-27 09:35
plauger
为你点赞~
2021-4-5 23:53
最新回复 (8)
雪    币: 120
活跃值: (1738)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
https://github.com/jmpews/Dobby/tree/master/builtin-plugin/SupervisorCallMonitor
2021-4-6 12:44
0
雪    币: 2115
活跃值: (1009)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
jmpews https://github.com/jmpews/Dobby/tree/master/builtin-plugin/SupervisorCallMonitor
大哥就是大哥,特征检测都做好了 
2021-4-6 18:12
0
雪    币: 13
活跃值: (49)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
大哥,邮箱多少有一款比这个更加牛逼想让你看看
2021-7-24 21:17
0
雪    币: 2
活跃值: (519)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
流批,饱学之士
2021-7-27 17:05
0
雪    币: 732
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这些建议都上了,就不好玩了。
    动静太大,直接退出操作痕迹太明显,改成上报会不会更好
    一些检测逻辑改成inline,和一些业务逻辑放一起,是不是能消耗分析者更多的时间
    防护代码自己写,少依赖sdk,参考别人的代码不要照抄,改改特征会不会更好
2022-1-17 20:39
0
雪    币: 10
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
建议2现在已经用上了。。还是批量 手动改不太现实~~
2023-4-7 13:44
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册