apk去广告工具(利用apktool去除apk文件里的广告)
基本知识
apk安装包的文件结构
以知名桌面软件“LauncherPro”为例,apk安装包文件目录:
文件目录如下:
- META-INF
- res
- anim
- color
- drawable
- drawable-hdpi
- drawable-land
- drawable-land-hdpi
- drawable-mdpi
- drawable-port
- drawable-port-hdpi
- layout
- layout-land
- layout-port
- xml
- AndroidManifest.xml
- classes.dex
- resources.arsc
- 多数情况都要汉化的是resources.arsc、classes.dex和res文件夹里的***.xml文件。
- META-inf文件夹里面存放的是证书文件,软件修改后需要将里面的证书文件删除(***.RSA、***.SF、***.MF三个文件)再重新签名,否则软件无法安装。
- res文件夹里存放的大部分是软件所需的资源及布局文件(drawable存放资源、layout、xml存放布局文件***.xml),部分需要汉化的单词、语句会在这些***.xml文件里。
- AndroidManifest.xml文件里包含了软件名称、版本、权限、引用的库文件等信息。极少数软件在这个文件里会有单词、语句需要汉化。
- classes.dex文件是Java源码编译后的代码文件。通常该文件里都有单词、语句需要汉化。
- resources.arsc文件是编译后的资源文件,大多数情况下,需要汉化的单词、语句绝大多数都在这个文件里,汉化的时候首先就要看这个文件。
* 另外,一些需要汉化的***.png图片文件、***.html文件、***.txt文件可能会在assets文件夹或res/raw文件夹内。图片文件需要用photoshop修改,html、txt文件可以直接用Notepad++ Portable文本编辑工具修改(不建议用系统自带的记事本,这东西杀伤无数...)。
2、打包/解包
apk安装包其实就是zip格式的压缩包,只是文件扩展名改成了apk而已,所以可以直接用解/压缩软件WinRAR打开,若你的系统没有关联apk文件,请先安装WinRAR,打开WinRAR——选项——设置——综合,在“用户自定义压缩文件扩展名”处填上apk,点“确定”保存即可。之后就可以直接双击以WinRAR打开apk安装包文件。
汉化软件的时候,不需要把整个apk安装包解包,对于需要汉化的文件,如resources.arsc、classes.dex等文件,直接用鼠标拖出来,汉完后再拖进apk安装包后重新签名就行了(签名问题下面会讲到)。
3、签名
Android的软件也需要签名,不过和Symbian相比,却要简单方便得多,首先是不需要自己去申请证书,下载个签名工具就可以签名了。另外,我们从电子市场、软件官网下载来的软件都是已经签好名的,可以直接安装,这里讲到的签名,是针对软件安装包被修改过的情况(如汉化需要修改安装包内的文件,原来的签名文件就不能用了,所以要重新签名软件才能正常安装。),正常情况下不需要签名。
现在Android可用的签名工具很多,想方便点的话可以用汉化浪子出品的AndroidResEdit,这个软件自带签名包(工具在帖子附件有提供)。
签名方法很简单,删除原证书文件后(META-INF 文件夹内的***.RSA、***.SF、***.MF三个文件),打开AndroidResEdit——签名——签名apk文件,选择需要签名的apk安装包后点击“立即签名”即可。
4、安装Java环境
这个是最基本的,汉化相关的软件都需要用到Java环境,必须要安装,否则汉化过程中出现各种奇奇怪怪的问题不要问我。具体安装Java环境方法,可以百度一下。
安装apktool并反编译apk文件
要安装apktool,要下载两个文件
在windows环境下:
apktool-install-windows-r04-brut1.tar.bz2
apktool1.4.1.tar.bz2
在linux环境下:
apktool-install-linux-r04-brut1.tar.bz2
apktool1.4.1.tar.bz2
下载主页 http://code.google.com/p/android-apktool/
下载解压缩后,会得到三个文件,分别为aapt.exe, apktool.bat与apktool.jar。
然后将这三个文件扔到C盘下的windows目录中,即可。
要确认apktool已经正确安装,可以运行命令行窗口,直接键入apktool,可看到如图显示:
apktool安装正确后,就可以反编译apk文件了。反编译apk文件,只需要在命令行窗口下输入如下所示的命令语句:
apktool d D:\dartE.apk D:\dartE
命令解析:
-apktool d 表示要反编译apk文件
-D:\dartE.apk 是apk文件存放的绝对路径
-D:\dartE 是要输出的反编译文件的存储位置(注:apktool会自动创建一个叫做dartE的文件夹来存放反编译文件,而若在之前已经存在dartE文件夹,则apktool会提示文件夹已存在,而不会进行反编译)
键入命令后回车,出现如下几行语句后,就会发现在D盘下已经多了一个叫做dartE的文件夹,里面存放的就是反编译后的文件。
汉化APK文件
汉化APK文件,主要的任务就是利用apktool将apk文件反编译,然后找到其语言包(语言包中均为*.xml文件),将里面的英文改为对应的中文即可。另外,有些英文可能被写死在了程序源代码中,汉化这部分就需要搜索并汉化利用apktool工具反编译classes.dex文件后得到的源码文件*.smali文件了。
首先,讲解如何找到并汉化apk语言包。
利用apktool反编译apk文件后,会得到如图的几个文件及文件夹
其中,smali文件夹下存放反编译后的源码文件*.smali。而res文件夹下,则是反编译后的apk资源文件。其中包括程序用到的图片,声音,布局xml,及语言包等。因此,应点开res文件夹,会看到如图所示的几个文件夹
其中用values-***命名的文件夹,就是我们要找的语言包!
values是英文语言包,values-zh是中国地区语言包(包含港澳台及内地),values-zh-rCN是中文简体语言包(只包含内地),values-zh-rTW是中文繁体语言包(港澳台)。除此以外,其它地区的语言包都是精简的对象,可以不过多了解。
* 若要汉的软件没有中文语言包,可以自己在res目录下新建values-zh-rCN和values-zh-rTW文件夹,再把values文件夹内的原arrays.xml、strings.xml语言文件复制到values-zh-rCN和values-zh-rTW文件夹,然偶将语言文件内的单词、语句修改成中文并保存即可。
在values文件夹里,通常有arrays.xml、strings.xml等语言文件,要汉化这些文件,可以用Notepad++ Portable打开,如图:
我们只需要将>*****间的*****内容改成中文就行了。
对于写死在源码中的英文,这需要我们利用Notepad++工具,在smali文件夹下搜索相应的英文单词,然后再修改为中文了。
Tips:
- 若对软件的汉化熟悉后,用“文件查找”搜索要汉的单词、语句时,可以直接输入“const-string”,因为基本上这些单词、语句都在const-string后面,如图:
- 对于刚刚接触汉化的人,源码汉化这部分最好先在汉完资源文件和xml文件后,把软件装上去查找没有汉完的单词、语句,然后再到smali文件夹下查找汉化,软件上没有的单词,就不要多汉,不然出问题了很难查找,smali重新打包后,那些中文是搜不出来的,所以很难修改。切记,宁可少汉,也不要多汉,即使少汉了,日后还可以补汉上去。
其它文件类型汉化
- 除了语言包、***.xml、**.smali这三中常见的文件类型需要汉化外,有些软件还有另外一些文件需要汉化,例如txt、html、png等文件。
* 下面对这类文件的汉化作下讲解:
① txt汉化,txt之类的文本文件可以直接用Notepad++ 打开,难度不大,将里面的内容修改成中文后保存即可。这类文件大部分用作显示关于信息、帮助信息等,所以基本上都是一些整句句子。另外,若保存后在手机上这些内容显示乱码的话,可以尝试将文件格式更改为UTF-8格式(在Notepad++ Portable中打开格式——转为UTF-8编码格式)。
②html文件的汉化也和txt文件类似,可以用Notepad++ Portable汉化,完成后保存即可,需要注意的格式问题也和txt文件一样。另外要注意的是这类文件里面有代码,熟悉汉化后对这些代码自会有相应的了解,例如
,表示这段代码后的文字内容以红色、居中显示。
③ png图片文件通常都是用Photoshop来修改的,部分软件是通过调用图片来达到显示选项的目的,而单词又在图片上,所以需要通Photoshop将图片上的单词修改成中文,保存后再拖回apk安装包中替换原文件即可。这个只需要Photoshop上的一些最基本的操作,难度并不大,就不作过多阐述了。
去除广告
利用apktool去除apk文件里的广告,主要是要去做两个部分工作:
让广告在程序里无法显示(但程序仍会下载广告,只是没有显示)
禁止程序自动在后台访问广告源,这样做后程序才不会偷偷的在后台下载广告,浪费我们的手机流量。
目前Android的广告供应商有两个,一个是Admob,一个是Google Ads,前者已被后者收购,但两者SDK依然独立。
- 广告代码
Admob的广告代码为:
<COM.ADMOB.ANDROID.ADS.ADVIEW< p>
android:id=”@+id/ad”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />
Google Ads的广告代码为:
<COM.GOOGLE.ADS.GOOGLEADVIEW< p>
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
下面就来讲解如何做这两部分工作。
禁止显示广告
由于程序的布局信息都写在了res文件夹下的*.xml文件中,因此,我们可以?直接利用Notepad++搜索*.xml文件中的广告代码,?再将其显示的宽,高设置为0像素即可。即将上面的广告代码中
android:layout_width=”...” 设置为 android:layout_width="0.0dip"
android:layout_height="..." 设置为 android:layout_height="0.0dip"
? 搜索广告代码:
在res文件夹下,按广告代码的关键字"com.admob.android.ads.AdView"或
"com.google.ads.GoogleAdView"搜索。(为了以防万一,干脆两个广告供应商都搜索一遍)
搜索后,在屏幕下方会得到如下结果。
双击黄色的部分,转到程序中的相应代码处,然后将宽,高设置为0.0dip即可!
?去除广告下载源
在Android程序中,广告下载源是被写在代码中的。而利用apktool反编译程序后,其编译后的源代码文件即classes.dex文件,被反编译为*.smali文件,这是一种文本文件,可以用记事本打开查看里面的内容(但其内容并非原始的*.class文件内容,因此并不是真正的源代码文件)。尽管如此,我们仍可以在其中搜索到广告下载源网站,并将网址改为无效的地址,借此来阻止程序自动下载广告数据。
apktool会将反编译得到的*.smali文件放在smali文件夹中。因此我们在smali文件夹下利用Notepad++搜索广告下载源网址(在文章开始处已经列出),并将其网址替换为"0.0.0.0"。
得到的内容如下所示,同样双击黄色部分,跳到代码处,将其网址改成
"0.0.0.0"
至此,我们已经完成了apk文件去广告的整个过程。
将程序重新打包并签名
将apk文件汉化,并去除广告后,最后一步要做的,就是将程序重新打包为apk文件并签名使其能够在手机中安装。同样的,我们需要分为两步进行:?将程序重新打包 ?为打包后的apk文件签名
?将程序重新打包
利用apktool,可以将程序重新打包。在命令行下,输入如下命令
* 命令说明:apktool b D:\dart
- apktool b为重新编译命令
- D:\dart 为需要编译的目录(就是存放刚刚反编译后的文件的文件夹,名称可以自定义)
重新打包后,我们再查看D:\dart目录,会发现其中多了一个名称为dist的文件夹,打开,我们重新打包的apk文件就在里面啦~~~
?为打包后的apk文件签名
签名的话,我们用汉化浪子出品的AndroidResEdit软件,其自带签名功能,相当方便啊。只要进入软件,点选【签名】,然后选择要签名的apk文件,在点击【立即签名】,然后在选择签名后的apk文件存放路径,就好了!一切就是这么简单!!!
apk去广告工具(利用apktool去除apk文件里的广告)的更多相关文章
- apk反编译(1)用apktool破解apk
1,下载 http://ibotpeaches.github.io/Apktool/ 2,破解 把下载的apktool_2.0.3.jar 和 weixin638android680.apk 拷贝到 ...
- 利用python 提取log 文件里的关键句子,并进行统计分析
利用python开发了一个提取sim.log 中的各个关键步骤中的时间并进行统计的程序: #!/usr/bin/python2.6 import re,datetime file_name='/hom ...
- apk反编译工具
反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中 ...
- 利用apktool反编译apk
下载apktool所需文件: a. apktool1.5.2.tar.bz2 b.apktool-install-windows-r05-ibot.tar.bz2 (windows系统) 步骤阅读 ...
- apk反编译工具-apktool
apk很easy被反编译,关于这篇文章apktool反编译工具. (一)优势反编译 1.能学习别人优秀代码 看看优秀apk他们的string.color命名规则,看看布局排版等都能学习到东西. 2.进 ...
- 【转】利用apktool反编译apk,并且重新签名打包
网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktoo ...
- Android apk去广告
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 下载地址: [北方网通] [电信网通] [下载说明] 1 点击上面的地址,打开下载页面 ...
- 【Android编程】Java利用apktool编写Metasploit恶意后门注入工具
/声明:本文作者Kali_MG1937 csdn博客id:ALDYS4 QQ:3496925334 未经许可禁止转载!/ 注意,本文为作者从CSDN搬迁至此的文章 注意!此文章虽然 未被 作者标记到 ...
- APK Multi-Tool强大的APK反编译工具终极教程
一.APK Multi-Tool介绍 APK Multi-Tool 是APK Manager的升级版,是一个强大的APK反编译工具,集多种功能于一身,是居家必备.做ROM必选的工具! 这是 ...
随机推荐
- 洛谷——P1968 美元汇率
https://www.luogu.org/problem/show?pid=1968#sub 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程 ...
- centos: git clone提示Permission denied publickey 问题
问题: Initialized empty Git repository in /data1/mouxuan/fastsocket-private/.git/ Permission denied (p ...
- mysql基础综述(四)
1.数据库的简单介绍 1.1 数据库,就是一个文件系统,使用标准sql对数据库进行操作 1.2 常见的数据库 oracle 是oracle公司的数据库,是一个收费的大型的数据库 DB2,是IBM公司 ...
- SQL 递归使用
直接贴代码吧= = WITH CTE AS ( -->Begin 一个定位点成员 SELECT COUNTRYORDERID,HSNAME, COUNTRYNAME,PARENTORDERID, ...
- hdu2476String painter (区间DP)
Problem Description There are two strings A and B with equal length. Both strings are made up of low ...
- 转换Arcgis Server REST接口实现OL2直接调用
概述: 本文解说怎样通过Arcgis Server REST 的导出地图(Export)接口.实如今OL2中直接以WMS的方式调用Arcgis Server REST服务. 实现思路: 1.rest的 ...
- 2015.03.13,外语,读书笔记-《Word Power Made Easy》 10 “如何讨论交谈习惯”学习笔记 SESSION 26
1.a Spartan virtue 古斯巴达人中一位有名的Laconia国王,其言语比Vermonter(美国佛蒙特州人)还简洁.一个传说,马其顿菲利普国王(亚历山大的老爸)要进攻他们的都城,发了一 ...
- HDFS 文件格式——SequenceFile RCFile
 HDFS块内行存储的例子  HDFS块内列存储的例子  HDFS块内RCFile方式存储的例子
- UESTC--1262--Memory(dfs)
Memory Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu SubmitStatus De ...
- 第七章 用户输入和while 循环
7.1 创建多行字符串的方式: 01 prompt="if you tell me who you are, we can personalize the message you see.& ...