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文件存放路径,就好了!一切就是这么简单!!!

时间: 2024-10-07 16:56:38

apk去广告工具(利用apktool去除apk文件里的广告)的相关文章

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

利用python开发了一个提取sim.log 中的各个关键步骤中的时间并进行统计的程序: #!/usr/bin/python2.6 import re,datetime file_name='/home/alzhong/logs/qtat1/R2860.01.13/sim-applycommitrollback-bld1.log' file=open(file_name,'r') acnum=[];time_res=[];lnum=0 def trans_time(time): t1=datet

apk反编译工具

反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中classes.dex转化成出的jar文件,即源码文件 使用步骤: 1.apk反编译得到程序的源代码.图片.XML配置.语言资源 在cmd中定位到apktool所在文件夹下,输入命令apktool.bat d -f  xx.apk(apk名字)  xx(生成文件存放位置). apktool.bat

apk反编译工具-apktool

apk很easy被反编译,关于这篇文章apktool反编译工具. (一)优势反编译 1.能学习别人优秀代码 看看优秀apk他们的string.color命名规则,看看布局排版等都能学习到东西. 2.进行简单改动,二次打包 (二)apktool的使用 APKTool是GOOGLE提供的APK编译工具.2.0下面须要安装JDK6.0,2.0及以上须要安装JDK7.0. 这是apktool下载地址,把下载到的APKTOOL中的三个文件(aapt.exe.apktool.bat.apktool.jar)

APK的反编译工具,Apktool,Dex2jar,JD-GUI等使用

http://blog.csdn.net/lostinai/article/details/44201971 http://blog.csdn.net/stay_foolish_one/article/details/41659723 一.用Apktool反编译和编译的方法 评价:它仅将DEX文件反编译成Smali源码:XML文件能生成明码格式,且较好!在命令行下,定位到apktool.bat文件夹,用以下命令进行反编译!命令格式:apktool.bat d -f [apk文件] [输出文件夹]

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

网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktool反编译工具2.2.2.apk我放在c盘根目录,名字叫test.apk,cmd打开命令行. 运行:apktool d -f c:\test.apk 当前目前便会生成一个test的目录,对应的包的文件目录. 如要做啥修改,可以自行修改包的内容,有些加密了可能修改不了.改完了然后得重新编译成apk. 运

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

一.APK Multi-Tool介绍    APK Multi-Tool 是APK Manager的升级版,是一个强大的APK反编译工具,集多种功能于一身,是居家必备.做ROM必选的工具!    这是一个比较方便的适合非开发者的小工具,可以对一些APK程序做自己喜欢的修改!    目前官方最新版是APK Multi-Tool 1.0.3 ,官方网站是:http://apkmultitool.com 二.汉化说明    此版本基于官方 APK Multi-Tool 1.0.3 (05/17/201

android 利用 aapt 解析 apk 的应用名称 包名 版本号 权限等信息

在上传各大市场时发现 apk 上传后能自动解析出应用名称.包名.版本号.使用权限等信息,所以就研究了一下 1 直接解压 apk 解析  AndroidManifest.xml 是不行的,因为 apk 打包时 AndroidManifest.xml 文件被压缩混淆了. 2 主要有两种实现方式 1) 通过 aapt (android asset packaging tool) aapt 是打包.更新资源的一个工具,可以解析出 apk 的资源信息 2) apktool 著名的反编译工具,先反编译出 A

android APK反编译工具的使用及工具下载(mac)

工具名称.介绍及下载地址: apktool(获取资源文件) 作用:获取资源文件,可以提取出图片文件和布局文件进行使用查看. 下载地址: dex2jar(获取源码文件) 作用:将apk反编译成java源码(classes.dex转化成jar文件). 下载地址: jd-gui(查看源码) 作用:查看APK中classes.dex转化成出的jar文件,即源码文件 下载地址: 反编译流程: 一.apk反编译得到程序的源代码.图片.XML配置.语言资源等文件 下载上述工具中的apktool,解压得到3个文

apktool逆向apk包

在AndroidStudio创建so一节里创建了so,并且在java里面调用so的HelloWorld方法,编译Android Studio后生成包app-debug.apk. 在逆向apk时如果该apk引用了so的话,直接用Android Killer肯定没法直接得到so里的代码,我们需要先把apk文件解包,再读取so中的代码.下面介绍用apktool解apk包. 一 工具准备 1 下载apktool,apktool下载地址:https://ibotpeaches.github.io/Apkt