【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

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

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

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

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

 具体实现,发送 123456789

+(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逆向-如何让某音自动播放下一个视频(懒人癌)icon-default.png?t=N7T8https://www.52pojie.cn/thread-865083-1-1.html

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

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

//- (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]"

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

-[TTVideoEngineOwnPlayer playerItemDidReachEnd]-[AWEAwemeDetailTableViewController _addNotifications]

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

//这里替换好的代码{//此处省略一万字}

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/170581.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis应用场景之动态传参、两字段查询、用户存在性的判断

目录 一、动态传参 1、场景描述 2、实现过程 3、代码测试 二、两字段查询 1、场景描述 2、实现过程 3、代码测试 4、注意点 三、用户存在性的判断 1、场景描述 2、实现过程 3、代码测试 一、动态传参 1、场景描述 在进行数据库查询的时候&#xff0c;需要动态传入…

Linux友人帐之日志与备份

一、日志 1.1概述 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于安全来说也很重要&#xff0c;它记录了系统每天发生的各种事情&#…

openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户

文章目录 openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户108.1 创建、修改和删除用户108.2 私有用户108.3 永久用户108.4 用户认证优先规则 openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户 使用CREATE USER和ALTER USER可以创建和管理数据…

期中考核复现

web 1z_php ?0o0[]1A&OoO[]2023a include "flag.php"&#xff1a;尝试包含名为 "flag.php" 的文件。这意味着它会尝试引入一个名为 "flag.php" 的脚本文件&#xff0c;其中可能包含一些敏感信息或标志。 error_reporting(0)&#xff1a;…

MYSQL(事务+锁+MVCC+SQL执行流程)理解

一)事务的特性: 一致性:主要是在数据层面来说&#xff0c;不能说执行扣减库存的操作的时候用户订单数据却没有生成 原子性:主要是在操作层面来说&#xff0c;要么操作完成&#xff0c;要么操作全部回滚&#xff1b; 隔离性:是自己的事务操作自己的数据&#xff0c;不会受到到其…

【TES641】基于VU13P FPGA的4路FMC接口基带信号处理平台

板卡概述 TES641是一款基于Virtex UltraScale系列FPGA的高性能4路FMC接口基带信号处理平台&#xff0c;该平台采用1片Xilinx的Virtex UltraScale系列FPGA XCVU13P作为信号实时处理单元&#xff0c;该板卡具有4个FMC子卡接口&#xff08;其中有2个为FMC接口&#xff09;&#x…

机器学习中常见的特征工程处理

一、特征工程 特征工程&#xff08;Feature Engineering&#xff09;对特征进行进一步分析&#xff0c;并对数据进行处理。 常见的特征工程包括&#xff1a;异常值处理、缺失值处理、数据分桶、特征处理、特征构造、特征筛选及降维等。 1、异常值处理 具体实现 from scipy.s…

软件测试面试1000问(含文档)

前前后后面试了有20多家的公司吧&#xff0c;最近抽空把当时的录音整理了下&#xff0c;然后给大家分享下 开头都是差不多&#xff0c;就让做一个自我介绍&#xff0c;这个不用再给大家普及了吧 同时&#xff0c;我也准备了一份软件测试视频教程&#xff08;含接口、自动化、…

kvm webvirtcloud 如何添加直通物理机的 USB 启动U盘

第一步&#xff1a;查看USB设备ID 在物理机上输入 lsusb 命令 rootubuntu:/media/usb1# lsusb Bus 002 Device 002: ID 0781:5581 SanDisk Corp. Ultra Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 0424:2514 Microchip Technolo…

进阶课3——神经网络

1.定义与分类 神经网络是一种模仿动物神经网络行为特征&#xff0c;进行分布式并行信息处理的算法数学模型。它由大量的节点&#xff08;或神经元&#xff09;相互关联而成&#xff0c;每个节点代表一种特定的输出函数&#xff08;或称为运算&#xff09;&#xff0c;称为激励…

音乐制作软件 Studio One 6 mac中文版软件特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

On Moving Object Segmentation from Monocular Video with Transformers 论文阅读

论文信息 标题&#xff1a;On Moving Object Segmentation from Monocular Video with Transformers 作者&#xff1a; 来源&#xff1a;ICCV 时间&#xff1a;2023 代码地址&#xff1a;暂无 Abstract 通过单个移动摄像机进行移动对象检测和分割是一项具有挑战性的任务&am…

计算机算法分析与设计(20)---回溯法(0-1背包问题)

文章目录 1. 题目描述2. 算法思路3. 例题分析4. 代码编写 1. 题目描述 对于给定的 n n n 个物品&#xff0c;第 i i i 个物品的重量为 W i W_i Wi​&#xff0c;价值为 V i V_i Vi​&#xff0c;对于一个最多能装重量 c c c 的背包&#xff0c;应该如何选择放入包中的物品…

论文-分布式-并发控制-Lamport逻辑时钟

目录 前言 逻辑时钟讲解 算法类比为面包店内取号 Lamport算法的时间戳原理 Lamport算法的5个原则 举例说明 算法实现 参考文献 前言 在并发系统中&#xff0c;同步与互斥是实现资源共享的关键Lamport面包店算法作为一种经典的解决并发问题的算法&#xff0c;它的实现原…

opencalib中lidar2camera安装记录

目录 一、opencalib安装 二、lidar2camera的安装 三、测试运行 四、出现过的问题 一、opencalib安装 代码地址&#xff1a;https://github.com/PJLab-ADG/SensorsCalibration/blob/master/README.md # pull docker image sudo docker pull scllovewkf/opencalib:v1 # Aft…

出海路上离不开的Email营销,教你这样来优化!

随着互联网的不断发展&#xff0c;Email已经成为人们工作和生活中不可或缺的一部分。尤其是对于我们这些跨境企业而言&#xff0c;发送Email是一个促进销售和维护客户关系的良好渠道。而且邮件的价格也是比较低廉的&#xff0c;很适合用于日常推广营销&#xff0c;所以人手几个…

【Linux】nginx基础篇 -- 介绍及yum安装nginx

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

光影之梦2:动画渲染前后对比,揭示视觉艺术的惊人转变!

动画渲染是影视艺术中不可或缺的一环&#xff0c;它赋予了角色和场景鲜活的生命。渲染过程中的光影、色彩、材质等元素&#xff0c;像是画家的调色板&#xff0c;将平淡无奇的线条和形状转化为充满韵味与情感的画面。动画角色仿佛拥有了自己的灵魂&#xff0c;无论是一颦一笑&a…

Unity Inspector编辑器扩展,枚举显示中文,枚举值自定义显示内容

记录&#xff01;Unity Inspector面板编辑器扩展&#xff0c;枚举显示中文&#xff0c;枚举值自定义显示内容&#xff0c;显示部分选项。效果如下&#xff1a; 枚举类代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;public…

9 线程池

目录 1 线程池各参数 1.1 corePoolSize 1.2 maximunPoolSize 1.3 keepAliveTime 1.4 workQueue 1.5 RejectedExecutionHandler 2 线程池工作机制 2.1 流程 2.2 提交任务 3 相关问题 3.1 线程池核心线程数、最大线程数设置 3.2 ApiPost压测 3.3 为什么要用阻塞队列…