2011-06-01

使用 apktool 去除廣告教學

先瞭解下軟件的廣告原理一個軟件若要顯示廣告,需要先導入SDK,並在AndroidManifest.xml中註冊。
res\layout目錄內的xml文件就包含有廣告界面的配置代碼,修改這些代碼就可以去除廣告界面。
另外還要屏蔽廣告下載源,不然只是單單不顯示廣告界面而已,軟件還會下載廣告所需的數據,耗費流量。
目前Android的廣告供應商有兩個,一個是Admob,一個是Google Ads,前者已被後者收購,但兩者SDK依然獨立。

廣告代碼
Admob的廣告代碼為:
<com.admob.android.ads.AdView
android:id=”@+id/ad”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />

Google Ads的廣告代碼為:<com.google.ads.GoogleAdView
android:id=”@+id/adview”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />

廣告下載源
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

去廣告步驟:
1、去除廣告下載源

- 解包classes.dex(方法上面已講過),用Notepad++ Portable搜索廣告下載源地址(若不知道軟件用的是哪個供應商的廣告的話,最好兩家的下載源都搜索下),如圖:



搜索結果如下:


- 將廣告下載源地址修改成無效的地址(例如0.0.0.0、192.168.1.1等),如圖:



- 完成後保存,重新打包classes.dex,拖回apk安裝包替換原文件。

2、去除廣告界面1 將剛剛已經替換了classes.dex文件的apk安裝包用APKTool反編譯。

2 用Notepad++ Portable搜索廣告代碼(上面已列出)
- 如圖,將搜索路徑定位到res文件夾(就是反編譯後的res文件夾),代碼只搜索開頭就行了,如:com.admob.android.ads.AdView 和 com.google.ads.GoogleAdView。
如圖:




- 搜索結果:



③ 雙擊黃顏色區域,修改下圖上方的代碼 android:layout_width="fill_parent" 修改為 android:layout_width="0.0dip"android:layout_height="wrap_content" 修改為 android:layout_height="0.0dip"




修改后:


- 將所有搜索到的代碼按照上面修改,完成後保存,用APKTool重新編譯打包,可簽,安裝即可。

* 再作下解釋:
android:layout_width="fill_parent" 修改為 android:layout_width="0.0dip"android:layout_height="wrap_content" 修改為 android:layout_height="0.0dip"
之所以這麼修改,是因為要讓廣告窗口不顯示,android:layout_width定義的是廣告窗口的寬度,android:layout_height定義的是廣告窗口的高度,0.0dip代表0像素,將兩者後面的值修改為0.0dip,那麼高和寬都是顯示0像素,等於不顯示,達到了去廣告窗口界面的目的。


via: microdu

沒有留言: