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

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


当前回答

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

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

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

其他回答

你可以试试DexPatcher。它甚至与Android Studio集成。它在内部使用Apktool和Dex2Jar。您也可以独立使用这些工具。Apktool反编译apk,并提取.dex文件,可以使用Dex2Jar将其进一步转换为jar。Jar可以使用JD-GUI反编译。在该工具的帮助下,您可以看到Java代码。尽管不能保证反编译代码与实际代码的相似性。市场上有一些高级的代码混淆工具,它们会将代码弄乱,从而使反编译/理解变得困难。例如Proguard

根据您的情况,如果您的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:安卓应用的安全和破解

apktool是你能尝试的最好的方法。我用它保存了一些xml,但老实说,我不知道它如何与.java代码一起工作。

我建议您拥有一个代码库,即使您是唯一的程序员。我一直在为自己的项目使用Project Locker。它为您提供免费svn和git repo。

用于反向工程第三方、封闭的二进制Android应用程序的Apktool。

它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。

它使逐步调试smali代码成为可能。此外,它还使使用应用程序变得更容易,因为它具有类似项目的文件结构和一些重复任务的自动化,如构建apk等。

http://ibotpeaches.github.io/Apktool/

最简单的方法是使用Apk OneClick分解器。这是一个用于反编译和反汇编APK(android软件包)的工具包。

特征

所有功能都集成到Windows的右键单击菜单中。将APK类分解为Java源代码。将APK分解为smali代码并解码其资源。通过右键单击将APK安装到手机。编辑smali代码和/或资源后重新编译APK。重新编译期间:优化png图像签署apks优化

要求

必须安装Java Runtime Environment(JRE)。

你可以从这个链接下载Apk OneClick解压程序

好好享受吧。