0x2.apk基础修改深化-2

apk基础修改深化-2 :apk去广告分析实战


本文主要介绍某apk的去广告分析过程,先上图:




本文样本是我们常用的文件管理器:RE文件管理器。

下载链接:https://pan.baidu.com/s/1BUivyeioL2rb_WVOzp7Dvw 密码: xmku

< 文中的apk修改仅用于研究学习,如涉及权益侵犯请随时联系处理。 >


在开始分析之前,我们先安装确认需要分析处理的项目,安装后我们发现两个待处理项,如下图:


     


左侧广告出现在刚打开RE管理器的时候,我们称之为首屏广告,右侧的网页出现在关闭RE管理器后,我们暂且称之为末屏广告。


接下来我们进行广告去除步骤:检查Manifest文件逻辑跳过/删除调用


0x1.检查Manifest文件

检查Manifest文件的目的,是查看广告相关的声明,删除掉这些声明,这也是最简单广告的基本去除方式。

首先我们在Manifest文件中搜索广告关键词ads,结果如下:




我们发现了ads相关的activity及service声明,我们将其删除,同时我们发现了带有AddDouDouWall2.WebPageDownLoadMainActivity的声明,根据WebPageDownLoad我们可以推断其为末屏广告相关的声明,我们将以上相关声明全部删除,如下图:




然后回编译,此处报错如下:




由此可知,布局文件preference_list_fragment.xml中的资源未进行声明,是因为我们删除了Manifest文件中的声明信息。我们将该布局文件中出现问题的第4行删除(或者仅删除提示未声明的android:id="@android:id/menu"),然后再次进行回编译,打包成功。

运行查看效果,发现首屏广告及末屏广告均已去除,但是出现了一个小问题,RE管理器退出后,会出现“RE管理器已停止运行”的提示,显然这与末屏广告有关,由此我们进入smali部分分析逻辑。


0x2. 逻辑跳过/删除调用

因为是在应用程序结束时出现了此问题,我们最先想到的就是Activity的生命周期中的OnDestroy,根据程序包名om.speedsoftware.rootexplorer.RootExplorer,我们查看RootExplorer这个Activity中的OnDestroy。




根据smali我们可以分析出,OnDestroy首先判断是否网络可用,如果可用就启动网页加载,如果不可用就执行:cond_0。为方便理解也可以查看jar代码:




此处的处理可以直接删除cond_0之前的代码直接从cond_0开始执行(删除调用),或者在判断网络是否可用时无论如何跳转到:cond_0(逻辑跳过)。

逻辑跳过可以修改if-eqz v0,:cond_0 为 goto :cond_0。修改后打包运行,已停止的提示消失。


总结

本文只是提供了部分思路,其他思路大家可以自己去尝试,比如程序入口点相关分析。