我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。
有没有办法从这个APK文件中提取我的源代码?
我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。
有没有办法从这个APK文件中提取我的源代码?
当前回答
我将向您展示反编译.apk文件的其他方法。
你可以按照“恶作剧漱口”的前两步来做。所以你还有另外一个机会:
步骤3':
下载“JD-GUI”,很容易找到这个。在“jd-gui.exe”中打开.jar文件。(文件>打开文件>找到.jar文件)。完成此过程后,您可以将所有资源保存在.zip文件中。
So,
第一个-必须将.apk文件重命名为.zip
第二步-必须解码.dex文件(如果需要,可以将.apk文件解码为dex2jar)
第三-您必须使用JD-GUI解码.jar文件
其他回答
使用此工具http://www.javadecompilers.com/
但最近,一股新的反编译器浪潮进入了市场:Procyon、CFR、JD、Fernflower、Krakatau、Candle。
以下是本网站提供的反编译器列表:
CFR-免费,没有可用的源代码,http://www.benf.org/other/cfr/作者:Lee Benfield
非常好地更新了反编译器!CFR能够反编译现代Java特性-Java 9模块、Java 8 lambda、Java 7字符串开关等。它甚至可以将类文件从其他JVM语言转换回java!
京东仅供非商业用途,http://jd.benow.ca/作者:Emmanuel Dupuy
2015年更新。有自己的可视化界面和Eclipse和IntelliJ插件。用C++编写,速度非常快。支持Java 5。
Procyon公司开源,https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler作者:Mike Strobel
Fernflower公司-开源,https://github.com/fesh0r/fernflower作者:Egor Ushakov
2015年更新。非常有前途的分析Java反编译器,现在已成为IntelliJ 14不可或缺的一部分。(https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler)支持Java版本6(注释、泛型、枚举)
JAD-这里只出于历史原因。免费,没有可用的源代码,jad下载镜像作者:帕维尔·库兹涅佐夫
这是另一种描述,以防有人被上面的描述卡住。遵循以下步骤:
从以下位置下载apktool.bat(或适用于Linux的apktool)和apktool_<version>.jarhttp://ibotpeaches.github.io/Apktool/install/ 将jar文件从上面重命名为apktool.jar,并将两个文件放在同一文件夹中打开一个dos框(cmd.exe)并切换到该文件夹;验证是否安装了Java环境(对于Linux,请查看有关所需库的说明)开始:apktool解码[apk文件]中间结果:资源文件,AndroidManifest.xml使用您选择的解包器解压缩APK文件中间结果:classes.dex从http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=将classes.dex拖放到dex2jar.bat上(或在DOS框中输入<path_to>\dex2jar.classes.dex;对于Linux,使用dex2jars.sh)中间结果:classes_dex2jar.jar解包classes_dex2jar.jar(可能是可选的,取决于使用的反编译器)反编译类文件(例如,使用JD-GUI或DJ反编译程序)结果:源代码
注意:不允许对第三方软件包进行反编译;本指南仅用于从APK文件恢复个人源代码;最后,生成的代码很可能会被混淆
对于java文件
使用此处给出的公认答案
对于XML文件
你不必使用公认答案中给出的方法,因为我觉得它很复杂。
我所做的是将APK文件转换为ZIP并解压缩。解压缩后,我得到了一个名为res的文件夹:
我刚打开它,发现了很多文件夹。对于布局,您需要找到名为layout的文件夹,而不是像layout land之类的其他文件夹。同样的事情也可以用其他资源来完成,比如绘图、菜单等。。。
注意:会有很多随机文件不是由您创建的。你可以找到自己制作的文件,然后使用它们!
希望这能帮助到其他人!
我个人建议Show Java Android App获取源代码。您可以从play商店或此处下载
在线工具下方:
http://www.javadecompilers.com/apk
它只需单击一下即可完成所有操作:反编译的.java文件+资源+xml(在一个.zip文件中)和非常好的反编译器(jadx在其他编译位置/函数中返回java代码,其他编译返回函数内的注释,如“无法反编译”或某些android汇编程序/机器代码)