第一部分:软件准备。
1.apktool————对apk执行分解(反编译)和合成(编译)的工具
2.dex————对classes.dex分解(dump)和合成(build)的工具
3.APKsign————apk签名工具
4.notepad++或者Em edit————文本编辑工具
5.java环境变量配置————apk签名需要
前三个工具打包为a.d.cn文件如下可 下载 :
第二部分:去广告原理。
先简单了解下软件的广告原理(可参考apk文件的组成,见帖 http://android.d.cn/bbs/thread-38605-1-1.html )
一个软件若要显示广告,需要先导入SDK,并在 Android Manifest.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 文件夹内(可改名,改得简单易于操作)。

2.反编译
运行 run.bat 文件,cmd窗口中输入命令 apktool_d_*.apk 如图(解释:d为dump缩写,反编译的意思。)

如下图为反编译成功。

然后将在apktool文件夹中生成一个文件夹,名称为apk的名称,这个文件夹里的文件就是组成apk的文件。
打开
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文件,这个就是编译后得到的文件。

记得要搜索目录,选第三个选项卡。
我们需要搜索的关键词一般主要有以下几个:
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文件。

放入a.d.cn/dex/文件夹中,如图

然后运行dump.bat对classes.dex文件反编译,得到out文件夹,如下图

然后进行上述教程中的“ 3.修改”部分。但是搜索的目录要改成这个out文件夹。
修改完毕后保存文件,运行build.bat,稍等片刻会生成out.dex文件,如下图
![4QDL8XR]G[GC[DS9XQ3@F.jpg](http://image39.360doc.com/DownloadImg/2011/10/1610/18519263_15.jpg)
然后将out.dex重命名为classes.dex,用解压缩软件替换到APK中,进行签名即可。