iOS越狱环境下去除某视频APP广告的历程

iOS越狱环境下去除某视频APP广告的历程

项目准备

  • 目的

为了去除某视频APP的启动页广告、首页弹窗广告、首页悬浮广告、视频播放开始结束广告,使应用使用起来更加清爽。

  • 工具

Tweak、LLDB、Reveal、class-dump

  • 原始目标展示

1、启动页广告
iOS越狱环境下去除某视频APP广告的历程_第1张图片

2、首页弹窗广告
iOS越狱环境下去除某视频APP广告的历程_第2张图片

3、播放页面广告
iOS越狱环境下去除某视频APP广告的历程_第3张图片

4、首页悬浮广告
iOS越狱环境下去除某视频APP广告的历程_第4张图片

具体实施

  • 首先去除首页弹窗广告和悬浮广告

1、利用Reveal查看页面布局结构,分析得出弹窗广告和悬浮广告的对应的类分别是HaokanyingshidaquanAForTheFirstTimeRedPacketView、HaokanyingshidaquanEController

2、利用class-dump目标APP的头文件导出来或者利用lldb插件动态查看对应类中的方法

查看HaokanyingshidaquanAForTheFirstTimeRedPacketView.h 文件内容

+ (void)hide;
+ (void)show;
- (void).cxx_destruct;
@property(nonatomic) __weak UIImageView *animationImageView; // @synthesize animationImageView=_animationImageView;
- (void)awakeFromNib;
- (void)clickImage:(id)arg1;
- (void)hide:(id)arg1;
@property(nonatomic) __weak UIButton *hideBtn; // @synthesize hideBtn=_hideBtn;

@end

查看该类的所有方法后猜想show()方法是显示该弹窗视图的主要方法。这个时候利用Tweak创建工程来验证我们额想法。

%hook HaokanyingshidaquanAForTheFirstTimeRedPacketView
+ (void)show {
}
%end

然后编译安装插件到手机验证,实验证明重新启动APP首页弹窗广告消失了,证明猜想是成功的。
利用同样的方法查看首页弹窗广告类HaokanyingshidaquanEController头文件中的方法。

HaokanyingshidaquanEController.h

核心方法
- (void)setupAD;
- (void)setupNavigationBar;
- (void)showSubtitle;
- (void)trackWithCurrentIndex:(long long)arg1;
- (void)viewDidLoad;
- (void)viewWillAppear:(_Bool)arg1;
- (void)viewWillDisappear:(_Bool)arg1;

由此推测setupAD()方法是显示弹窗广告的方法,采用同样的思路去hook该方法

%hook HaokanyingshidaquanEController
- (void)setupAD {
}
%end

实际证明重启APP弹窗广告也消失了。再次证明目标正确

  • 去除播放视频开始和结尾的广告

同样通过Reveal查看UI布局结构,通过工具可以很清除的看到两个广告视图HaokanyingshidaquanAPlayPauseADView和HaokanyingshidaquanABeforeOrEndPlayADView,由此看来编写这个APP的同学命名还是比较规范的。

iOS越狱环境下去除某视频APP广告的历程_第5张图片

分别查看对应类头文件的内容

@interface HaokanyingshidaquanAPlayPauseADView : UIImageView
+ (id)showInPlayerView:(id)arg1 withModel:(id)arg2;
- (void)close;
- (void)dealloc;
- (id)init;
@property(retain, nonatomic) NewADModel *model; // @synthesize model=_model;
- (void)orientationChange;
- (void)updateFrameWithOrientation:(long long)arg1;
@end


@interface HaokanyingshidaquanABeforeOrEndPlayADView : UIImageView
+ (void)showWithPlayEndFlag:(_Bool)arg1 willPlayNext:(_Bool)arg2 PlayerView:(id)arg3 withModel:(id)arg4 closeHandler:(CDUnknownBlockType)arg5;
- (void)dealloc;
- (id)initWithCloseHandler:(CDUnknownBlockType)arg1;
@end

由此猜想showInPlayerView和showWithPlayEndFlag分别是暂停视频的广告、播放开始结束视频时的广告。采用hook对应方法去验证。

// 去除播放启动的广告
%hook HaokanyingshidaquanABeforeOrEndPlayADView
+ (void)showWithPlayEndFlag:(_Bool)arg1 willPlayNext:(_Bool)arg2 PlayerView:(id)arg3 withModel:(id)arg4 closeHandler:(id)arg5 {
}
%end

// 去除暂停广告
%hook HaokanyingshidaquanAPlayPauseADView
+ (id) showInPlayerView:(id)arg1 withModel:(id)arg2 {
	return nil;
}
%end

然后安装插件重启应用验证。

综上所述,一般APP的广告还是很容易去除的,主要是要定位到关键代码。

你可能感兴趣的:(iOS)