apk文件的反编译

关于apk文件的反编译,网上都有好多文章详细讲解,本文主要介绍自己在使用apkTool、AXMLPrinter2以及dex2jar工具进行反编译过程中,遇到的问题以及解决的办法。apk文件的反编译,主要有以下几种方法。


一、直接对apk文件进行解压缩后,打开XML,将会看到乱码。需要使用工具将XML文件进行反编译。我在使用AXMLPrinter反编译XML文件时,命令行提示 java.lang.ArrayIndexOutOfBoundsException错误。网上找了好久,没有找到解决方案。有人说是由于 apk打包时,manifest文件中的 minSdkVersion设置有关,但还是不知道怎么处理。于是采用apktool直接反编译apk,这样得到的XML文件能够正常打开。

二、使用apktool反编译apk,弹出Error occured while disassembling class Lcon;-skipping class。如下图所示。

这个是由于下载的apktool版本是1.5.2。需要下载最新的apktool版本1.5.3。

三、使用最新的apktool1.5.3反编译apk,弹出Exception in thread "main" java.lang.UnsopportedClassVersionError:brut/apktool/Main: unsupported major.minor version 51.0。如下图
apk文件的反编译_第1张图片

这个是由于使用的JAVA版本的问题,应该使用大于或等于7.0版本的JDK。下载最新的JDK并配置环境就行。

四、使用dex2Jar工具反编译dex文件,报错。改用d2j_dex2Jar指令,成功,并能够使用JD-GUI打开看到源码。直接解压缩apk,得到存放源码的dex文件,因此为了看到源码还需要反编译dex。 因此使用“dex2jar.bat class.dex”失败。提示:

dex2jar classes.dex this cmd is deprecated, 
use the d2j-dex2jar if possible  dex2jar version: translator-0.0.9.9   
dex2jar classes.dex -> classes_dex2jar.jar       
Done.

于是使用 d2j-dex2jar.bat class.dex反编译成功,能够使用JD-GUI看到源码。

你可能感兴趣的:(apk文件的反编译)