• 【iOS逆向与安全】某音App直播间自动发666 和 懒人自动看视频


    1.目标
    由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就花了几分钟做了一个。
    2.操作环境
    越狱iPhone一台

    frida

    mac

     3.流程

    下载最新某音App


    既然是发送消息,那关键词 sendmessage 则是我们的切入点

    ..................

    详情上一篇,当app 版本在20.7.0做的测试,但升级到最新版以后无法使用了

    【iOS逆向与安全】插件开发之某音App直播间自动发666_ios and Android的博客-CSDN博客文章浏览阅读1k次。由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就花了几分钟做了一个。https://ccccc.blog.csdn.net/article/details/133138838

     现在就来升级一下

    当时是通过 initWithStore 来初始化,获取对象,发现新版不走这个方法,导致无法使用

    - (HTSLiveCommentFragment *)initWithStore:(id)arg1

    用 Frida 查看启动流程

    frida-trace -UF -m "-[HTSLiveCommentFragment *]"

     发现是走的 componentBindService

    //new  最新版

    7015 ms  -[HTSLiveCommentFragment componentBindService]

    7387 ms  -[HTSLiveCommentFragment componentCreate]

     换上代码即可,消息6666 再次回归

    1. - (void)componentBindService{
    2. %orig;//直播不弹出输入法
    3. liveComm = self;
    4. liveCommentFragment = self;
    5. }
    6. %end

    消息虽然可以发,但是发现新版已经不走旧的方法了

    -[HTSLiveCommentFragment sendComment:6666666666 commentContext:0x283bdf640> completion:0x0]

    新版是通过 IESLiveCommentContext 对象发送,并不能直接输入文本了。

    虽然看到传入了 666666 文本,修改他并不会生效,需修改IESLiveCommentContext对象

     具体实现,发送 123456789

    1. +(void)sendMsgTest2:(HTSLiveCommentFragment*)lcf
    2. {
    3. IESLiveCommentContext * liveCommentContext = [[NSClassFromString(@"IESLiveCommentContext") alloc] initWithState:0 enterFrom:0 type:0];
    4. [liveCommentContext setPublicScreenID:-1];
    5. [liveCommentContext setPublicScreenType:0x0];
    6. [liveCommentContext setCurrentState:0x1];
    7. [liveCommentContext setDisplayedText:@"666"];
    8. [liveCommentContext setPlainText:@"123456789"];
    9. [lcf sendComment:@"" commentContext:liveCommentContext completion:0x0];
    10. }

    首先百度一波

    • 在做饭无法腾出双手,想刷刷抖音,怎么办?

    • 懒人癌,抖音自动播放下一个视频

     最后发现一篇52文章iOS逆向-如何让某音自动播放下一个视频(懒人癌)icon-default.png?t=N7T8https://www.52pojie.cn/thread-865083-1-1.html

     我就照着代码搬了下了,显怀激动的打开,然儿并没有反应.....……v_v

    没办法,那就看看前辈是怎么实现的,应该是版本升级,某些类名发生变化,修复应该很快。

    1. //- (void)_addNotifications;
    2. CHOptimizedMethod0(self, void, AWEFeedTableViewController, _addNotifications) {
    3. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playNext) name:VideoPlayEndedNotiName object:nil];
    4. CHSuper0(AWEFeedTableViewController, _addNotifications);
    5. }
    6. CHDeclareMethod0(void, AWEFeedTableViewController, playNext) {
    7. if ([[NSUserDefaults standardUserDefaults] boolForKey:OpenAutoPlay] == NO) {
    8. return;
    9. }
    10. UITableView *tableView = [self valueForKey:@"_tableView"];
    11. NSIndexPath *path = [NSIndexPath indexPathForRow:self.currentPlayIndex +1 inSection:0];
    12. [tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
    13. }
    14. CHDeclareClass(AWEVideoPlayerController)
    15. CHOptimizedMethod1(self, void, AWEVideoPlayerController, playerItemDidReachEnd, id, arg1) {
    16. NSLog(@"--------------------------------");
    17. [[NSNotificationCenter defaultCenter] postNotificationName:VideoPlayEndedNotiName object:nil];
    18. CHSuper1(AWEVideoPlayerController, playerItemDidReachEnd, arg1);
    19. }

     

    ...................

    经过分析,发现前辈是通过 hook 播放页面 _addNotifications方法,注册一个通知。

    然后再 hook 视频播放完毕方法 playerItemDidReachEnd ,发送通知到 播放页面,调用系统自带方法切换在一个视频。

    好了

    既然知道了原理,代码不是生效,那就肯定是 【注册通知】或【视频播放完毕】没有hook 到。

    上 frida 一探究竟

    frida-trace -UF -m "*[* _addNotifications]"

    frida-trace -UF -m "*[* playerItemDidReachEnd]"

     运行后发现, 是类名变了,幸好方法名还好使。

    1. -[TTVideoEngineOwnPlayer playerItemDidReachEnd]
    2. -[AWEAwemeDetailTableViewController _addNotifications]

    替换上以后,完美运行,你也赶快试试吧~

    1. //这里替换好的代码
    2. {
    3. //此处省略一万字
    4. }

    总结,引用《暗时间》里的一段话:

    让你自己成为一个持续学习和思考的人,并只写你真正思考和总结之后的产物,其他一切就会随之而来。 
    问题在想通了之后总是简单的,问题的困难程度不在于想通了之后还觉得有多难,而在于从你觉得它难到你觉得它简单需要耗费多少思维体力,你耗费的时间越长,说明有越多的人最终还是没有想明白(路越长走到底的人越少)。 
    所以,如果你习惯了思考问题,就总会有东西写,先有思考,然后有总结,然后在总结中进一步思考。

  • 相关阅读:
    400电话怎么办理(申请开通)
    JVM——类的生命周期(加载阶段,连接阶段,初始化阶段)
    批量获取中国所有行政区域经边界纬度坐标(到县区级别)
    复现log4j2漏洞(CVE-2021-44228)
    【脑机接口】基于脑机接口和经皮脊髓电刺激的下肢康复新方法
    FITC荧光素标记修饰多糖(蔗糖、麦芽糖、乳糖、淀 粉、糖原、纤维素)
    Java面试题基础第六天
    手机悬浮提词器怎么设置?分享三个简单的操作方法
    uniapp h5文件流下载pdf文件
    K8S中的亲和,污点和容忍
  • 原文地址:https://blog.csdn.net/qq_21051503/article/details/134022689