飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7382|回复: 10

[iOS] iOS每日瑜伽逆向分析

[复制链接]
  • TA的每日心情
    难过
    3 天前
  • 签到天数: 1312 天

    [LV.10]以坛为家III

    发表于 2020-8-14 21:13:00 | 显示全部楼层 |阅读模式
    本帖最后由 小七柒 于 2020-8-14 21:22 编辑

    起因:飘大大的《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地方都是判断此YGUser  isVip呢?那不就简单一下搞定。(结果查看各种VIP视频不行😂,但在个人页生效)。

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

    1

    1


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

    2

    2


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

    3

    3

    4

    4


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

    5

    5

    6

    6


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

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

    8

    8


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

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



    评分

    参与人数 2威望 +6 飘云币 +5 收起 理由
    shiqiangge + 1 PYG有你更精彩!
    tree_fly + 5 + 5 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-17 22:44
  • 签到天数: 132 天

    [LV.7]常住居民III

    发表于 2020-8-14 22:18:51 | 显示全部楼层
    掀起你的盖头来~  赞!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2024-2-26 21:51
  • 签到天数: 1059 天

    [LV.10]以坛为家III

    发表于 2020-8-20 16:27:34 | 显示全部楼层
    卧槽无情。。。好餐饮
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:22
  • 签到天数: 829 天

    [LV.10]以坛为家III

    发表于 2020-8-24 18:05:42 | 显示全部楼层
    不错,强烈支持
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-4-11 18:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2020-9-10 08:31:51 | 显示全部楼层
    办法好,谢谢分享~
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-12-17 16:31
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2020-9-27 19:56:30 | 显示全部楼层
            PYG有你更精彩
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-3-14 15:11
  • 签到天数: 465 天

    [LV.9]以坛为家II

    发表于 2020-10-18 23:38:14 | 显示全部楼层
    看看,感谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-6 16:14
  • 签到天数: 134 天

    [LV.7]常住居民III

    发表于 2020-11-14 09:12:56 | 显示全部楼层
    谢谢分享~赞
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    昨天 19:46
  • 签到天数: 200 天

    [LV.7]常住居民III

    发表于 2020-12-7 20:01:27 | 显示全部楼层
    感谢楼主分享,思路很棒
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表