您的位置:首页 > 移动开发 > Android开发

android-apktool 中文使用说明

2012-11-13 14:47 260 查看

android-apktool 中文使用说明

[align=left]Android反编译工具:Apktool,支持Linux 、Windows。[/align]

Android apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片、XML配置、语言资源等文件,也可以添加新的功能到APK文件中。用该工具来汉化Android软件然后重新打包发布是相当简单的。

1、安装

1).首先安装需要JAVA环境,先下载JDK/JRE,点击下载,已经有JAVA环境的可跳过此步

2).到code.google上下载apktool.jar以及相关文件:http://code.google.com/p/android-apktool/downloads/list

点击下载apktool-1.0.0.tar.bz2 和apktool-install-windows-2.1_r01-1.zip

3).解压apktool-install-windows.zip到任意文件夹,然后解压apktool.jar 到apktool-install-windows.zip所在的文件夹下。



4).点击开始菜单,运行,输入CMD回车,用cd命令转到刚刚解压apktool-install-windows所在的文件夹,输入apktool,出现一些命令说明即成功安装。

C:\android\android-apktool\apktool-install-windows-r04-brut1>apktool.bat

Apktool v1.4.1 - a tool for reengineering Android apk files

Copyright 2010 Ryszard Wi?niewski <brut.alll@gmail.com>

Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)

Usage: apktool [-v|--verbose]
COMMAND [...] -- 熟悉dos命令的很容易可以看懂

COMMANDs are:

d[ecode] [OPTS] <file.apk> [<dir>]

Decode <file.apk> to <dir>.

OPTS:

-s, --no-src

Do not decode sources.

-r, --no-res

Do not decode resources.

-d, --debug

Decode in debug mode. Check project page for more info.

-f, --force

Force delete destination directory.

-t <tag>, --frame-tag <tag>

Try to use framework files tagged by <tag>.

--keep-broken-res

Use if there was an error and some resources were dropped, e.g.:

"Invalid config flags detected. Dropping resources", but you

want to decode them anyway, even with errors. You will have to

fix them manually before building.

b[uild] [OPTS] [<app_path>] [<out_file>]

Build an apk from already decoded application located in <app_path>.

It will automatically detect, whether files was changed and perform

needed steps only.

If you omit <app_path> then current directory will be used.

If you omit <out_file> then <app_path>/dist/<name_of_original.apk> -- 这个需要注意,生成新的apk所在的目录

will be used.

OPTS:

-f, --force-all

Skip changes detection and build all files.

-d, --debug

Build in debug mode. Check project page for more info.

if|install-framework <framework.apk> [<tag>]

Install framework file to your system.

For additional info, see: http://code.google.com/p/android-apktool/
2、使用

apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC

apktool b ABC 从文件夹ABC重建APK,输出到ABC/dist/out.apk

例子:

C:\android\android-apktool\apktool-install-windows-r04-brut1>apktool d C:\android\参考\simple.apk SIMPLE

I: Baksmaling...

testI: Loading resource table...

I: Loaded.

I: Loading resource table from file: C:\Documents and Settings\Administrator\apk

tool\framework\1.apk

I: Loaded.

I: Decoding file-resources...

