本帖最后由 dmqhcx88 于 2012/10/20 01:32 编辑
很多时候,我们下载好一款Andriod软件,却被软件中的广告弄的很烦。不停跳动的广告让人觉得非常不爽,
而且在玩的时候,还有可能点击到广告,中断运行。那各位是不是非常想取出Andriod软件中的广告呢?
第一部分:软件准备
以下工具已打包,下载地址见后面
1.apktool————对apk执行分解(反编译)和合成(编译)的工具
2.dex————对classes.dex分解(dump)和合成(build)的工具
3.APKsign————apk签名工具
4.notepad++或者Em edit————文本编辑工具
5.java环境变量配置————apk签名需要
先安装java环境,这一步就不详细叙述了,跟普通程序的安装过程是一样的。
第二部分:去广告原理
先简单了解下软件的广告原理(可参考apk文件的组成)
一个软件若要显示广告,需要先导入SDK,并在AndroidManifest.xml中注册。
Res\layout内的xml文件就包含有广告界面的配置代码,修改这些代码改变广告显示的大小就可以去除广告界面。
只是单单不显示广告,软件还会下载广告所需的数据,那么就要修改代码来屏蔽广告下载源。
目前Android的广告供应商有两个,一个是Admob,一个是Google Ads,前者已被后者收购,但两者SDK依然独立。
另外国内还有casee.cn,但十分不常见。
Res\layout内的xml文件广告代码一般格式如下:
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.准备apk
将apk文件放入apktool文件夹内(改名为123.apk)
2.反编译
普通APK:
(1).将APK放置到APKTool目录下,并改名为123.apk
(2).打开APKTool.cmd,选择1进行反编译操作完成后会生成一个apk文件夹,这个文件夹里的文件就是组成apk的文件。
系统APK:
需要将系统APK,framework-res.apk放置到APKTool目录里,并将系统apk改名为123.apk(如果是HTC Rom你还需要将com.htc.resources.apk也放到目录里)
3.修改
打开notepad++,按ctrl+F,调出搜索对话框(记得要搜索目录,选第三个选项卡)
我们需要搜索的关键词一般主要有以下几个:
admob.com admob google.com http://
notepad++下面会显示搜索出来的文件位置,点击跳转到相应的文件,一般为*.smali文件。
然后我们将http:// 开头的字符串改成0.0.0.0或者127.1.1.1等无效的ip。使广告源无法访问。改完记得保存文件。
如果搜索的是非IP地址,那么将字符串该乱即可,例如google.com改成a.com等
4.编译
保存文件后将进行编译。在CMD命令提示符后输入命令 apktool_b_文件夹名_*.apk (解释:b为build缩写,编译的意思。)
编译成功将在apktool文件夹中生成一个*.apk文件,这个就是编译后得到的文件。
5.签名
运行APKsign目录下的APKsign.exe
选择好APK所在目录,签名后文件爱你保存的目录,点击制作签名。稍片刻会有个签名成功的确认按钮,点击确认结束。
得到签名后的apk文件。接下来安装测试即可。
--------------------------------------------------
至于前面提到的Res\layout内的xml中的代码处理:简单介绍下:
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” />
通过notepad++将搜索路径定位到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"
此过程就是将广告显示的位置缩小到0像素,即可完成不显示广告,但现在广告源泛滥,可能有时不奏效的,所以还要按照上述操作进行。
--------------------------------------------------
关于无法通过apktool反编译,或者编译不成功,或者编译成功安装出错的软件,去广告的办法。(其实去广告完全可按以下操作完成)
直接解压缩软件(rar,7z等)打开apk,提取其中的classes.dex文件。
放入dex文件夹中然后运行解包.bat对classes.dex文件反编译,得到out文件夹
然后进行上述教程中的“3.修改”部分。但是搜索的目录要改成这个out文件夹。
修改完毕后保存文件,运行打包.bat,稍等片刻会生成out.dex文件
然后将out.dex重命名为classes.dex,用解压缩软件替换到APK中,进行签名即可。
工具打包下载:
http://pan.baidu.com/share/link?shareid=95887&uk=1207964410
|