Android-reverse-去广告实战

新年新气象,年末就有思考,不太想局限于web了,学点新东西吧。正好对安卓逆向一直都有点兴趣,立一个学成的小目标,可以破解某境外诈骗软件/色情直播软件并拿下对方服务器后台/shell,回归最初学习安全的初心(还是搞破坏有意思)。

教程看的 https://www.bilibili.com/video/BV1zk4y137Bn,感觉质量很好。

网上随便找一个app,紫色视频。但是这玩意貌似有很多版本,比如我下的包名有麻豆视频:

image-20250103195625557

过程

打开MT管理器,打开Activity记录。

打开后要观看广告,记录如下:

image-20250103200453438

最后一共看了两次广告。

可以看到用了百度的SDK,去MainActivity看看。jadx打开apk:

image-20250103200608045

LoadAdBaiduBidding封装了调用百度SDK的逻辑,没啥看的。这个函数是void类型,可以直接在开头添加return-void。或者在onCreate方法里把那行注释掉即可。

这里为了方便选第一种。

image-20250103200841823

打开SplashActivity看看:

image-20250103200858642

显然也调用了,这符合之前的看了两次广告的效果,

NP管理器提取安装包,Dex编辑class文件:

image-20250103201049170

全局搜索下刚刚提到的,修改好后,保存后,再复制方法签名一下

打开算法助手,选中紫电视频:

image-20250103201203636

点开后拉到最下面,添加自定义Hook,由于刚刚复制了方法签名,按确定即可,然后启动自定义hook。

重启紫电视频,发现广告消失了,点进去一看,怪不得包名里有麻豆。。。

image-20250103201330869

明显这是个盗版紫电视频,逆天的还不在此。

随便点击任何按钮,都会跳出这个页面:

image-20250103201436180

每次解锁都要看广告,由于我们hook掉了广告,点击提示暂时没有广告。

在jadx里搜一下“暂时没有广告”:

image-20250103201619618

这个方法是showAd方法,按x看被谁调用了:

image-20250103201715642

这里有个判断,根据MainFragment.this.count的值设置button。我在hook之前测试了,点击那个立即解锁按钮,一共还要看三次广告才可以解锁,这就对应上了之前的逻辑。

image-20250103201857952

继续往上跟,发现这里count有判断,不为0就会到showReward。

再往上跟发现他给所有按钮都设置了一个AdListener,然后每次点击必然会走到这里。

所以此处修改this.count始终为0即可。

打开np管理器,打开安装包,定位到对应的smali代码行,在函数开头添加:

const/4 p1, 0

iput p1, p0, Lcom/hb/madouvideo/MainFragment;->count:I

重新hook后打开,点击立即解锁。

image-20250103203142215

然后最终来到这个页面,what?我卸载后重装了原来没改过的,老老实实看了10分钟广告,最后也是来到这个页面,说明这个几把软件啥功能都没实现,就是让你看广告,然后来到另一个app的下载。。。

而且以后每次打开这个软件,都只有这个页面了。如果点取消,就会直接白屏。我也是难绷了。

踩坑

用XappDebug结合jadx动态调试会和算法助手发生冲突,在jadx debug的时候,算法助手hook的内容会消失,并且貌似重启了手机才会变正常。

MT管理器的Activity服务不要一直开着,跟完就关掉,否则在安装新包的时候,或者即使关掉了算法hook,导致修改无效。(反正就是有问题,重启了就好了,而且必须是在MT管理器Activity服务关闭的时候重启)

总结

平平无奇的安卓实战,由萌新跃迁了一级成为菜鸡,而且这个app连签名校验都没。未来还需多多学习。


Android-reverse-去广告实战
http://example.com/2025/01/03/android-reverse-去广告/
Aŭtoro
zhattatey
Postigita
January 3, 2025
Lizenta