反编译apk出源码-安卓反编译

Android反编译主要分为两部分,一是代码的反编译,二是资源的反编译。 让我们立即一一了解它们。

工具介绍:

apk工具

 作用:主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)

dex2jar

 作用:将apk反编译成Java源码(classes.dex转化成jar文件)

京东GUI

 作用:查看APK中classes.dex转化成出的jar文件,即源码文件

工具下载

反编译apk出源码-安卓反编译

apk工具下载地址

dex2jar下载地址

jd-gui下载地址

使用apktool反编译apk,获取图片、XML配置、语言资源等文件

进入apktool所在目录,将apk也复制到该目录下。

在此目录中打开命令行窗口

执行订单:

java -jar apktool_2.3.3.jar d app-release.apk

反编译成功后,会在当前目录生成反编译文件夹。

其中,d表示decode,表示我们要解码Demo.apk这个文件。 除了这个基本用法之外,我们还可以添加一些额外的参数来控制decode的更多行为:

-f 如果目标文件夹已存在反编译apk出源码,则强制删除现有文件夹(默认情况下,如果目标文件夹已存在,则解码会失败)。

-o 指定解码目标文件夹的名称(默认使用APK文件的名称来命名目标文件夹)。

-s 不反编译dex文件,即保留classes.dex文件(dex文件默认会解码为smali文件)。

-r 不反编译资源文件,即保留resources.arsc文件(resources.arsc默认会解码为具体的资源文件)。

java -jar apktool_2.0.1.jar d -f E:AndroidDevelopToolAndroid反编译工具包试apkMMTS-release-1.0.2.apk -o MMTS

打开文件夹可以看到反编译后的文件,如右图:

在生成的文件和文件夹中,我们关注的是[res]文件夹和AndroidManifest.xml文件。 打开res文件夹,里面就会有我们想听的内容。

使用dex2jar反编译apk得到Java源代码

即将反编译后的APK后缀名改为.rar或.zip,解压得到classes.dex文件(由java文件编译后用dx工具打包)。

将获得的classes.dex放入之前解压的工具【dex2jar-2.0】文件夹中。

在此目录中打开命令行窗口

执行订单:

d2j-dex2jar classes.dex

反编译apk出源码-安卓反编译

命令执行完成后,在当前目录下可以看到生成的Jar文件,如右图:

反编译classes.dex得到classes-dex2jar.jar文件后,可以使用【jd-gui】工具将class文件反编译成java源代码。

OK,可见我们的代码反编译工作已经成功了。 MainActivity中的代码非常清晰反编译apk出源码,已经基本完成了90%以上的恢复工作。 而如果想要实现100%的代码还原,还是非常困难的,因为像setContentView()这样传入的参数只是一个资源的id值,所以这里的反编译只能还原对应的id值。 恢复,但未能创建像R.layout.activity_main那样直观的代码展示。

此外,不仅是MainActivity,其他很多代码也被反编译了。 由于当前项目有引用 support-v4 和 support-v7 的包,因此引用的库也会打包为代码的一部分。 到classes.dex文件中,因此反编译时也会恢复这段代码。

好了,既然我们已经学会了如何反编译代码,那么我们就来看看如何反编译资源吧。

JD-GUI似乎能够将类反编译成java源代码,而对于一些混淆的类,反编译效果并不是那么理想。 混淆后的类的反编译效果图(类文件名和上面的方法名会采用a、b、c...等样式命名):

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 反编译apk出源码-安卓反编译 https://www.wkzy.net/game/197539.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务