由于这是第四篇文章:细节偏少了。主讲过程,思路截然相同。
视频的app偏复杂,有点运气成分,也像是必然的事情。
1.查找对应的View和ViewController.
1.1打开reveal->找到相关view
视频广告页1.2通过nextResponder找到viewController
nextResponder查找1.3在头文件中搜索相关文件
在.h文件中搜索在YTEngineControllerView时有个YTEngineController.h
打开看看,发现skipAd和skipCurrentAd
YTEngineController.h
2.分析YTEngineController中的skip方法
skipAd参数是个int类型,没什么说的。skipCurrentAd通过lldb来查找arg1类型
image list 查找偏移地址 查找skipCurrentAd偏移地址
skipCurrentAd偏移地址
断点打上,发现怎么都不走,换上会员账号,应该能跑到断点吧,发现依然没有走。思路好像有点问题,也有点迷茫。
3.再次分析view结构
view结构这次找到XAdEngineVideoAdView,打开头文件
XAdEngineVideoAdView.png
这次对上了一些苗头,可以用cript测试下。发现好容易崩溃,动不动就闪退。有点迷,难道优酷有防止反编译手段吗?
然后就直接tweak测试了,发现怎么修改都没什么用。只是UI上做了些修改。无济于事
我又观察到了这个类XAdEnginePreAdModule,发现它是继承自XAdEngineVideoAd
当你搜索XAdEngineVideoAd时
这个意思看的很明显了,前中后广告吗?哈哈,打开看看 getADInfo
这个方法很是亮眼不是吗?lldb调起来,看看arg1是什么? IDA查找getADInfo
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逆向实战四:去优酷广告
网友评论