【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
我的笔记本电脑上的硬盘驱动器刚刚崩溃,并且丢失了过去两个月来我一直在使用的应用程序的所有源代码。 我所拥有的就是APK文件,该文件存储在我发送给朋友时的电子邮件中。
有什么办法可以从这个APK文件中提取我的源代码?
#1楼
这两篇文章描述了如何结合使用apktool
和dex2jar
来获取APK
文件,并创建一个可以构建和运行它的Eclipse项目。
http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html
http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html
基本上,您:
- 使用
apktool
将资源文件移出apk - 使用
dex2jar
获得一个jar文件,其中包含Eclipse所需格式的类。 - 创建一个Eclipse项目,将其指向资源文件和新的jar文件
- 使用zip实用程序打开jar文件并删除现有资源
- 使用
JDGui
打开jar文件以查看源代码 - 从
JDGui
所需的任何源代码,将其粘贴到Eclipse中的类中并对其进行修改 - 从jar文件中删除该类(因此您没有多次定义相同的类)
- 运行。
#2楼
我将向您展示其他反编译.apk文件的方法。
您可以按照“ prankul garg ”的前两个步骤进行操作 。 因此,您还有另一个机会:
步骤3':
下载“ JD-GUI” ,就很容易找到这个。 在“ jd-gui.exe”中打开您的.jar文件。 (文件>打开文件>'找到您的.jar文件')。 完成此过程后,您可以将所有资源保存为.zip文件。
所以,
1st-您必须将.apk文件重命名为.zip
2-您必须解码.dex文件(如果需要,可以将.apk文件解码为dex2jar )
3-您必须使用JD-GUI解码.jar文件
#3楼
这是一个替代性说明-以防万一有人卡在上面的说明中。 按照步骤:
- 从http://ibotpeaches.github.io/Apktool/install/下载
apktool.bat
(或Linux的apktool
)和apktool_<version>.jar
- 从上面将jar文件重命名为
apktool.jar
并将两个文件放在同一文件夹中 - 打开一个dos框(
cmd.exe
)并转到该文件夹; 验证是否已安装Java环境(对于Linux,请同时查看有关所需库的注释) - 开始:
apktool decode [apk file]
中间结果 :资源文件,
AndroidManifest.xml
- 使用您选择的解压缩器解压缩APK文件
中间结果 :
classes.dex
- 从http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=下载并解压缩
dex2jar-0.0.9.15.zip
。 - 将
classes.dex
拖放到dex2jar.bat
(或在DOS框中输入<path_to>\\dex2jar.bat classes.dex
;对于Linux使用dex2jar.sh
)中间结果 :
classes_dex2jar.jar
- 解压缩
classes_dex2jar.jar
(根据使用的反编译器可能是可选的) - 反编译您的类文件(例如,使用JD-GUI或DJ Decompiler )
结果 :源代码
注意:不允许反编译第三方软件包; 本指南仅旨在从APK文件中恢复个人源代码; 最后,最终的代码很可能会被混淆
#4楼
Play商店上还有一个新应用程序,可以通过它反编译apk(也为系统应用程序)并在智能手机上查看源代码。 它将文件保存到SD卡,因此您也可以在计算机上查看文件。 它不需要root或其他东西。
只需安装并享受乐趣。 我认为这是反编译应用程序的最简单方法。
#5楼
虽然您可以反编译APK
文件,但您可能会遇到一个大问题:
它不会返回您编写的代码。 相反,它将返回编译器内联的所有内容,其中变量具有随机名称,而函数具有随机名称。 与重新开始相比,尝试反编译并将其还原到您拥有的代码中可能要花费更多的时间。
可悲的是,像这样的事情已经杀死了许多项目。
对于未来,我强烈建议学习版本控制系统,例如CVS , SVN和git等。
以及如何备份。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3141358