iOS逆向实战四:去优酷广告
2019-07-10 本文已影响15人
某非著名程序员

由于这是第四篇文章:细节偏少了。主讲过程,思路截然相同。
视频的app偏复杂,有点运气成分,也像是必然的事情。
1.查找对应的View和ViewController.
1.1打开reveal->找到相关view

1.2通过nextResponder找到viewController

1.3在头文件中搜索相关文件

在YTEngineControllerView时有个YTEngineController.h
打开看看,发现skipAd和skipCurrentAd

2.分析YTEngineController中的skip方法
skipAd参数是个int类型,没什么说的。skipCurrentAd通过lldb来查找arg1类型



断点打上,发现怎么都不走,换上会员账号,应该能跑到断点吧,发现依然没有走。思路好像有点问题,也有点迷茫。
3.再次分析view结构

这次找到XAdEngineVideoAdView,打开头文件

这次对上了一些苗头,可以用cript测试下。发现好容易崩溃,动不动就闪退。有点迷,难道优酷有防止反编译手段吗?
然后就直接tweak测试了,发现怎么修改都没什么用。只是UI上做了些修改。无济于事
我又观察到了这个类XAdEnginePreAdModule,发现它是继承自XAdEngineVideoAd
当你搜索XAdEngineVideoAd时

这个意思看的很明显了,前中后广告吗?哈哈,打开看看

这个方法很是亮眼不是吗?lldb调起来,看看arg1是什么?


你看到了什么,广告,XAdEnginePlayerAdItem.
我试过修改XAdEnginePlayerAdItem各种参数,依然没有效果。
我最后想想如果直接[arg1 removeAllObjects];是怎么样?最后是成功的,哈哈。结局就是这么意外,抱歉啊,优酷。
3.编写Tweak
加申明不过10行代码,是不是简单不过。
@interface XAdEnginePreAdModule:UIView
@end
%hook XAdEnginePreAdModule
- (void)getADInfo:(NSMutableArray *)arg1{
[arg1 removeAllObjects];
%orig;
}
%end
总结:优酷的层级还是很复杂的,逆向重在分析,只要分析正确,编写tweak是很简单的。喜欢的朋友可以点个赞,有任何问题欢迎留言评论,志同道合的朋友可以一起学习。
iOS逆向实战一:实现按下home键截屏,如何使用hook的对象属性
iOS逆向实战二:微信聊天界面实现飘气球效果
iOS逆向实战三:修改微信钱包零钱
iOS逆向实战四:去优酷广告