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

本文樣本是我們常用的文件管理器:RE文件管理器,。
下載鏈接:https://pan.baidu.com/s/1BUivyeioL2rb_WVOzp7Dvw 密碼: xmku
< 文中的apk修改僅用于研究學(xué)習(xí),如涉及權(quán)益侵犯請(qǐng)隨時(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)的聲明,,刪除掉這些聲明,這也是最簡單廣告的基本去除方式,。
首先我們?cè)贛anifest文件中搜索廣告關(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管理器退出后,會(huì)出現(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ò)可用,如果可用就啟動(dòng)網(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)分析,。