我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。
有没有办法从这个APK文件中提取我的源代码?
我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。
有没有办法从这个APK文件中提取我的源代码?
当前回答
是的,这是可能的。
有很多软件可以对android.apk文件进行反向工程。
最近,我在我的网站上整理了47个最好的APK反编译器的最终列表。我把它们分成4个不同的部分。
开源APK分解器在线APK分解器适用于Windows、Mac或Linux的APK解压缩程序APK分解器应用程序
我希望这本书对你有帮助。
链接:https://www.edopedia.com/blog/best-apk-decompilers/
其他回答
使用此工具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下载镜像作者:帕维尔·库兹涅佐夫
我将向您展示反编译.apk文件的其他方法。
你可以按照“恶作剧漱口”的前两步来做。所以你还有另外一个机会:
步骤3':
下载“JD-GUI”,很容易找到这个。在“jd-gui.exe”中打开.jar文件。(文件>打开文件>找到.jar文件)。完成此过程后,您可以将所有资源保存在.zip文件中。
So,
第一个-必须将.apk文件重命名为.zip
第二步-必须解码.dex文件(如果需要,可以将.apk文件解码为dex2jar)
第三-您必须使用JD-GUI解码.jar文件
apktool是你能尝试的最好的方法。我用它保存了一些xml,但老实说,我不知道它如何与.java代码一起工作。
我建议您拥有一个代码库,即使您是唯一的程序员。我一直在为自己的项目使用Project Locker。它为您提供免费svn和git repo。
单击解决方案(仅限Windows)
在阅读了这篇loooooonnnnngggg帖子后,我决定创建一个自动化的过程,只需单击一下即可反编译APK,
我决定在github上分享:https://github.com/shaybc/apk-decompiler
simply unzip,
copy the apk you want to decompile into "apk-source" folder
and run "go.bat"
find the result in the: "apk-output" folder
就这样,享受吧
你可以试试DexPatcher。它甚至与Android Studio集成。它在内部使用Apktool和Dex2Jar。您也可以独立使用这些工具。Apktool反编译apk,并提取.dex文件,可以使用Dex2Jar将其进一步转换为jar。Jar可以使用JD-GUI反编译。在该工具的帮助下,您可以看到Java代码。尽管不能保证反编译代码与实际代码的相似性。市场上有一些高级的代码混淆工具,它们会将代码弄乱,从而使反编译/理解变得困难。例如Proguard