最近出入公司业务需要,研究了一下Android APK反编译方面的知识,主要用到了APKTool 、dex2jar、jd-gui 这三个工具。
大体步骤如下:
1.首先把apk文件改名为.zip,然后解压缩其中的class.dex文件。
2.把class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,生成classes_dex2jar.jar。
3.运行JD-GUI工具(绿色软件,好用的软件!),打开2中的 classes_dex2jar.jar文件,即可看到java源代码。
下面对这三个工具的使用进行一一说明。
一、Apktool
apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片、XML配置、语言资源等文件,也可以添加新的功能到APK文件中。这里主要用它来对APK 文件中的 xml文件进行解析。
安装步骤:
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所在的文件夹下。
反编译步骤:
1、在DOS窗口下,切换到 刚才解压的目录 apktool-install-windows-r04-brut1,输入apktool,出现一些命令说明即成功安装。
2、执行 apktool d -s c:\soft\xxx.apk c:\soft\source 命令
命令格式:apktool d [opts] <file.apk> [dir] 中的d代表解码,[opts]代表选项,-s选项代表不解码源文件。
成功之后可以看到 apktool-install-windows-r04-brut1目录下多了一个文件夹
这样我们就顺利拿到 APK文件中XML文件了,接下来就是将 dex 反编译出来了。
二、dex2jar
将 .dex 文件反编译为 jar 文件。
执行步骤:
1、首先把apk文件改名为.zip,然后解压缩其中的class.dex文件,其实它就是java文件编译再通过dx工具打包成的。
2、将1 中获得的 class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,生成classes_dex2jar.jar
三、jd-gui
反编译java class 文件的图形化工具
执行步骤:
1、进入到 jd-gui 所在目录,双击 jd-gui.exe文件,打开jd-gui 图形化界面
2、将dex2jar 工具生成的 classes_dex2jar.jar 拖拽到 jd-gui中
最后,将得到的java文件和得到的xml文件组合可得一个android工程,即可得到相对比较完整的apk源码;但也有些额外加的包没被编译出来。OK,大功告成啦!
所以在开发项目的时候,其中比较关键的、保密性要求比较高的 代码 可以将其打包成 so库文件,然后在程序中通过 JNI进行调用,这样可以提高安全性。