• 【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. }

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

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

  • 相关阅读:
    中石油测井-技术研发岗回顾
    可编程交易区块为DeFi机器人提供强大动力
    蓝牙学习六(GATT)
    如何在前端开发中实现摄像头拍照和人像定位
    python函数
    五大类团队协作工具推荐,每一个都简单好用!
    利尔达5G模组NE16U-CN通过华为OpenLab基于R16标准的认证测试
    高精度工厂人员定位,打造数字化智慧工厂
    画饼也充饥,使用声卡替代昂贵的SDR设备实现实验
    通过ExecutorService、Callable、Future实现有返回结果的多线程来处理有轮询业务
  • 原文地址:https://blog.csdn.net/qq_21051503/article/details/134022689