iOS逆向去除腾讯视频广告

今天来学习一下如何将腾讯视频的90秒广告给去除

通过Reveal工具可以看到,广告所属控制器为:QNBPlayerVideoAdsViewController,广告view为:QNBPlayerVideoAdsView

iOS逆向去除腾讯视频广告_第1张图片
获取腾讯视频的安装包,找出可执行文件,通过class-dump -H live4iphone -o Headers命令获取app所有的头文件(这步不会的请点击)。

通过两种不同的脱壳方法,以及从PP助手直接下载越狱版本,发现。。。并没有这两个头文件!!!
啥???
WTF!!!
T_T!
黑人问号???
你以为这就完了?不,我拒绝!
既然是学习,那就不能轻易放弃,为此,我找到了老版本6.1.9,娃哈哈。点击这里下载
下载完毕后,检测可知这是个脱壳版本,不需要进行脱壳操作。
导出头文件,终于看到了QNBPlayerVideoAdsViewController和QNBPlayerVideoAdsView这两个文件夹!

iOS逆向去除腾讯视频广告_第2张图片
好了,开始修改文件
我们计划将QNBPlayerVideoAdsViewController控制器不进行创建,这样,广告就不会出现了,但是在这个控制器里面并没有看到创建的init相关代码,然后我们进入其父控制器QNBBasePlayerViewController,在这个控制器里面,我们发现:

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withPageViewController:(id)arg4 withAddToParenViewControllerNow:(_Bool)arg5;
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withParentEventViewController:(id)arg4 withAddToParenViewControllerNow:(_Bool)arg5;
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withAddToParenViewControllerNow:(_Bool)arg4;
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withParentEventViewController:(id)arg4;
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3;

将这几个初始化方法返回nil,基本上就可以了。

怎么操作呢?

首先Hook执行如下命令:

nic.pl
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/cydget
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/ios7_notification_center_widget
  [7.] iphone/library
  [8.] iphone/notification_center_widget
  [9.] iphone/preference_bundle_modern
  [10.] iphone/tool
  [11.] iphone/tweak
  [12.] iphone/xpc_service
Choose a Template (required): 11
Project Name (required): tweak_txsp
Package Name [com.yourcompany.tweak_txsp]: cpm.yz.sb
Author/Maintainer Name [lsdt]: yz
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.tencent.live4iphone
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:
Instantiating iphone/tweak in tweak_txsp/...
Done.

可以看到生成的tweak_txsp文件夹
然后,在Tweak.xm文件下,添加如下代码:

%hook QNBBasePlayerViewController

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withPageViewController:(id)arg4 withAddToParenViewControllerNow:(_Bool)arg5
{
	return nil;
}

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withParentEventViewController:(id)arg4 withAddToParenViewControllerNow:(_Bool)arg5
{
	return nil;
}

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withAddToParenViewControllerNow:(_Bool)arg4
{
	return nil;
}

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withParentEventViewController:(id)arg4
{
	return nil;
}

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3
{
	return nil;
}

%end

同时,在Makefile文件下添加上:

export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=2222

这几步不明白的请参考这里

然后执行顺序执行make 、make package 、make install即可
效果出来了,广告是去掉了,但是并没有直接进入到需要播放的视频,而是黑屏了,并且在播放广告声音。。。并且,连进度条都没有了。。。
不完美的破解。。。。
iOS逆向去除腾讯视频广告_第3张图片
在QNBPlayerVideoAdsViewController前面有一个TADVideoAdController控制器,这个控制器貌似也是跟广告有关的
iOS逆向去除腾讯视频广告_第4张图片
在这个TADVideoAdController控制器中,有一个init方法,我们把它重写:

%hook TADVideoAdController
- (id)init{
    return nil;
}
%end

然后,奇迹发生了!
广告去除了!!!娃哈哈

你可能感兴趣的:(iOS底层学习)