天天看点

Ubuntu Linux APK文件的反编译

原文:http://www.linuxidc.com/linux/2012-02/52953.htm

apk文件的反编译,需要的工具apktool(反编译资源文件)和dex2jar-0.0.7.9-snapshot(反编译源码)

1.配置apktool

在命令行输入下面命令(只输入$以后的命令语句)

www.linuxidc.com@linuxidc:~$ sudo ln -s /home/ww/apktool/apktool(自己的apktool文件所在的位置) /usr/bin/apktool (配置全局)

www.linuxidc.com@linuxidc:~$ apktool

(注:

1.如果此时命令行打印出一些配置命令,则apktool已经配置成功。

2.如果此时命令行下面的抛出异常,则说明当前电脑的jdk的版本过低,配置成适合apktool的即可。

exception in thread "main" java.lang.unsupportedclassversionerror: bad version number in .class file

at java.lang.classloader.defineclass1(native method)

at java.lang.classloader.defineclass(classloader.java:621)

at java.security.secureclassloader.defineclass(secureclassloader.java:124)

at java.net.urlclassloader.defineclass(urlclassloader.java:260)

at java.net.urlclassloader.access$100(urlclassloader.java:56)

at java.net.urlclassloader$1.run(urlclassloader.java:195)

at java.security.accesscontroller.doprivileged(native method)

at java.net.urlclassloader.findclass(urlclassloader.java:188)

at java.lang.classloader.loadclass(classloader.java:307)

at sun.misc.launcher$appclassloader.loadclass(launcher.java:268)

at java.lang.classloader.loadclass(classloader.java:252)

at java.lang.classloader.loadclassinternal(classloader.java:320)

2.反编译的目标apk文件

1).反编译资源文件

命令行进入要反编译的apk文件所在的文件夹

www.linuxidc.com@linuxidc:~$ apktool d xxx.apk(apk路径)abc(文件夹名称,这是自命名,可以不写,如果不写,则默认当前apk的文件名)

2).反编译源码(反编译class.dex)

命令行进入dex2jar-0.0.7.9-snapshot根文件夹

首先解压目标apk文件,得到class.dex。把class.dex拷贝到dex2jar-0.0.7.9-snapshot文件夹中

命令行执行

www.linuxidc.com@linuxidc:~$sh dex2jar.sh classes.dex 

执行完毕之后,会在dex2jar-0.0.7.9-snapshot文件夹中生成一个classes.dex.dex2jar.jar的文件,这个文件就是反编译源码的压缩文件。

3.查看反编译之后的源码

由于反编译之后的源码是.class文件,所以要用专有的软件才能看。

解压classes.dex.dex2jar.jar文件,用jd-gui工具查看就可以了。