Il2CppHookScripts广告分析实战:AppLovin MAX与AdMob瀑布流竞价的完整解析指南
2026/8/26 14:25:27 网站建设 项目流程

Il2CppHookScripts广告分析实战:AppLovin MAX与AdMob瀑布流竞价的完整解析指南

【免费下载链接】Il2CppHookScriptsFrida-based libil2cpp.so runtime parsing script项目地址: https://gitcode.com/gh_mirrors/il/Il2CppHookScripts

Il2CppHookScripts 是一套基于 Frida 的 libil2cpp.so 运行时解析脚本(npm 包名il2cpp-hooker),专门用于 Hook 和分析 Unity IL2CPP 游戏。这篇文章带你用它内置的 ADS 模块,完整走一遍 AppLovin MAX 与 AdMob 广告展示、瀑布流竞价日志抓取的实战流程。

一、快速上手:安装与挂载目标App

先全局安装,再用fat命令挂载或拉起目标游戏:

npm install il2cpp-hooker -g fat ${PackageName} # spawn 启动目标 App 并注入

也可以 attach 到已经运行的进程。如果 npm 包更新不及时,可先拉取源码自行编译:

git clone https://gitcode.com/gh_mirrors/il/Il2CppHookScripts cd Il2cppHook && npm install && npm run build && npm run compress

👉 挂载成功后,后续所有命令都在 Frida REPL 里直接输入即可。

二、ADS 分析模块架构

广告相关的脚本集中在Il2cppHook/agent/java/ADS/目录,结构如下:

  • ADS/applovin/max.ts:AppLovin MAX 核心脚本,封装了回调 Hook、MediationDebugger、插屏展示、伪造激励事件等功能
  • ADS/applovin/unity.ts:封装com.applovin.mediation.unity.Utils(读取 SDK Key、当前 Activity)与MaxUnityAdManager(SDK 版本、TAG、mAdInfoMap 等)
  • ADS/export.ts:一键批量 Hook 广告展示方法的入口
  • ADS/testFireBase.ts:Firebase 依赖检查 Hook 与 RemoteConfig 抓取(广告配置常走 Firebase,可作为辅助手段)

其中max.ts里定义了三个关键数据结构:AdEvent(广告事件)、WaterfallInfo(瀑布流信息)、NetworkResponse(单条网络竞价响应),这正是我们分析瀑布流竞价的"字典"。

三、批量拦截广告展示:5步实战流程

第一步,用B_ShowAD批量给所有广告展示方法打上断点。它内部通过BF(模糊批量断点,定义于agent/base/breaker.ts)依次挂住showInterstitialShowRewardedInterstitialAdshowRewardedAdShowBannerAdAppOpenAd等常用方法,游戏里一点"看广告"按钮,调用栈立刻现形:

> B_ShowAD()

之后观察日志即可定位游戏调用了哪个 SDK、哪个方法。确认目标后,配合breakWithArgs查看参数,printCurrentMethods("Ad")列出所有已挂方法。

四、瀑布流竞价日志:一条命令看清全部网络响应

AppLovin MAX 的回调会经过 C# 层MaxSdkCallbacks.ForwardEvent/InvokeEvent(命名空间MaxSdk.Scripts),脚本已将其封装为两个命令:

> HookMaxCallBack() # Hook 回调,实时打印广告事件 JSON > listMaxCallBack() # 列出已记录的全部广告事件(精简版)

Hook 命中后,每条事件都会按AdEvent结构解析输出,核心字段含义如下:

字段含义
adUnitIdMAX 广告位 ID
adFormat广告形式(REWARDED / INTERSTITIAL / BANNER 等)
networkName实际出价的广告网络,如AppLovinGoogle AdMob
creativeId素材 ID,可反推广告内容
revenue/revenuePrecision本次广告收入与精度
waterfallInfo.networkResponses各网络在瀑布流中的竞价响应

waterfallInfo里的networkResponses记录每个网络的mediatedNetwork(适配器类名/版本)、credentials(app_id / placement_id)、error(错误码与错误信息)和latencyMillis(延迟毫秒数)——哪条网络竞价失败、超时还是出价低,一查便知

五、打开 MAX 官方调试面板

想看 MAX 官方的 Mediation Debugger 界面(含完整瀑布流层级与请求状态),一条命令即可拉起:

> showMediationDebugger() # 调用 com.applovin.mediation.unity.MaxUnityPlugin.showMediationDebugger

面板会在手机上直接显示,配合HookMaxCallBack()的日志,实现"界面 + 数据"双重视角。

六、手动触发插屏与伪造激励事件

除被动观察,脚本还提供了主动能力(源码见Il2cppHook/agent/java/ADS/applovin/max.ts):

  • showInterstitial(id):依次调用loadInterstitialisInterstitialReadyshowInterstitial,直接加载并展示插屏;
  • onMaxInit():向游戏伪造发送OnSdkInitializedEvent,并用setFunctionBoolIsRewardedAdReady改为 true、nShowRewardedAd,用于初始化失败时的调试;
  • onMaxReward():通过SendMessage伪造OnRewardedAdReceivedRewardEvent/OnRewardedAdHiddenEvent(含 revenue、waterfallInfo 等真实字段结构),可用来验证游戏侧"看广告发奖励"的逻辑是否正确。

⚠️ 伪造事件仅建议在自有测试包或兼容性调试中使用,用于验证游戏业务逻辑,而非线上应用。

七、AdMob 与 Firebase 联动观察

onMaxReward()的示例事件里可以看到networkName: "Google AdMob"networkPlacement: "ca-app-pub-.../...",说明 AdMob 常作为 MAX 瀑布流中的一个网络参与竞价——抓一次瀑布流日志,两个渠道的竞价表现就都拿到了。

如果怀疑广告开关/参数来自远端配置,可参考ADS/testFireBase.ts的思路,HookFirebaseApp.CheckDependencies等方法,或抓取 RemoteConfig 的键值,进一步定位配置来源。

八、常用命令速查表

命令作用
B_ShowAD()批量断点全部广告展示方法
HookMaxCallBack()/listMaxCallBack()监听并列出 MAX 广告事件(含瀑布流信息)
showMediationDebugger()打开 MAX 官方调试面板
showInterstitial("广告位ID")加载并展示插屏广告
onMaxInit()/onMaxReward()伪造初始化 / 激励奖励事件
JavaAds.Utils.retrieveSdkKey()读取 MAX SDK Key
JavaAds.MaxUnityAdManager.VERSION查看 MAX Unity 插件版本

总结

用 Il2CppHookScripts 做广告分析的核心路径非常短:B_ShowAD定位展示入口 →HookMaxCallBack抓全量事件 JSON → 解析waterfallInfo弄清各网络竞价结果 → 需要时用showMediationDebuggeronMaxReward主动验证。掌握这套流程,你就能对 AppLovin MAX 与 AdMob 的广告展示链路做到"所见即所得"的完整解析。

【免费下载链接】Il2CppHookScriptsFrida-based libil2cpp.so runtime parsing script项目地址: https://gitcode.com/gh_mirrors/il/Il2CppHookScripts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询