【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 再次回归

- (void)componentBindService{
    %orig;//直播不弹出输入法
    liveComm = self;
    liveCommentFragment = self;
}

%end

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

objectivec 复制代码
-[HTSLiveCommentFragment sendComment:6666666666 commentContext:<IESLiveCommentContext: 0x283bdf640> completion:0x0]

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

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

具体实现,发送 123456789

objectivec 复制代码
+(void)sendMsgTest2:(HTSLiveCommentFragment*)lcf
{
    
    
    IESLiveCommentContext * liveCommentContext = [[NSClassFromString(@"IESLiveCommentContext") alloc] initWithState:0 enterFrom:0 type:0];
    [liveCommentContext setPublicScreenID:-1];
    [liveCommentContext setPublicScreenType:0x0];
    [liveCommentContext setCurrentState:0x1];
    [liveCommentContext setDisplayedText:@"666"];
    [liveCommentContext setPlainText:@"123456789"];
    
    [lcf sendComment:@"" commentContext:liveCommentContext completion:0x0];
    
    
}

首先百度一波

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

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

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

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

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

objectivec 复制代码
//- (void)_addNotifications;
CHOptimizedMethod0(self, void, AWEFeedTableViewController, _addNotifications) {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playNext) name:VideoPlayEndedNotiName object:nil];
    CHSuper0(AWEFeedTableViewController, _addNotifications);
}

CHDeclareMethod0(void, AWEFeedTableViewController, playNext) {
    if ([[NSUserDefaults standardUserDefaults] boolForKey:OpenAutoPlay] == NO) {
        return;
    }
    UITableView *tableView = [self valueForKey:@"_tableView"];
    NSIndexPath *path = [NSIndexPath indexPathForRow:self.currentPlayIndex +1 inSection:0];
    [tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}


CHDeclareClass(AWEVideoPlayerController)

CHOptimizedMethod1(self, void, AWEVideoPlayerController, playerItemDidReachEnd, id, arg1) {
    NSLog(@"--------------------------------");
    [[NSNotificationCenter defaultCenter] postNotificationName:VideoPlayEndedNotiName object:nil];
    CHSuper1(AWEVideoPlayerController, playerItemDidReachEnd, arg1);
}

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

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

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

好了

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

上 frida 一探究竟

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

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

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

objectivec 复制代码
-[TTVideoEngineOwnPlayer playerItemDidReachEnd]

-[AWEAwemeDetailTableViewController _addNotifications]

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

cs 复制代码
//这里替换好的代码

{

//此处省略一万字

}

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

让你自己成为一个持续学习和思考的人,并只写你真正思考和总结之后的产物,其他一切就会随之而来。

问题在想通了之后总是简单的,问题的困难程度不在于想通了之后还觉得有多难,而在于从你觉得它难到你觉得它简单需要耗费多少思维体力,你耗费的时间越长,说明有越多的人最终还是没有想明白(路越长走到底的人越少)。

所以,如果你习惯了思考问题,就总会有东西写,先有思考,然后有总结,然后在总结中进一步思考。

相关推荐
惜.己1 天前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
西电研梦1 天前
考研倒计时30天丨和西电一起向前!再向前!
人工智能·考研·1024程序员节·西电·西安电子科技大学
惜.己1 天前
Jmeter中的断言(四)
测试工具·jmeter·1024程序员节
·云扬·2 天前
Java IO 与 BIO、NIO、AIO 详解
java·开发语言·笔记·学习·nio·1024程序员节
网安_秋刀鱼2 天前
PHP代码审计 --MVC模型开发框架&rce示例
开发语言·web安全·网络安全·php·mvc·1024程序员节
HUODUNYUN2 天前
小程序免备案:快速部署与优化的全攻略
服务器·网络·web安全·小程序·1024程序员节
惜.己2 天前
Jmeter的后置处理器(二)
测试工具·github·1024程序员节
惜.己3 天前
Jmeter中的断言(一)
测试工具·jmeter·1024程序员节
cainiao0806053 天前
《物理学进展》
1024程序员节·核心期刊·知网期刊·职称评审
FFDUST3 天前
C++ —— string类(上)
c语言·开发语言·数据结构·c++·stl·1024程序员节