Bruce_HD 发表于 2020-8-14 21:32

iOS每日瑜伽逆向分析

起因:飘大大的《iOS应用逆向与安全之道》购买地址:https://u.jd.com/kIhzMK
在多年前看了狗神的小黄书1和2,接着后面庆总的小猴子书。到现在飘大大的绿苹果书,让我又激起了心中欲望。心里非常之痒痒的,找个小目标练练手。在这里非常的感谢他们分享了很多安全知识和iOS迷幻之处。多的话就不说了。接下来开始我们的分享。

1. 基本步骤和准备工具就不细说了。比如在电脑、手机、App Store下载App、脱壳、class-dump、恢复符号表、xxx工具静态分析、xxx动态调试等等,都按自己习惯来,如果小白什么都不懂建议根据上面购买地址买本书学习一下。

2. 因为App不是VIP很多瑜伽视频不能观看。那么我们就看看能否通过对App的分析到达非VIP也可以观看呢?

3. 我们开始入手。先class-dump导出头文件。通过猜想大胆的分析一下,是不是应该和isVip字段有关。把头文件放在Xcode方便搜索。

4. 通过搜索得到比较多的类有此属性和方法,找一个可能性比较大的类做hook分析一下,发现YGUser和用户有关可能性极大,万一所有需要VIP地方都是判断此YGUserisVip呢?那不就简单一下搞定。(结果查看各种VIP视频不行😂,但在个人页生效)。

5. 那我们就换个思路不盲目的挨个类分析isVip了。我们从界面入手。如下图:


6. 通过上图我们分析底部有个按钮为(成为会员解锁),猜想一下如果我们是VIP那应该不会有这个按钮了吧。不然还显示成为会员这不是有问题嘛。那么我们按照这个猜想找到对应的视图,通过视图找到控制器(通过Xcode或FLEXible)。找到对应的YGButton和YGPlanDetailViewController。继续按照猜想走,肯定有步骤是会员的情况就不会创建这个YGButton会员按钮。这下我们看看这个控制器viewDidLoad里面做了什么事(不一定在此方法里面控制会员按钮是否创建)。通过静态分析得知:看了我们运气挺好的就在viewDidLoad方法里面就找到关键信息congfigVipInfo,如下图伪代码(伪代码不一定都正确,多多结合汇编代码分析):


7. 然后我们再来分析congfigVipInfo里面做了什么,得知:获取用户配置信息来创建会员按钮信息,顺便看看YGCacheHandler没有特别信息,发现也没有重要信息,那我们就 hook getUserConfigInfo 返回空信息(看自己使用方式hook),这时没getUserConfigInfo信息就不会有会员按钮而是出现加入计划按钮,如下图伪代码:


8. 然后我们点击加入计划按钮会出现弹窗,(其实点击上面cell第1节...第n节也会出现),定位点击事件didClickedStartButton(节约时间具体咋定位就不细说了都是简单的操作),那我们继续分析点击加入计划按钮的逻辑,如下图:


9. 如第8步骤得知(顺便通过对YGSingleton分析看能不能就此完成非VIP查看视频,但是不能,所以过掉滤此处细节)从YGSingleton获取user信息,在通过sid查看是否登录的用户,如果都有值不就弹登录窗。如果sid有值就走 YGPlanDetailViewController startPlanIsResume:fromVideoPlayer: 我们继续分析startPlanIsResume:fromVideoPlayer: 如下图:


10. 如9步骤也是校验了一遍sid,是否走-(登录弹窗)。接下来就是要准备播放视图。关键点就在-。分析得到YGPlan计划的等等信息,重要信息有isVip,是否加入计划joinEnable。自己在举一反三通过第4步搜索全部isVip 按照刚刚分析思路YGCourse课程也是如此。


11. 总结:hook getUserConfigInfo返回nil,YGCourse和YGPlan的isVip和joinEnable返回YES。就此非VIP查看就没有各种限制。再给个彩蛋就是视频URL可以手机、电脑下载或者电脑浏览器播放方便观看。通过YGCourse获取此字段cnVideoURL = "https://bsycdn.dailyyoga.com.cn/face21554797515237"(具体自己可以分析一下哦)。

12. 反思:代码安全意识要有,至少简单的代码混淆、重要信息的保护、比如这么重要的视频URL链接服务器应该加上权限验证等等一系列校验操作。太多的安全机制需要研究来保护自己的应用,提高防范意识。加强代码安全。

浮夸缘夸浮 发表于 2020-8-17 14:08

Bruce_HD 发表于 2020-8-17 10:45
购买地址链接,点击进入详情下面有选择电子版。

好的 谢谢

Bruce_HD 发表于 2020-8-17 10:46

lyghost 发表于 2020-8-17 07:48
如果验证放在服务器那就不好弄喽

是的,放在服务器加大难度,重要的东西肯定最好放在服务器验证。安全机制得看公司或者个人自己看着运用了。

Tangarc001 发表于 2020-8-15 22:31

ljh厉害厉害厉害厉害

Tangarc001 发表于 2020-8-15 22:32

可以可以可以可以可以

Tangarc001 发表于 2020-8-15 22:40

厉害厉害厉害厉害

707优亿 发表于 2020-8-15 22:42

厉害👍🏻厉害👍🏻

helloYF 发表于 2020-8-15 22:57

厉害厉害厉害++

kiwiswA 发表于 2020-8-15 23:00

可以的啊这个

yangjunyuio 发表于 2020-8-16 10:13

好东西值得分享

jiayaozhuce 发表于 2020-8-16 10:48

牛叉克拉斯

qqtanhaohua 发表于 2020-8-16 11:12

有成品么。。感谢感谢
页: [1] 2 3 4
查看完整版本: iOS每日瑜伽逆向分析