我的笔记本电脑上的硬盘刚刚崩溃了,我失去了过去两个月一直在开发的应用程序的所有源代码。我手头只有一份存储在邮件中的APK文件,当时是给朋友发送的。
有没有办法从这个APK文件中提取我的源代码呢?
我的笔记本电脑上的硬盘刚刚崩溃了,我失去了过去两个月一直在开发的应用程序的所有源代码。我手头只有一份存储在邮件中的APK文件,当时是给朋友发送的。
有没有办法从这个APK文件中提取我的源代码呢?
根据您的情况,如果您的Android APK:
例如:
进入:
自动将APK解码为Java源代码
步骤:
上传
APK文件+点击运行
+等待一段时间+点击下载
以获取zip文件+解压缩->
sources/com/{yourCompanyName}/{yourProjectName}
是您期望的Java源代码
使用相关工具进行反编译/破解:
jadx
/jadx-gui
将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.apk
output_folder
将显示解码后的sources
和resources
sources/com/{yourCompanyName}/{yourProjectName}
是您期望得到的java源代码
jadx-0.9.0/bin/jadx-gui
(Linux上的jadx-gui.sh
/Windows上的jadx-gui.bat
)apk
文件全部保存
或保存为Gradle项目
例如:
主要方法为3个步骤
:
apk/app转换为dex
dex转换为jar
jar转换为Java源代码
详细解释:
apk/app转换为dex
使用工具(FDex2
/DumpDex)从运行中的应用程序中转储/钩取出一个或多个dex
文件
步骤:
root
ed 安卓
FDex2
/DumpDex 并启用它
dex
运行FDex2
,然后单击您的apk名称以启用稍后捕获/挂钩出dex
/data/data/com/yourCompanyName/yourProjectName
中的整个apk资源
dex
文件dex
转换为jar
使用工具(dex2jar
)将(特定的,包含应用程序逻辑的)dex
文件转换为jar
文件
下载dex2jar,获取dex-tools-2.1-SNAPSHOT.zip,解压缩得到dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
,然后执行以下命令:
sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
例如:
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar
jar转Java源代码
使用以下工具之一:
将 jar
转换为 java src
转换效果: Jadx
> Procyon
> CRF
>> JD-GUI
因此推荐使用:Jadx
/jadx-gui
步骤:
jadx-gui
dex
文件文件
-> 全部保存
例如:
更详细的解释可以查看我的在线电子书中文教程:
这个站点https://www.apkdecompilers.com/可以自动实现。
我首先尝试了接受答案中提到的站点,但对我没有用。
我将向您展示另一种反编译.apk文件的方法。
您可以按照“prankul garg”的前两个步骤进行操作。因此,您还有其他选择:
第三步:
下载"JD-GUI",这很容易找到。 在"jd-gui.exe"中打开您的.jar文件(文件>打开文件> '找到您的.jar文件')。完成此过程后,您可以将所有资源保存在.zip文件中。
所以,
第一步-您必须将.apk文件重命名为.zip
第二步-您必须解码.dex文件(如果需要,可以将.apk文件解码为dex2jar)
第三步-您必须使用JD-GUI解码.jar文件
apktool 是一个非常好的工具。
在线apktool服务也存在:http://www.javadecompilers.com/apktool
显然,由于在线服务的本质限制,一些限制是存在的:您可以提取和研究资源和清单文件,但目前无法重新编译应用程序。
尽管如此,这仍然是一种无需麻烦的方法来“打开”Android应用程序。
Apktool 是一款用于逆向工程第三方、闭源、二进制 Android 应用程序的工具。
它可以将资源解码为几乎原始形式,并在进行一些修改后重新构建它们。
它使得可以逐步调试 smali 代码成为可能。此外,由于其类似项目的文件结构和某些重复任务的自动化处理(如构建 apk 等),因此使用应用程序变得更加容易。
一键解决方案(仅适用于Windows)
阅读完这篇长篇大论后,我决定创建一个自动化过程,以一个单击的方式反编译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
就是这样,享受吧
Android Studio提供了分析APK文件的功能。
1 - 从构建菜单中选择"分析APK"选项并选择APK文件。 2 - 这将显示classes.dex文件和其他文件。 3 - 点击classes.dex,它会给出文件夹、包、库和文件列表。 4 - 从Android Studio设置中安装一个名为"Dex to Jar"的插件 5 - 从提取的项目中点击任何活动文件,然后从构建菜单中选择dex to jar。
这将使你获得Java文件的实际代码。
干杯。
步骤1: 创建一个新文件夹并复制您想要解码的.apk文件。 现在将此.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存。现在,您可以访问classes.dex文件等。在这个阶段,您能够看到drawable但无法看到xml和java文件,因此请继续。
步骤2:
现在在同一文件夹(或新文件夹)中提取此.zip文件。
下载https://github.com/pxb1988/dex2jar/releases/tag/2.0:dex2jar-2.0
现在打开命令提示符并更改目录到该文件夹(或新文件夹)。然后执行:
d2j-dex2jar.bat classes.dex
下载此反编译器http://java-decompiler.github.io/以反编译classes-dex2jar.jar
步骤3: 现在打开另一个新文件夹。 放入您想要解码的.apk文件。
下载最新版本的apktool和apktool(https://ibotpeaches.github.io/Apktool/install/)安装窗口(两者可以从相同的链接下载),并将它们放在同一个文件夹中
打开命令窗口
现在运行类似apktool if framework-res.apk(如果您没有它,请在此处获取)的命令,然后
apktool d myApp.apk(其中myApp.apk表示您要解码的文件名)
现在,在该文件夹中获得一个文件夹,可以轻松读取apk的xml文件。
将两个文件夹的内容复制到一个单独的文件夹中
完成!
javac -decompile
,这将符合SO准则。在我看来,答案是“离题的”,而不是问题本身。 - SwiftArchitect