吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19136|回复: 107
收起左侧

[iOS 原创] iOS视频广告游戏跳过

  [复制链接]
张艾伦 发表于 2021-7-9 15:12
本帖最后由 张艾伦 于 2021-7-9 19:50 编辑
iOS广告游戏视频跳过

天天玩游戏,天天看广告。我表示不服,今天就拿我以前喜欢玩的一个游戏《小兵别嚣张》下手。

准备工具
  1. Xcode 13
  2. MonkeyDev
  3. Lookin
  4. 砸过壳的游戏ipa
  5. Hopper Disassembler
开始动手

首先安装MonkeyDev,目前在Xcode 13环境下安装我遇到过以下几个问题,现在直接贴出来

1、Xcode 12安装MonkeyDev时报错

File /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Package Types.xcspec not found

复制Xcode 11对应目录里的文件过来就行点我下载

2、如何砸壳App

在 Cydia 中添加软件源 http://apt.wxhbts.com/,搜索CrackerXI(CrackerXI App脱壳工具),下载安装。回到SpringBoard,打开CrackerXI。确认要砸壳的App处于未启动状态,点击对应的App进行砸壳。我已经砸好了但是不知道能不能发,这里就先不发了,如果贴子反响不错且不违反版规,我可以发上来让大家自己练下手。

3、如何把砸过壳的ipa取到本地

安装AFC2插件,使用爱思助手到对应的目录下取就可以

4、使用monkeydev动态调试工具,xcode新建文件之后编译一直报错证书问题,Signing for "xxx" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'xxxDylib' from project 'xxx')

target 选择xxxDylib buildsetting 添加CODE_SIGNING_ALLOWED,设置为no

5、Showing All Errors Only

File not found: /usr/lib/libstdc++.dylib

Xcode 12里已经没有这个库了,在Build Settings里搜索libstdc,然后把对应的库删除掉即可

6、Xcode 13调试iOS15的时候,fishhook.c崩溃

使用网友修改后的版本替换即可

https://raw.githubusercontent.com/shino-996/fishhook/fix-iOS-14.5-crash/fishhook.c

万事具备,我们把砸壳后的游戏放到MonkeyDev工程的TargetApp目录里

image-20210709144305015

如果没有问题,下面我们就能愉快的把游戏跑起来

image-20210709144454371

另外,以前大佬们调戏都用Revel这个工具,我反正是不用,我推荐大家用Lookin这个工具,非常好用,在MonkeyDev工程里新建一个Podfile文件,添加如下配置

target 'DYDylib' do
  use_frameworks!
  pod 'LookinServer'

end

并且下载对应的GUI工具,这个工具可以看到对应的类名,属性名称等,反正很好用。在工程目录里执行pod install后运行即可看到效果

image-20210709144612764

下面我们在游戏里打开对应的广告界面,在Lookin里查看界面层级,可见最关键的代码就在左侧这些对象的里面

image-20210709132745767

下面我们使用Hopper Disassembler来看一下这个里面都有什么代码,顺便也使用class-dump把游戏的头文件给导出来。然后经过一系列的分析,我们最终可以看到如下的调试信息

image-20210709142139752

可以看到BUNativeExpressAdView类里的safeDelegate_nativeExpressAdViewWillShow的参数是一个BUPlayer对象,那么这个对象里有一个BU_ZFPlayerView对象,它有一个_videoURL的属性,这个就是缓存在我们本地的那个广告视频,现在我们用一个特别简单的办法,就可以实现游戏视频的加速,那就是我自己录制一个视频文件来替换它。首先我们使用QuickTime录制一个1秒钟的视频,然后把这个视频放到我们代码的目录里。

image-20210709142553657

然后我们再去BU_ZFPlayerView对象里去找这个_videoURL属性。

@property(retain, nonatomic) NSURL *videoURL; // @synthesize videoURL=_videoURL;

可以看到这个属性是对外公开的,那么我只需要重写这个属性即可。删除其他无用的代码,我们只需要添加如下代码即可

CHDeclareClass(BU_ZFPlayerView)
CHOptimizedMethod0(self, NSURL *, BU_ZFPlayerView, videoURL){
    NSString *path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mov"];
    NSURL *url = [NSURL fileURLWithPath:path];
    return url;
}

重新运行游戏,发现所有要广告的地方,只需要1秒就会跳过。而且还能够成功的获取奖励,但是这些还不够,虽然我们已经能够获取奖励了,但是我们还需要手动的点击关闭按钮,既然要做,就要做彻底,我们使用Lookin工具分析一下界面,可以得知这个关闭按钮是在广告播放结果后自动出来的,它的界面层级如下

image-20210709144958523

BURewardedVideoWebViewController这个视图控制器里,我们打开这个类的头文件看一下


@interface BURewardedVideoWebViewController : BUWebViewController <BURewardedVideoWebDefaultViewDelegate>
{
    BURewardedVideoWebViewControllerVM *_videoWebVM;
    struct CGSize _originSize;
}

