我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。
有没有办法从这个APK文件中提取我的源代码?
我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。
有没有办法从这个APK文件中提取我的源代码?
当前回答
步骤1:创建一个新文件夹并复制您要解码的.apk文件。
现在,将这个.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存它。现在,您可以访问classes.dex文件等。在这个阶段,您可以看到可绘制文件,但不能看到xml和java文件,因此请继续。
第2步:现在在同一文件夹(或NEW folder)中提取这个.zip文件。
下载https://github.com/pxb1988/dex2jar/releases/tag/2.0:dex2jar-2.0
现在打开命令提示符并将目录更改为该文件夹(或NEW folder)。然后执行:d2j-dex2jar.bat类.dex
下载此反编译器http://java-decompiler.github.io/反编译classes-dex2jar.jar
步骤3:现在打开另一个新文件夹
放入要解码的.apk文件
下载apktool AND apktool的最新版本(https://ibotpeaches.github.io/Apktool/install/)安装窗口(两者都可以从同一链接下载),并将它们放在同一文件夹中
打开命令窗口
现在运行命令,如apktool if framework-res.apk(如果没有,请在此处获取),然后
apktool d myApp.apk(其中myApp.apk表示要解码的文件名)
现在,您在该文件夹中获得了一个文件文件夹,可以轻松地读取apk的xml文件。
将两个文件夹的内容复制到单个文件夹
完成!
其他回答
几天来,我一直想让dex2jar在一台软呢帽31笔记本电脑上与一台无法工作的apk进行比较,这让我发疯了。这个python3脚本在几分钟内就完成了这个任务,安装jdgui使类文件变得可读。
http://java-decompiler.github.io/
https://github.com/Storyyeller/enjarify
具体来说,下面是我运行的:
# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*
# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify
# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build
# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc
现在应该可以使用以下方法获取类文件:
$> enjarify yourapkfile.apk
要启动jd-gui:
$> jd-gui
那就打开你的课堂文件吧!
为了反编译APK并从中获取代码,您有多个在线工具&我通常更喜欢使用在线APK反编译程序。
它非常容易使用,几分钟内您就可以从中下载源代码。
如果你想从playstore下载APK并反编译。你也可以很容易地从它下载。
此网站https://www.apkdecompilers.com/自动完成。
我先尝试了被接受的答案中提到的网站,但这对我来说不起作用。
我将向您展示反编译.apk文件的其他方法。
你可以按照“恶作剧漱口”的前两步来做。所以你还有另外一个机会:
步骤3':
下载“JD-GUI”,很容易找到这个。在“jd-gui.exe”中打开.jar文件。(文件>打开文件>找到.jar文件)。完成此过程后,您可以将所有资源保存在.zip文件中。
So,
第一个-必须将.apk文件重命名为.zip
第二步-必须解码.dex文件(如果需要,可以将.apk文件解码为dex2jar)
第三-您必须使用JD-GUI解码.jar文件
这两篇文章描述了如何结合使用apktool和dex2jar来获取APK文件并创建一个可以构建和运行它的Eclipse项目。
http://blog.inyourbits.com/2012/11/extending-existing-android-applications.htmlhttp://blog.inyourbits.com/2012/12/extending-existing-android-applications.html
基本上你:
使用apktool从apk中获取资源文件使用dex2jar获取一个jar文件,其中包含Eclipse喜欢的格式的类。创建一个Eclipse项目,指向资源文件和新的jar文件使用zip实用程序打开jar文件并删除现有资源使用JDGui打开jar文件以查看源代码从JDGui中获取所需的任何源代码,将其粘贴到Eclipse中的一个类中并进行修改从jar文件中删除该类(这样就不会多次定义相同的类)运行它。