I: Decoding values*/* XMLs...

I: Done.

I: Copying assets and libs...

C:\android\android-apktool\apktool-install-windows-r04-brut1>apktool b SIMPLE

I: Checking whether sources has changed...

I: Smaling...

I: Checking whether resources has changed...

I: Building resources...

I: Building apk file...

OK,看看新生成的apk...



[b]OK,这样包就重新打好了,可能你并没有直接看到什么东西产生,不过这个时候你看一下
SIMPLE\dist 文件夹的SIMPLE\dist里,已经产生了一个我们修改后的APK,就是它了,但是这个文件目前还不能安装,需要一个签名!下一步就是关于软件签名的,早在09年就已经有老外研究过了,我们现在用的只是人家当年的技术了。
[/b]

[b]4
D/ z/ U H4 C) d! r4 A

签名程序名为 Autosign ,你可以自己去google搜索.
[/b]

[b]这个的安装很简单吧,原作者都写了,其实你要做的就是解压,然后使用就OK,当然如果你跟我一样使用Ubuntu/FreeBSD等系统,就执行下面的命令[/b]

[b]java
-jar signapk.jar (网上有教程)
[/b]

[b]v&
}+ B6 H. k" j

Windows用户只要双击exe执行即可,操作已经很简单,不必多说了。Ubuntu/FreeBSD用户可以自己写一个小脚本,很简单也不用多说了。

好了,经过了以上的操作,你的作品就可以公布了。
[/b]

转载请注明出处: http://simpleframework.net/blog/v/46906.html

评论 (共 2 条评论)

andy (124.205.103.18), 456天前

“对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,类似Sun JavaMe的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。Google最然在Android
Market上设置了权限保护app-private文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取到需要的文件。"

from: /article/7012805.html

搞过几天android的朋友都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.dex文件中得到.class,利用后者再得到大家垂涎已久的java文件。

下面分别针对这三种格式的文件进行反编译处理;

view
plaincopy
to clipboardprint?

1.对xml文件进行包的解析,一般有两种方式:apktool(推荐)和AXMLPrinter2.jar;

2.从dex到class公认dex2jar.bat,实现反编译;公认的强者;

3.而class到java的方式要更多样化一些,因为只是查看反编译后的代码:jd-gui(推荐),Jodeclipse(Jode的Eclipse插件),JadClipse(Jad的Eclipse插件)。

还是先对此过程作个大致介绍吧:

view
plaincopy
to clipboardprint?

1.首先把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。

2.把class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar。

3.运行JD-GUI工具(绿色软件,好用的软件!),打开上面的jar文件,即可看到java源代码。

如果上面的步骤都可以自我完成了,那么,下面对这几个软件的详细介绍就可忽略不看!

这几个软件,细分开来介绍(用步骤A(分A1,A2), B, C(分C1,C2,C3), ABC分别代表三个不同的步骤):

A1. apktool:

通常用于生成程序的源代码和图片、XML配置、语言资源等文件。我们对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。支持Linux 、Windows下工作

安装步骤:

1.安装JAVA环境(官方推荐jdk 1.6);

2.下载apktool.jar:http://code.google.com/p/android-apktool/downloads/list

点击下载apktool1.3.2.tar.bz2 和apktool-install-windows-2.2_r01-3.tar.bz2 (不一定是这个,但最好选最新版本的吧!)

3.解压apktool1.3.2.tar.bz2得到apktool.jar;

解压apktool-install-windows.zip到任意文件夹,将apktool.jar拷入此文件夹中(也有人说是直接全部拷入C:/Windows,一样的);

(目前此文件夹中有三个文件:apktool.jar/apktool.bat/aapt.exe)

4.cmd命令行进入到解压apktool-install-windows-2.2_r01-3.tar.bz2所得的文件夹,输入apktool测试是否安装成功;

安装成功后,下面开始反编译过程:

view
plaincopy
to clipboardprint?

1.apktool d (要反编译的文件) (输出文件夹)

如:apktool d XXX.apk (目标文件夹) 反编译 my.apk到文件夹myapk

2.apktool b (目标文件夹)

从目标文件夹中重建APK,生成的APK在"目标文件夹"/dist文件夹里,叫out.apk。

这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html,这里就不说了。签名后得到的APK,就是可以装到手机里的了。

A2. AXMLPrinter2.jar

将它放到android-sdk-windows-1.5_r3/tools文件夹中

运行cmd,进入tools目录,运行java -jar AXMLPrinter2.jar main.xml > main.txt;

于是我们就得到了反编译后的XML文件;

经历了这么多,我们得到的只是部分布局文件和资源文件,但java文件还是"犹抱琵琶半遮面"。

下面,让我们掀起她的红盖头来:

B. dex2jar

下载:http://code.google.com/p/dex2jar/downloads/list

方法:

1.首先找到Android软件安装包中的classes.dex (解压得到);

它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件

2.把classes.dex拷贝到dex2jar.bat所在目录;

在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex

,生成classes.dex.dex2jar.jar,成功了一半!

C1. JD-GUI

下载:http://java.decompiler.free.fr/?q=jdgui

方便好用,直接解压得到JD-GUI,用它打开上面的jar文件,File-->Save JAR Source,即可看到梦寐以求的java源代码;

我们也可以解压B步骤得到的jar文件得到class文件,到这里,我们就要用到Jodeclipse和JadClipse了;

C2. Jodeclipse---Jode的Eclipse插件

C3. JadClipse---Jad的Eclipse插件

关于这两个Eclipse插件的安装可见下面链接:

http://tgyd2006.javaeye.com/blog/553061

(C4. 还有朋友提到DJ Java Decompiler,没用过,可以一试!)

但也有人提出此问题:

自从eclipse升级到3.3以后jad插件就一直没有成功的安装上去,网上看了好多文章也是以前版本的安装方法,3.3目前通过eclipse的software update的插件安装方式已经不行了。

解决方法如下:

1.从http://www.kpdus.com/jad.html#download地址下载最新的jad,我目前下载的是jadnt158.zip;

2.从http://nchc.dl.sourceforge.net/s ... jadclipse_3.3.0.jar地址下载jadclipse_3.3.0.jar,拷贝到eclipse的plugins目录下;

3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse 下的

Path to decompiler 如:D:/eric/jadnt158/jad.exe(jadnt158.zip解压后的目录);

4.Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”

大功告成,之后在java类里按住ctrl点击类就可以看到它jad反编译后的源带码了;

如果发现安装了没有效果,可以删除eclipse主目录下的/configuration/org.eclipse.update后,再执行eclipse -clean试试

最后,将得到的java文件和得到的xml文件组合可得一个android工程,即可得到相对比较完整的apk源码;但也有些额外加的包没被编译出来。

但做到这一步已经足够用于学习,我们的目的也就达到了!

有人会说程序可以用混淆器扰乱代码,但刚从网上看到的一种关于混淆器的说法:

“用混扰器的代码一般就是去掉所有注释和把变量名、方法名和类名变成一些没意义的名字。反编译后一般都变成a, b , c,...这样的名字,只能一点点的看懂,再利用Eclipse的改名方法,一次性的吧相关的名字改成有意义的名称。”

所以,大家的关键代码最好还是打成.so库吧!要不会被一些人搞得内裤都没得穿!

特此感谢:

http://blog.csdn.net/Android_Tutor/archive/2010/07/09/5724435.aspx

/article/7012805.html

回复|支持|反对

匿名 (124.205.103.18), 457天前

通过dex2jar和jd我们可以反编译apk中的dex,可以比较完美的查看java源文件;通过apktool可以反编译apk中的xml等资源文件,然后通过apk-sign签名,可以制作成修改版的可发布apk文件。

1.dex2jar反编译dex文件:

a.下载文件见附件:apktool-1.3.1.tar.bz2,jd-gui.zip,或点击这里下载;解压;

b. 把apk文件后缀名改为.zip,然后解压缩其中的class.dex文件,它是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件;

c.把class.dex拷贝到dex2jar.bat所在目录,运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar ;

d.运行jd-gui工具(绿色无须安装),打开上面生成的jar文件,即可看到源代码;

2.apktool反编译xml等资源文件:

a. 安装java环境,下载文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2,或点击这里下载;把这两个文件解压到同一目录下,该目录下cmd中运行apktool获得帮助信息;

b.apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC

c.apktool b ABC 从反编译后的文件夹ABC重建APK,输出到ABC\dist\out.apk

d.这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;

3.apk-sign签名apk文件:

a. 下载文件件附件apk-sign.rar,解压到apk-sign文件夹;

b.将XXX.apk文件解压到XXX文件夹,然后将XXX直接拖到apk-sign文件中的sign_pack.bat批处理文件上以执行,弹出cmd执行窗口,等待执行完即可;

c.生成新文件夹XXX_signed中的apk文件即为已签名;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: