去除APK中的广告

最近在做app相似度检测的项目,需要手改一些相似的测试样例,考虑到重打包者主要是通过修改apk中广告,将其替换为自己的注册的广告,重新发布来盈利的。

这里就涉及apk的盈利模式,许多免费的apk主要是通过投放广告来获得收益,但是一个开发app的小团队是很难有精力去联系自己的广告的,所以就出现了“广告联盟”这一概念,诸如谷歌和百度等等,由他们去签约广告,开发者只需要接入他们提供的广告SDK,就可以从中获得广告收益,收益肯定是和你的app的使用率成比例的。

但是广告对使用者的体验确实不太好,用户很容易误点击时不时的广告弹窗,而且广告会偷偷跑走用户的流量。本文就尝试了一下如何去除app中的广告,给各技术宅们一条入门级的思路。


第一种方式:

参考文章:利用破解版百度广告框架去百度广告 http://my.oschina.net/u/256033/blog/365698?fromerr=Pd7jJ8YY

首先尝试了一下这篇文章的方法,它的思路是将com.baidu.mobads中的Adview(这是投放广告的一个关键控件,会在大多数app的入口Activity中onCreate中被调用,相当于对广告的初始化)里的功能重载(其实什么都没做),这样就相当于调用了一个什么都没做的方法,这个思路在理论上应该是没有问题的,但是我在实现的时候遇到了许多问题:
其一:选用了百度安卓市场上的一款2048游戏(下载地址为:http://apk.hiapk.com/search?key=2048&pid=2),对其进行了反编译,重打包并签名,结果放到真机上运行时,就直接报错了,最后发现,可能是这款app添加了签名验证的机制(java层面、so层面,请参看 http://drops.wooyun.org/mobile/4296).
其二:选用了百度安卓市场上的一款flippy bird的游戏(下载地址为:http://shouji.baidu.com/game/5743426.html,这款游戏用的是谷歌的广告SDK),这款app没有签名验证机制,可以顺利的对其重新签名。但是还是没能成功按照上述方法去除广告。
第二种方式:
直接修改smali文件,用apktool对apk进行反编译,用nodepad++在其smali\com\dotgears\这个路径下搜索“Adview”,发现除了广告初始化的地方调用了,还有两处有调用(这个可能也是第一种方法失败的原因)

将这三个smali文件中涉及AdView的代码全部删去。

保存,用apktool重新打包,并签名,在真机上运行,完美去除了广告!

这只是去apk除广告的最简单的思路,很多apk往往有它自己的反编译措施,需要逆向人员有一定的经验。
欢迎交流其他方法。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值