大家平时玩休闲游戏时,是不是对广告又爱又恨呢?爱的是游戏里面的奖励广告可以给我很多有用的提示、道具。恨的是要么奖励广告无法正常播放,要么就是那种满屏幕的“牛皮癣”广告,十分影响游玩体验;最可气那种自己直接弹的广告,简直是丧心病狂啊!!!
最近瞎转悠,找到了一款桌球大师(Pool Master)的游戏。玩起来还是挺爽的,里面的桌球简直就是花式杂耍。里面的各种球技也是十分有用的,让我想起了以前玩企鹅的台球大师(忘了叫啥名了,充钱买球杆皮肤的那个)的痛苦日子了,由于只会瞄准、拉杆,被其他玩家吊起来打。直到我弃坑了才知道,还有什么击球点、回杆等高级操作。不过那时也是不知道怎么打这些骚操作啊。/(ㄒoㄒ)/~~
这个游戏就比好了,直接就教我怎么打这些操作。良心啊!!!!
言归正传,游戏不错,就是玩到后面。游戏难度上来了,心不够用了。烦躁,想继续玩还得等心心恢复。这不是坑爹嘛!!!给你5分钟,我立即马上就要继续玩游戏!!!!
所以,自己就捣鼓捣鼓了下。不用改游戏的包,直接用代码就搞定了!现在就把自己的思路流程记录下。
一、工具
jadx、
能跑xspoed的手机、
EasyXposed(自己封装的工具,就是方便代码编写。普通的xposed项目也可以):htt欢迎ps://githu各位b.com/zhongqingsong/Ea关注喔syXposed
二、步骤
因为不想看广告啊,而且游戏自己的广告一直都是无法正常播放,就很尴尬。让我不想白嫖都不行。教练,我想看游戏的奖励广告!!!
1、找日志
我先是试着从游戏的log日志中查找一些提示。不过很遗憾,找了半天,一条和广告相关的日志都没有。我想到的重要的方式就这么没了!
这一点提示都没有,我还怎么找广告啊!!!
本来只是想着搞广告的。游戏这么做,让我很心寒啊!黎叔很生气,后果很严重!!这下我要认真了!!!
2、直接上jadx分析代码:
游戏没有壳,直接就能看到源码。万变不离其宗,先从Java的入口开始。
找到清单文件,然后游戏的启动类就是 com.poolgames.billiards.eightball.UnityPlayerActivity
然后进入这个类,看了下代码。发现了这个方法很可疑
这个 reward video,应该就是激励广告的意思。但是不保险啊,我们需要确认下。这条方法里,走了一个日志。搜了一下这个logTag的日志,竟然有欸。说明我们的思路是正确的,游戏走了这个类了,那大概率广告也是走这个里面的。
3、上xposed代码:让广告正常
用我自己写的EasyXposed项目,hook住了这个showVideo方法,点击游戏里的按钮。不过,貌似没什么用,游戏还是灰色的,不能点击,没有触发hook的方法。
我大E了啊,没有闪。
既然游戏不能点击按钮,结合平时玩的游戏,有时会过一会儿才能点击广告。那么游戏的广告应该都有一个加载啊之类的过程吧?又继续翻了下代码,找到了这个
这里在判定广告是否ready,很激动啊。
很快啊,我一个三连就给hook上了。
哈哈哈,很nice。所有广告都能变亮啦,触发show方法啦!!!
4、上xposed代码:让广告直接给奖励
广告准备我们弄完了,接下来就是如何让广告直接发送奖励了。因为不改包,所以,我的思路是,我让游戏自己给自己发奖励。我只要做到“让”就行啦!那我们就需要知道游戏自己是如何给自己发送广告奖励的。
接着广告的思路,继续往下找。欸欸欸,这也太舒服了吧。类的最后面翻到了一堆的什么rewardVideo的方法,这些一看就像是啊。
而且,这个rewardVideoCompleted,一看就是我梦寐以求的广告完成的东西啊!这个UnitySendMessage,我搜了下,就是Java给unity的一种交互机制。游戏的广告流程都进入unity了,那100%就是要给游戏奖励了啊!!!
激动的心,颤抖的手!两只黄鹂鸣翠柳!!Hook,hook,赶紧hook!!
成功了,这个广告给300金币,上面的金币图里显示了。突然,感觉游戏也就这样的,just so so。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)