1. 程式人生 > >自助去除APK的廣告!(整理、修改、簡化版)

自助去除APK的廣告!(整理、修改、簡化版)

地址:http://www.miui.com/article-194-1.html

首先要宣告,以下方法是各種百度谷歌搜尋後,綜合整理來的。共參考三個帖子:

http://www.life404.cn/post-89.html
http://lephone.zol.com.cn/1/1_4247.html
http://bbs.mumayi.com/thread-28823-1-1.html
非常感謝他們!
不過他們三人的方法也各有所不足。所以我整理了一下發到這裡~
希望大家一起研究討論~

首先是要用到的工具,一共五個:
1、WINRAR(這個沒有人沒有吧)
2、NOTEPAD++
3、Undex(按照自己的系統選擇)
4、APKTool
5、AndroidResEdit(這個還有漢化遊戲的功能哦,程式自帶教程,有興趣的同學可以看下)

然後說下原理:
去除APK中的廣告共有兩個步驟,其一是斷掉廣告程式碼對網路的訪問,這樣可以免除流量;其二是把廣告的大小歸零,這樣就不會有個框在那擋螢幕了。
根據這兩個步驟,可以去除大部分的程式廣告,不過小部分還是沒辦法的,比如SLICEIT以及這個公司的各種遊戲(它們的廣告比較高階……如果真的認真分析還是有可能去掉的。)

開始具體步驟!
1、這次我拿來做小白鼠的是《家園6》這個遊戲,我市面上找了很久,但都是有廣告的,而且是那種強烈影響操作的廣告!十分的邪惡啊。
為了保證過程沒問題,我將檔名改成了HomeLand.apk。
2、
HomeLand.apkWINRAR開啟,解壓出其中的classes.dex
1.png
3、把解壓出得classes.dex複製到Xtemp資料夾內,並拖取檔案圖示到dex.bat上,在彈出的視窗中按1
2.png
3.png
4、啟動Notepad++,按Ctrl+F進入檔案查詢,選擇“檔案查詢”選項卡,在查詢目標輸入“http://,替換為為空白,目錄選擇Xtemp目錄下的classes,按“在文章替換”。
PS:這裡的查詢目標其實不該是“http://,詳見註釋1。
4.png
5、class資料夾拖到dex.bat上,在彈出視窗中按2
5.png
6、把得到的out.dex改名為classes.dex,拖到HomeLand.apk上,即複製入原
apk包,再刪除包內META-INF資料夾下,除了“MANIFAST.MF”外所有檔案。


7、將得到的APK包放入APKToolv1.3.2資料夾下。開始選單-執行-cmd。利用DOS命令進入APKTOOL V1.3.2的資料夾:

Cd c:\users\scarab\desktop\apktool v1.3.2
再輸入:
Apktool d HomeLand.apk homeland apktool dAPK檔名解壓到的資料夾名)
6.png
8、開啟Notepad++。繼續進入查詢。目錄改為APKtool資料夾下的剛出現的資料夾,做兩次替換。
第一次,查詢android:layout_width="fill_parent"
替換為android:layout_width="0.0dip"
第二次,查詢android:layout_height="wrap_content"替換android:layout_height="0.0dip"
PS:這裡如果嚴謹點應該查詢完整的廣告程式碼,詳見註釋2。
7.png
9、回到cmd視窗,輸入:

apktoolb homeland homelandnoads.apkapktool b 資料夾名
生成的APK檔名)

8.png
10、開啟AndroidResEdit資料夾下的AndroidResEdit.exe

選擇簽名-簽名APK檔案,選擇剛才生成的homelandnoads.apk
點選“立即簽名”:
9.png
11、等成功的提示出現後,去廣告就成功了。安裝到手機上看效果吧~


註釋1:
這裡查詢的應該是廣告源,常見的廣告源有以下這些:

Admob的廣告下載源:
http://r.admob.com/ad_source.php
http://mm.admob.com
http://api.admob.com


Google Ads的廣告下載源:
http://pagead2.googlesyndication.com/pagead/afma_load_ads.js

有米廣告下載源:

http://www.youmi.net
其它廣告下資源:

http://www.casee.cn
http://www.vpon.com
http://www.wooboo.com.cn

需要分別檢索這些內容,然後去掉程式碼中引號內的部分。最好用無效地址替換:0.0.0.0或者其他奇奇怪怪的IP。
但是,這個麻煩不說,而且這幾個只是主要的廣告源,還有無數天知道哪裡冒出來的。。比如這次提到的家園就是,我把以上這些分別檢索了都去掉後仍舊有廣告,所以乾脆檢索“http://”,並且直接以空白替代之。按理說是會出錯,不過遊戲執行起來沒問題~(至少我還沒碰到過)。所以大家可以先嚐試這種偷懶辦法,如果不行的話那就真只有逐個分析刪除了。


註釋2:關於廣告程式碼:
常見的廣告程式碼如下:

Admob的廣告程式碼為:
android:id=”@+id/ad”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />

Google Ads的廣告程式碼為:
android:id=”@+id/adview”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />

然後再修改其中的大小部分。如果直接按文中的替換法,不知道會不會把什麼不該替換的給換了,從而導致某些東西“神祕消失”,所以這個仍舊是一個不嚴謹的偷懶辦法。供大家嘗試使用~

貌似排版有點亂,因為我最初是自己寫下來給朋友玩的,所以用的WORD儲存。結果貌似複製到這邊來的時候有些奇怪,包括截圖,也因為是WORD中再拿出來的關係,顯得比較小的樣子,望大家見諒。