0x2.apk基礎(chǔ)修改深化-2

apk基礎(chǔ)修改深化-2 :apk去廣告分析實(shí)戰(zhàn)


本文主要介紹某apk的去廣告分析過程,先上圖:




本文樣本是我們常用的文件管理器:RE文件管理器。

下載鏈接:https://pan.baidu.com/s/1BUivyeioL2rb_WVOzp7Dvw 密碼: xmku

< 文中的apk修改僅用于研究學(xué)習(xí),如涉及權(quán)益侵犯請隨時(shí)聯(lián)系處理。 >


在開始分析之前,我們先安裝確認(rèn)需要分析處理的項(xiàng)目,安裝后我們發(fā)現(xiàn)兩個(gè)待處理項(xiàng),如下圖:


     


左側(cè)廣告出現(xiàn)在剛打開RE管理器的時(shí)候,我們稱之為首屏廣告,右側(cè)的網(wǎng)頁出現(xiàn)在關(guān)閉RE管理器后,我們暫且稱之為末屏廣告。


接下來我們進(jìn)行廣告去除步驟:檢查Manifest文件,邏輯跳過/刪除調(diào)用


0x1.檢查Manifest文件

檢查Manifest文件的目的,是查看廣告相關(guān)的聲明,刪除掉這些聲明,這也是最簡單廣告的基本去除方式。

首先我們在Manifest文件中搜索廣告關(guān)鍵詞ads,結(jié)果如下:




我們發(fā)現(xiàn)了ads相關(guān)的activity及service聲明,我們將其刪除,同時(shí)我們發(fā)現(xiàn)了帶有AddDouDouWall2.WebPageDownLoadMainActivity的聲明,根據(jù)WebPageDownLoad我們可以推斷其為末屏廣告相關(guān)的聲明,我們將以上相關(guān)聲明全部刪除,如下圖:




然后回編譯,此處報(bào)錯(cuò)如下:




由此可知,布局文件preference_list_fragment.xml中的資源未進(jìn)行聲明,是因?yàn)槲覀儎h除了Manifest文件中的聲明信息。我們將該布局文件中出現(xiàn)問題的第4行刪除(或者僅刪除提示未聲明的android:id="@android:id/menu"),然后再次進(jìn)行回編譯,打包成功。

運(yùn)行查看效果,發(fā)現(xiàn)首屏廣告及末屏廣告均已去除,但是出現(xiàn)了一個(gè)小問題,RE管理器退出后,會出現(xiàn)“RE管理器已停止運(yùn)行”的提示,顯然這與末屏廣告有關(guān),由此我們進(jìn)入smali部分分析邏輯。


0x2. 邏輯跳過/刪除調(diào)用

因?yàn)槭窃趹?yīng)用程序結(jié)束時(shí)出現(xiàn)了此問題,我們最先想到的就是Activity的生命周期中的OnDestroy,根據(jù)程序包名om.speedsoftware.rootexplorer.RootExplorer,我們查看RootExplorer這個(gè)Activity中的OnDestroy。




根據(jù)smali我們可以分析出,OnDestroy首先判斷是否網(wǎng)絡(luò)可用,如果可用就啟動網(wǎng)頁加載,如果不可用就執(zhí)行:cond_0。為方便理解也可以查看jar代碼:




此處的處理可以直接刪除cond_0之前的代碼直接從cond_0開始執(zhí)行(刪除調(diào)用),或者在判斷網(wǎng)絡(luò)是否可用時(shí)無論如何跳轉(zhuǎn)到:cond_0(邏輯跳過)。

邏輯跳過可以修改if-eqz v0,:cond_0 為 goto :cond_0。修改后打包運(yùn)行,已停止的提示消失。


總結(jié)

本文只是提供了部分思路,其他思路大家可以自己去嘗試,比如程序入口點(diǎn)相關(guān)分析。

?