吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 78866|回复: 266
收起左侧

[iOS 原创] iOS逆向-如何让抖音自动播放下一个视频(懒人癌)

    [复制链接]
nododo1027 发表于 2019-2-13 16:34

痛点是什么?

  • 在做饭、锻炼等无法腾出双手的场景中,想刷刷抖音

  • 刷抖音的时候有太多的广告

如何解决痛点

  • 抖音自动播放下一个视频
  • 纯净模式
  • 通过设置页面进行开关控制

知识点:如何在逆向中快速获取block的参数信息

工具

过程

1. 在PP助手下载一个砸壳后的抖音ipa


2. 用MonkeyDev进行class-dump,获取到头文件


3. 在手机上运行起来

3.1 第一个问题来了,抖音做了逆向检测,强制弹框,跳转至App Store,如下图所示:

3.2 先去掉这个弹框

  • 思路1: 既然跳转到App Store,先hook - (BOOL)openURL:(NSURL*)url; 方法
  • 思路2: 在 UIAlertView 上动手脚
  • 思路3: 实在不行就算了,我不玩了还不行😅😅😅

3.3 上面的思路1和思路2都试过了,结果不行,最后还是用Reveal看看吧,看完之后,发现思路2猜对了80%,抖音只是用了UIAlertController,哭晕。。。😭😭😭

3.4 找对了目标,实现起来就很简单了,直接去掉这个弹框


4. 实现自动播放下一个视频

4.1 在手机上用FLEXible对抖音的播放界面进行分析,发现播放页面控制器为 AWEFeedTableViewController

4.2 查看对应头文件

4.3 首先映入眼帘的一个属性  @property(nonatomic) _Bool pureMode; ,这个就不用过多解释了,程序猿的命名套路,一试便知,果然正确,纯净模式搞定。

4.4 观察头文件,与播放下一个相关的方法有以下几个:

- (void)didReceiveAutoPlayNotification:(id)arg1;

- (void)playerItemDidReachEnd:(id)arg1;

- (void)transition_performCustomActionForSlideDirection:(unsigned long long)arg1 gestureRecognizer:(id)arg2;

- (long long)currentIndex;

4.5 尝试了上面提到的所有方法,均无果。最后的最后,灵机一动,发现视频播放器为 AWEAwemePlayVideoViewController ,那完全可以在这里发送通知,每个视频播放完的时候通知 AWEFeedTableViewController 播放下一个就可以了。Nice!这个过程很漫长,但在成功的一瞬间确实很有成就感。

4.6 验证上面的猜想,结果正确,这里用到了上面提到的:- (long long)currentIndex; ,获取当前index,然后播放下一个。

4.7 感想:方向若是错误,停止就是进步


5. 在设置界面,增加开关按钮,控制是否需要自动播放下一个,因为有时候需要看看评论,重复观看一个视频。

5.1 用FLEXible观察设置界面界面布局及其属性,发现设置界面的逻辑关系为:

  • AWESettingsTableViewController
  • AWEGeneralSettingViewModel
  • AWESettingSectionModel
  • AWESettingItemModel

5.2 AWESettingsTableViewController的父类 AWESettingBaseViewController 有一个方法名为: - (void)refreshView; 这个方法用来增加设置项最好不过。

5.3 这里涉及到一个很重要的知识点,就是快速获取block的参数信息。网上好多资料都是使用 debugserver + lldb 的方法,参考文章, 这种方法的缺点很明显:计算麻烦,需要配置,容易出错。我在逛论坛是无意间发现了一个更快捷的方法就是通过 CTObjectiveCRuntimeAdditions 快速获取block的参数信息。它的原理就是根据LLVM文档,把block重新实现了一遍,然后获取内部参数。

5.4 通过这种方法,发现AWESettingItemModel里的
@property(copy, nonatomic) CDUnknownBlockType switchChangedBlock; 参数信息:参数个数为 1, 类型为 BOOL, 参考文档,备注:第0个参数为系统自用,不予考虑。



5.5 综上所述,功能实现,效果展示:

6. GitHub地址

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

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

点评

没玩过抖音这玩意  发表于 2019-3-11 15:51

免费评分

