低调(d-iao) 发表于 2023-9-11 15:25

【散装破文】如何有效率的去除软件广告(二)

   
   有人说需要前三节课程,由于原图已没保存,所以都是直接搬过来的。

      


       散装系列:是以日常实用小技巧所展开的系列
上一节课已经说明了广告的实现原理,并且应该也学会了如何快速定位,但是处理广告手法并不是只有一种。appid在上节课并未演示,所以这次就通过appid处理吧。


   这次演示的软件是一款家常菜谱,同样也是从gp下载。

    那么开始吧。

    本次广告只有一家,就是google自家的,先来看看广告吧。





   然而凡接入第三方sdk都必须在AndroidMainfest.xml里进行配置,平常看到的穿山甲广告,快手广告,qq广告等等都是属于第三方广告sdk,所以查看AndroidMainfest也能对软件植入了哪家广告一目了然。

   图中的AndroidMainfest里可以看见,圈圈处就是广告的appid,google的都是以ca-app-pub作为开头(具体看google广告的开发手册,上节课已讲过,这节课就不再演示。),至于标记处就是接入广告的配置。



   所以只需要将ca-app-pub开头的appid删除掉即可完成移除广告。但是google会对appid进行检测,仅仅删除appid会导致闪退。至此还需要对dex部分进行修改。

   在dex里搜索ca-app-pub可以得出3个结果,从下到上逐一看。



   第一个是Boolean返回值,比较字符串是否匹配,这里强制让它返回0。



   第二个则是返回appid字符串类型,这里直接把红线割掉的那个跳转删除,让它返回一个空白即可。



   第三个是一个void,可以直接在方法入口加个return-void即可,不让代码继续往下执行。



   当都完成后,就可以安装了。

==============安装中==============

   啊~怎么还有广告呀?掉链子了。T.T所有广告都完整的还在,并未去除成功。



   既然从AndroidMainfest里只看到一家广告,所以深信着可能是还存在其他的appid,配置里的只是个幌子。

   这时选择了对整个包进行搜索,看看是不是哪里漏掉了?可是并未找到相关结果。说明resources.arsc里并没有存放着appid。



      那么可以以此推断可能性,可能appid被加密了,又或者appid是通过联网动态加载。有了这些前提的假设,接下来就要再假设开发者可能存放的位置,不外是assest目录里,dex里,网络数据里。

   结果从assest里看到了一个名为adConfig的文件,ad开头很明显和广告有关。Config中文意思则是配置,全称就是广告配置。



   打开一看,确实经过加密了。要解密吗?不需要,只需要找出哪里调用它就好。



   dex里搜索出来的结果只有一个。



   它在一个void类型的方法里,那么就别让它读取了,直接在方法入口return-void即可。



   经历了千辛万苦之后,总算完成了。再次安装打开。

   咦,还有广告T.T 尴尬了。



   其实是因为google的广告sdk在初次启动的时候会写入缓存,所以后续修改后会导致看不见效果。只要把缓存清除了重新打开就好了。

      此次教学就到这里,效果如图。


      

ericzhao666 发表于 2023-11-16 11:22

第一个是Boolean返回值,比较字符串是否匹配,这里强制让它返回0。

这里为什么强制让返回false呢?看着像是匹配appid格式的函数啊

aa123dami 发表于 2023-9-11 15:55

很详尽的东西,大家学起来

marlborogolo 发表于 2023-9-11 16:02

感谢分享

moruye 发表于 2023-9-11 21:35

chai233202 发表于 2023-9-11 22:21

感谢分享,我虽一直很羡慕然,但一直学不会

乱试佳人1985 发表于 2023-9-12 08:49

学习中,感谢分享

frchris 发表于 2023-9-12 11:52

感谢分享,不过没学过app开发的我看着有些吃力

Cribug666 发表于 2023-9-12 11:56

最近正好在研究,学习了

l1258136193 发表于 2023-9-12 14:23

那如何把缓存清除呢?

mytf 发表于 2023-9-12 15:38

感谢分享,学习一下
页: [1] 2 3
查看完整版本: 【散装破文】如何有效率的去除软件广告(二)