基本知识

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文件里的广告)的更多相关文章

  1. apk反编译(1)用apktool破解apk

    1,下载 http://ibotpeaches.github.io/Apktool/ 2,破解 把下载的apktool_2.0.3.jar 和 weixin638android680.apk  拷贝到 ...

  2. 利用python 提取log 文件里的关键句子,并进行统计分析

    利用python开发了一个提取sim.log 中的各个关键步骤中的时间并进行统计的程序: #!/usr/bin/python2.6 import re,datetime file_name='/hom ...

  3. apk反编译工具

    反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中 ...

  4. 利用apktool反编译apk

    下载apktool所需文件: a. apktool1.5.2.tar.bz2 b.apktool-install-windows-r05-ibot.tar.bz2  (windows系统) 步骤阅读 ...

  5. apk反编译工具-apktool

    apk很easy被反编译,关于这篇文章apktool反编译工具. (一)优势反编译 1.能学习别人优秀代码 看看优秀apk他们的string.color命名规则,看看布局排版等都能学习到东西. 2.进 ...

  6. 【转】利用apktool反编译apk,并且重新签名打包

    网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktoo ...

  7. Android apk去广告

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha  313134555@qq.com 下载地址: [北方网通]    [电信网通] [下载说明] 1 点击上面的地址,打开下载页面 ...

  8. 【Android编程】Java利用apktool编写Metasploit恶意后门注入工具

    /声明:本文作者Kali_MG1937 csdn博客id:ALDYS4 QQ:3496925334 未经许可禁止转载!/ 注意,本文为作者从CSDN搬迁至此的文章 注意!此文章虽然 未被 作者标记到 ...

  9. APK Multi-Tool强大的APK反编译工具终极教程

    一.APK Multi-Tool介绍    APK Multi-Tool 是APK Manager的升级版,是一个强大的APK反编译工具,集多种功能于一身,是居家必备.做ROM必选的工具!    这是 ...

随机推荐

  1. 洛谷——P1968 美元汇率

    https://www.luogu.org/problem/show?pid=1968#sub 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程 ...

  2. centos: git clone提示Permission denied publickey 问题

    问题: Initialized empty Git repository in /data1/mouxuan/fastsocket-private/.git/ Permission denied (p ...

  3. mysql基础综述(四)

    1.数据库的简单介绍 1.1 数据库,就是一个文件系统,使用标准sql对数据库进行操作 1.2 常见的数据库 oracle  是oracle公司的数据库,是一个收费的大型的数据库 DB2,是IBM公司 ...

  4. SQL 递归使用

    直接贴代码吧= = WITH CTE AS ( -->Begin 一个定位点成员 SELECT COUNTRYORDERID,HSNAME, COUNTRYNAME,PARENTORDERID, ...

  5. hdu2476String painter (区间DP)

    Problem Description There are two strings A and B with equal length. Both strings are made up of low ...

  6. 转换Arcgis Server REST接口实现OL2直接调用

    概述: 本文解说怎样通过Arcgis Server REST 的导出地图(Export)接口.实如今OL2中直接以WMS的方式调用Arcgis Server REST服务. 实现思路: 1.rest的 ...

  7. 2015.03.13,外语,读书笔记-《Word Power Made Easy》 10 “如何讨论交谈习惯”学习笔记 SESSION 26

    1.a Spartan virtue 古斯巴达人中一位有名的Laconia国王,其言语比Vermonter(美国佛蒙特州人)还简洁.一个传说,马其顿菲利普国王(亚历山大的老爸)要进攻他们的都城,发了一 ...

  8. HDFS 文件格式——SequenceFile RCFile

     HDFS块内行存储的例子  HDFS块内列存储的例子  HDFS块内RCFile方式存储的例子

  9. UESTC--1262--Memory(dfs)

    Memory Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu SubmitStatus De ...

  10. 第七章 用户输入和while 循环

    7.1 创建多行字符串的方式: 01 prompt="if you tell me who you are, we can personalize the message you see.& ...