游戏广告sdk分析浅析
最开始接触安卓逆向的时候就是广告的破解,当时基本上都是通过修改smail来绕过广告的支付条件,后来闲的无聊,就研究了几种广告的sdk,说来也非常的简单,本篇文章简单的介绍下,休闲小游戏的广告sdk分析,适合安卓逆向新入门的朋友学习。
学习目录
1. 广告分类
2. 某广告sdk的分析实战
1. 广告分类
常见的国外的游戏聚合广告就是这些,游戏会根据产品经理或者运营提供的数据来切换不同的广告类型。
Fyber 是一家广告技术公司,提供各种广告解决方案,包括移动应用内广告。
Facebook Audience Network是Facebook的广告平台,允许开发者将广告集成到他们的应用程序中,从而实现广告收入。
AdMob 广告中介是 Google AdMob 广告平台的一项功能,它允许开发者在其应用程序中集成多个广告网络,并通过一个中介来展示这些广告。这样做的好处是可以轻松地在不同广告网络之间切换,以获得更好的广告填充率和最大化广告收入。
HyprMX 是一家广告技术公司,专注于提供各种类型的广告,包括激励广告、视频广告等。
IronSource 是一家广告技术公司,提供广告中介和媒体广告解决方案,而 Google AdMob 是 Google 的广告平台,用于在移动应用中展示广告。
Tapjoy 是一家广告技术公司,专注于提供移动应用内广告解决方案和激励式广告服务。他们的 SDK 允许开发者在其应用程序中集成 Tapjoy 广告,从而通过广告展示和用户参与获得收入。
Unity Ads 是 Unity Technologies 公司的广告平台,专门为移动游戏开发者提供广告服务。通过 Unity Ads,开发者可以在其游戏中展示激励广告、插页式广告等,并从中获得广告收入。
Vungle 广告公司的 Android SDK 中的一个类。Vungle 是一家移动广告公司,专注于提供视频广告解决方案。
AppLovin 是一家广告技术公司,提供广告中介和广告媒体解决方案。
bytedance字节跳动是一家中国的科技公司,旗下拥有多个知名的移动应用,如抖音和头条。
InMobi 是一家全球性的广告技术公司,专注于提供移动广告解决方案和数据分析服务。
Google AdMob 是 Google 的移动广告平台,专门用于在移动应用中展示广告。AdMob SDK 提供了一组用于在 Android 和 iOS 应用中集成广告的 API,包括横幅广告、插页式广告、激励式广告等。
详情的话的可以自己接入几个广告进行尝试,这样的话有助于我们以后分析代码。
2. 某广告sdk的分析实战
这里使用objection进行分析
多观察日志和关键词查找类似“rewardad”"showad"这种关键词的hook,在熟悉了广告的一些常用的api之后,我们可以迅速找到关键的方法,寻找其调用关系和产品代码的逻辑,如果比较熟悉游戏引擎的框架可以从c#开发的角度出发,自己写个游戏,自己接一套广告,可以直接从so中将广告破解掉。
播放广告时:
播完广告后:
通过监控几个api我们可以得到一个完整的广告播放流程,接下来就是寻找广告实例和广告实例的参数和一些类的实例,我们来进行模拟它广告的播放流程。
Class<?> cls = getClass("此代码仅交流学习");
Method declaredMethod = cls.getDeclaredMethod("onRewardedVideoAdOpened", new Class[0]);
Method declaredMethod2 = cls.getDeclaredMethod("onRewardedVideoAdStarted", new Class[0]);
Method declaredMethod3 = cls.getDeclaredMethod("onRewardedVideoAdEnded", new Class[0]);
Method declaredMethod4 = cls.getDeclaredMethod("onRewardedVideoAdRewarded", String.class);
Method declaredMethod5 = cls.getDeclaredMethod("onRewardedVideoAdClosed", new Class[0]);
declaredMethod.invoke(rewardListener, new Object[0]);
declaredMethod2.invoke(rewardListener, new Object[0]);
declaredMethod3.invoke(rewardListener, new Object[0]);
declaredMethod4.invoke(rewardListener, "{'placement_reward_name':'Virtual Item','placement_name':'rewardedVideo','placement_reward_amount':'1','placement_id':'2'}");
declaredMethod5.invoke(rewardListener, new Object[0]);
这样我们就可以让其直接模拟广告播放完,到达了我播放广告获得奖励的目的。其实我们还可以从so文件中进行模拟,套路其实是一样的。
效果:
当然我们会遇到很多问题,比如混淆,服务器验证实例广告,网络问题等等一系列广告问题,逐渐深入理解游戏引擎,会发现更多有意思的大陆,发现它和安卓虚拟机有着很多地方设计上相同的设计模式,值得我们学习和研究。
喜欢的可以加入以下星球,嗷嗷分享干货,和大佬们一起学习交流讨论。
原文始发于微信公众号(移动安全星球):游戏广告sdk分析浅析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论