参与人数 71吾爱币 +63 热心值 +62 收起 理由
tata520613 + 1 感谢分享,从来没有了解过手机的逆向,苹果的更是看都没有看过
lnxcyy + 1 谢谢@Thanks!
Hzx2860892466 + 1 + 1 谢谢@Thanks!
myqqnba + 1 + 1 谢谢@Thanks!
wxdth88 + 1 + 1 软件在哪我要
euking + 1 + 1 写按键精灵的我看到那么复杂并不像说话并向楼主挥了个手
GQ123 + 1 + 1 热心回复!
woshizs + 1 + 1 能否注入虚拟定位插件进去,有偿
ChenXin0073 + 1 + 1 我很赞同!
火车啦啦 + 1 + 1 不觉明历
canoa + 1 我很赞同!
l337kaew + 1 + 1 热心回复!
merelyonly + 1 + 1 有个思路:再加一个图像识别API,是不是就可以开车了。
iefhv + 1 热心回复!
nat + 1 + 1 谢谢@Thanks!
泳嘉丨Raii + 1 + 1 是不是有了这个就不影响我开【兰博基尼】了?
disikejj + 1 大佬。。。
丨丶钟情 + 1 我很赞同!
娇妻小琪琪 + 1 + 1 谢谢@Thanks!
倾国 + 1 + 1 谢谢@Thanks!
maoksir + 1 谢谢@Thanks!
pkdown12 + 1 + 1 热心回复!
DiosPanda + 1 + 1 用心讨论,共获提升!
eric_wane + 1 我很赞同!
NocturneWu + 1 + 1 谢谢@Thanks!
QGZZ + 1 + 1 用心讨论,共获提升!
polaris-L + 1 + 1 谢谢@Thanks!
yixi + 1 + 1 谢谢@Thanks!
BlinkDagger + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
l354190 + 1 热心回复!
svnr + 1 用心讨论,共获提升!
yinyuanchu + 2 感觉很厉害,虽然看不懂- -
xjluckyboy + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xsddl + 1 + 1 我很赞同!
Simon3748 + 1 + 1 用心讨论,共获提升!
qyhengda + 1 + 1 热心回复!
YES_HJS + 1 我很赞同!
采花门门主 + 1 用心讨论,共获提升!
绝世小熊猫 + 1 + 1 热心回复!
zgydsy + 1 + 1 用心讨论,共获提升!
指间流沙 + 1 我很赞同!
写在西元前 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
VipYang + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
确定性丧失 + 1 + 1 思路1和思路2都试过以后居然没有直接用思路3!
铁汉柔情 + 1 + 1 科技本就是为懒人准备的,给你赞!
挑灯看花 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
沉迷学习 + 1 + 1 我竟然看懂了思路
John_LIU + 1 + 1 谢谢@Thanks!
一筐萝卜 + 1 + 1 我很赞同!
cxliuping + 1 + 1 我很赞同!
cqe5210 + 1 + 1 用心讨论,共获提升!
牛仔走天下 + 1 + 1 谢谢@Thanks!
涛之雨 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
RoB1n_Ho0d + 1 谢谢@Thanks!
追梦de鹏 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
逮猪七段 + 1 我很赞同!
mimimimimimi + 1 我很赞同!
chic-vin + 1 + 1 虽然自己不用IOS,但是思路还是很有用的
yznhysf + 1 + 1 我很赞同!
samkong + 1 + 1 我很赞同!
kentish + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cheng941112 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
gunxsword + 1 + 1 谢谢@Thanks!
执着№ + 1 + 1 我很赞同!
Viii + 1 + 1 谢谢 @Thanks!
玩世不攻 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wmsuper + 3 + 1 谢谢@Thanks!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
青烟绕指柔丶 + 1 + 1 谢谢@Thanks!
caijunqill + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
王小劣 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| nododo1027 发表于 2019-2-13 16:35
本帖最后由 nododo1027 于 2019-2-14 16:22 编辑

说点题外话,本人是靠混水区升级过的,后来积分规则调整又降级了,于是过年期间憋了这篇文章,大家多多交流,顺便评个分就更好不过了~

点评

很有用,第一次学习苹果反编译  发表于 2019-2-14 22:42

免费评分

参与人数 2热心值 +2 收起 理由
统列 + 1 我很赞同!
wwh1004 + 1 好像你差1分升级

查看全部评分

那笨蛋是我 发表于 2019-3-4 16:53
abea 发表于 2019-2-14 00:24
问题在想通了之后总是简单的,问题的困难程度不在于想通了之后还觉得有多难,而在于从你觉得它难到你觉得它简单需要耗费多少思维体力,你耗费的时间越长,说明有越多的人最终还是没有想明白(路越长走到底的人越少)。
九月风行 发表于 2019-2-13 16:59
路越长走到底的人越少
孤独色的夜 发表于 2019-2-13 16:59
看到懒人癌的我自动滚了进来~
王小劣 发表于 2019-2-13 17:07
本帖最后由 王小劣 于 2019-2-13 17:31 编辑

很不错,支持楼主.

另外学习到了获取Block 的参数的简便方法 感谢.
caijunqill 发表于 2019-2-13 17:19
虽然看不懂还是要赞一个
头像被屏蔽
w5645060 发表于 2019-2-13 17:25
。。。。懒到家了
YAO21 发表于 2019-2-13 17:30
感谢分享
_小白 发表于 2019-2-13 17:55
虽然看不懂还是要赞一个
zhanghaozhen 发表于 2019-2-13 18:18
很赞同楼主说的最后一句话,同时也学习了心得思路,感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-25 13:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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