@property(nonatomic) struct CGSize originSize; // @synthesize originSize=_originSize;
@property(retain, nonatomic) BURewardedVideoWebViewControllerVM *videoWebVM; // @synthesize videoWebVM=_videoWebVM;
- (void).cxx_destruct;
- (void)silentButtonTappedPlayableHandle:(_Bool)arg1;
- (void)webCloseButtonTapped;
- (void)appendURLParameters;
@property(nonatomic) unsigned long long transformDirection;
@property(nonatomic) __weak UIButton *superVCCloseBtn;
@property(nonatomic) _Bool hiddenEndCardClose;
@property(nonatomic) _Bool mute;
@property(copy, nonatomic) NSString *ritScene;
@property(nonatomic) _Bool isRewardedVideo;
@property(nonatomic) _Bool isTransform;
@property(nonatomic) __weak id <BURewardedVideoWebViewDelegate> delegate;

可以看到这里面有一个可疑对象superVCCloseBtn和可疑方法- (void)webCloseButtonTapped;顾名思义,这个方法是当我们点击的时候调用的,那么我们要做的就是手动的调用这个方法以达到我们的目的。下面就要是分析一下,我们应该在什么时机调用?当然是在viewDidAppear显示的时候调用。所以我们再添加如下代码

CHDeclareClass(BURewardedVideoWebViewController)
CHOptimizedMethod1(self, void, BURewardedVideoWebViewController, viewDidAppear,  bool, arg1){
    CHSuper1(BURewardedVideoWebViewController, viewDidAppear, arg1);
    [self webCloseButtonTapped];
}

大功告成,当然最最重要的就是,Hook的方法不要忘记注册

CHConstructor{
    CHLoadLateClass(BU_ZFPlayerView);
    CHHook0(BU_ZFPlayerView, videoURL);

    CHLoadLateClass(BURewardedVideoWebViewController);
    CHHook1(BURewardedVideoWebViewController, viewDidAppear);

}


最终游戏效果详见视频:
https://www.bilibili.com/video/BV1t44y1q7HC/

免费评分

参与人数 31威望 +1 吾爱币 +48 热心值 +28 收起 理由
yufulove + 1 + 1 我很赞同!
dialga + 1 + 1 谢谢@Thanks!
tw1986ren + 1 + 1 我很赞同!
jingtiaopi + 1 + 1 受益匪浅,这个视频替换思路很特别。666
dlls5yx + 1 + 1 太值得学习了
junjia215 + 1 用心讨论,共获提升!
caoweia123 + 1 谢谢@Thanks!
alpsyx + 1 + 1 谢谢@Thanks!
ccnnssnncs + 1 + 1 我很赞同!
kukukakaxi + 1 + 1 谢谢@Thanks!
砼小砼 + 1 + 1 技术可以的
zhangaran + 1 + 1 我很赞同!
煮酒 + 1 + 1 热心回复!
Mrshow + 1 + 1 热心回复!
行者无涯 + 1 热心回复!
孤独尽头是自由 + 1 + 1 我很赞同!
和马 + 1 + 1 热心回复!
mcyaas + 1 谢谢@Thanks!
夜凉星亮 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
孙庚 + 1 + 1 非常有用,早就想弄这个,一直入不了门
_小白 + 1 + 1 我很赞同!
屁股决定脑袋 + 1 + 1 用心讨论,共获提升!
achong345 + 1 + 1 谢谢@Thanks!
炽之夕 + 1 + 1 热心回复!
情受哥哥 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
piwei + 1 我很赞同!
sulin123 + 1 + 1 热心回复!
Ali鲤想 + 1 + 1 我很赞同!
absl130 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

 楼主| 张艾伦 发表于 2021-7-10 08:54
sjsm 发表于 2021-7-10 08:10
真是被这些广gao烦si了,谢谢LZ分享方法

这个方法适合所有头条系的SDK,代码都不用改,只要是这种广告的,把砸壳后的ipa放到工程目录里运行一下就可以了,如果有机会,下次我可以再出一套自签名的教程,这样就可以直接把破解后的ipa安装到未越狱的手机上了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
wudi5299122 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 张艾伦 发表于 2021-8-8 11:26
 楼主| 张艾伦 发表于 2021-7-10 17:25
cick 发表于 2021-7-9 17:43
感觉有点深奥了是必须要cydia么
dadaodangran 发表于 2021-7-9 17:39
谢谢分享。
Hmily 发表于 2021-7-9 17:56
@张艾伦 把图片上传论坛本地吧,新浪的图床有流量限制,一会就挂了看不了了。
absl130 发表于 2021-7-9 18:12
感谢大佬传授知识。
wildwolfzj 发表于 2021-7-9 18:14
但这个只能在模拟器里运行吧?
hichent 发表于 2021-7-9 18:21
我很赞同!
忆殇情 发表于 2021-7-9 18:29
感谢分享,学习学习
Ali鲤想 发表于 2021-7-9 18:50
收藏了,找时间研究一下
DuXi 发表于 2021-7-9 19:02
这个很有用啊,感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 07:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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