我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。

有没有办法从这个APK文件中提取我的源代码?


当前回答

我个人建议Show Java Android App获取源代码。您可以从play商店或此处下载

其他回答

apktool是最好的选择。在线apktool服务也存在:http://www.javadecompilers.com/apktool

显然,由于服务的“在线性质”,存在一些限制:您可以提取和研究资产和清单文件,但目前不可能重新编译应用程序。

尽管如此,这是一种“打开”android应用程序的简单方法。

根据您的情况,如果您的android apk:

条件1:不硬化(由腾讯Legu/奇虎360/…)

选项1:使用在线服务

例如:

使用www.javadecompilers.com

转到:

http://www.javadecompilers.com/apk注:内部使用Jadx

从apk到java源代码的自动解码

步骤:

上传apk文件+单击运行+等待一段时间+单击下载以获取zip+解压缩->

sources/com/{yourCompanyName}/{yourProjectName}

是您期望的java源代码吗

选项2:自行反编译/破解

使用相关工具自行反编译/破解:

使用jadx/jadxgui将apk转换为java源代码

下载jadx-0.9.0.zip,然后解压到bin/jadx,然后:

命令行模式:在终端运行中:jadx-0.9.0/bin/jadx-o output_folder/path_to_your_apk/your_apk_file.apkoutput_folder将显示解码的源和资源sources/com/{yourCompanyName}/{yourProjectName}是预期的java源代码GUI模式双击运行jadx-0.9.0/bin/jadx-gui(Linux的jadx-gui.sh/Windows的jadxgui.bat)打开apk文件它将自动解码->查看预期的java源代码全部保存或另存为Gradle项目

eg:

条件2:硬化(由腾讯Legu/奇虎360/…)

主要方法有3个步骤:

apk/app到dexdex到jarjar到java src

详细说明:

步骤1:apk/app to dex

使用工具(FDex2/DumpDex)从运行的应用程序转储/挂出(一个或多个)dex文件

步骤:

准备环境

根深蒂固的机器人真实电话或仿真器这里使用中文Nox App Player夜神安卓模拟器安装你的android apk到电话或模拟器已安装Xposed安装程序将FDex2/DumpDex安装到XPosed中并启用它注意:需要重新启动Xposed才能使FDex2工作FDex2下载地址,中文:脱壳工具 FDex2 CSDN下载链接: https://pan.baidu.com/s/1lTF8CN96bxWpFwv7J174lg 提取码: 3吨将android apk安装到手机/模拟器

从运行的应用程序中转储dex

运行FDex2,然后单击apk名称,以便稍后捕获/挂接dex(在电话/模拟器中)运行应用程序在/data/data.com/yourCompanyName/yourProjectName中查找并复制整个apk资源在其根文件夹中通常会找到几个dex文件

第2步:索引到jar

使用工具(dex2jar)将(特定的,包含应用程序逻辑的)dex文件转换为jar文件

下载dex2jar得到dex-tools-2.1-SNAPSHOT.zip,解压缩得到dex-tool-2.1-SNAPPSHOT/d2j-dex2jar.sh,然后

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh-f your_dex_name.dex

eg:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

步骤3:jar到java src

使用以下工具之一:

Jadx公司Procyon公司基于procyon的GUI工具:Luyten公司字节码查看器CRF公司JD-GUI其他一些:克拉卡塔费恩鲍尔(Fernflower)卡瓦杰

将jar转换为javasrc

对于从jar到javasrc的转换效果:

Jadx>Procyon>CRF>>JD-GUI

所以建议使用:Jadx/Jadx-gui

步骤:

双击运行jadxgui打开dex文件文件->全部保存

eg:

导出的java src:


更详细的解释可以看我的在线电子书中文教程:

安卓应用的安全和破解github上教程的源代码:crifan/android_app_security_crack:安卓应用的安全和破解

在线工具下方:

http://www.javadecompilers.com/apk

它只需单击一下即可完成所有操作:反编译的.java文件+资源+xml(在一个.zip文件中)和非常好的反编译器(jadx在其他编译位置/函数中返回java代码,其他编译返回函数内的注释,如“无法反编译”或某些android汇编程序/机器代码)

有一个应用程序可以实现这一点,通常只需点击几下即可完成。https://github.com/Nuvolect/DeepDive-Android

选择应用程序,在“已安装的应用程序”下选择您的应用程序。如果不是在那里你可以加载APK。选择“提取APK”选择“解压缩APK”选择“使用Jadx分解”。这可能需要几秒钟或几分钟,具体取决于取决于设备的速度

之后,您可以浏览源代码,使用elFinder将其下载到另一台计算机,或使用Lucene进行搜索。

除了Jadx,它还有CFR和Fernflower反编译器。

市场上有很多应用程序和方法可以将apk文件反编译为java类,但是如果应用程序是用ProGuard规则编译的,那么你就遇到了很大的麻烦,因为这个规则会将所有的dex文件缩成一个小字符的名称,然后你就无法追溯实现。看见https://developer.android.com/studio/build/shrink-code用于模式澄清。

快乐编码。。。