Android开发——apk反编译过程
2018-08-29 本文已影响112人
简秋默
学习和开发 Android 以来,见到别人的应用里那炫酷的动画和漂亮的布局一直羡慕不已,很想借鉴一下。这时候就迫切想知道他们的设计思路和实现方法,于是就可对apk进行反编译查看。从网上查看了一些文章后,自己实际操作了一遍,特此记录一下自己反编译的过程。
参考文章:
Android APK反编译就这么简单 详解(附图)
APK反编译
工具介绍:
工具 | 作用 |
---|---|
apktool | 获取资源文件,可以提取出资源文件和图片文件。 |
dex2jar | 将apk反编译成java源码(classes.dex转化成jar文件)。 |
jd-gui | 查看APK中classes.dex转化成出的jar文件,即源码文件。 |
反编译过程
(一)获取程序的源代码、图片、XML配置、语言资源等文件
将提前下载好的三个工具中的apktool解压,得到 aapt.exe,apktool.bat,apktool.jar 三个文件,将需要反编译的APK文件放到该目录下,如图:打开命令行界面,定位到apktool文件夹,输入命令:apktool.bat d -f [apk文件] [输出文件夹],例如:apktool.bat d -f test.apk test(其中 test.apk 是待要反编译的apk文件,test 是反编译后资源文件存放的目录名称。)
命令行代码如下: 待文件夹下多了个test文件, 即可说明获取成功,点击便可以查看该应用的所有资源文件了。如下图所示: 在apktool获取资源文件时,遇到一个异常问题,异常如下:这个问题是因为 apktool 版本过低导致,而解决这个问题的办法就是使用最新版本的 apktool 就可以了。下载地址:下载地址1和下载地址2
而使用最新的apktool工具时,命令行语句也有不同,命令行语句为:java -jar apktool.jar d -f [待反编译的apk文件路径] -o [输出文件夹],例如下图: 如果使用之前的命令行语句会遇到一个问题,如下图:因此在使用新的apktool.jar时,要注意命令行语句不要错了。
(二)Apk反编译得到Java源代码
解压下载好的的 dex2jar 和 jd-gui 工具,然后将要反编译的apk文件后缀名改为.rar或则 .zip进行解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的 classes.dex 放到之前解压出来的工具dex2jar 文件夹内,在命令行下定位到 dex2jar.bat 所在目录,输入:dex2jar.bat classes.dex,如图: 在该目录下会生成一个classes_dex2jar.jar的文件,然后打开工具 jd-gui 文件夹里的 jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了,效果如下:自此,反编译完成!