从APK文件反向工程到项目
我不小心从Eclipse中删除了我的项目,而我留下的只是我转移到手机的APK文件。 有没有办法扭转将应用程序导出到.apk文件的过程,这样我就可以恢复项目了?
有两个有用的工具可以从一个未知的APK文件中生成Java代码(粗糙但足够好)。
- 从dex2jar下载dex2jar工具。
-
使用该工具将APK文件转换为JAR :
$ d2j-dex2jar.sh my.apk dex2jar my.apk -> ./my-dex2jar.jar
-
生成JAR文件后,使用JD-GUI打开JAR文件。 您将看到Java文件。
输出将类似于:
首先我推荐this
video可能会清除你所有的疑惑
如果不是,请通过它
Procedure for decoding .apk files, step-by-step method:
Step 1:
创build一个新的文件夹,并把.apk文件(你想解码)。 现在将这个.apk
文件的扩展名重命名为.zip
(例如:从filename.apk重命名为filename.apk.zip)并保存。
如果转换成.zip的问题请参考link
现在得到.zip后,你会得到classes.dex文件等。在这个阶段,你可以看到可绘制的但不是xml和java文件,所以继续。 如果您没有看到分机,请检查configuration
Step 2:
现在提取这个压缩apk文件在同一个文件夹中。 现在从这个link
下载dex2jar
并将其解压到相同的文件夹。 现在打开命令提示符并将目录更改为该文件夹。
然后写dex2jar classes.dex
并按回车。 现在,您可以在同一个文件夹中获取classes.dex.dex2jar
文件。
然后下载java反编译器
现在双击jd-gui并点击打开的文件。 然后从该文件夹打开classes.dex.dex2jar
文件。 现在你得到类文件并保存所有这些类文件(单击文件,然后单击“保存所有源”在jd-gui中)按src名称。 提取该压缩文件(classes_dex2jar.src.zip)
,您将获得该应用程序的所有Java文件。
在这个阶段你得到java源代码,但是xml文件仍然是不可读的,所以继续。
Step 3:
现在打开另一个新的文件夹,并把这些文件
-
把你想解码的.apk文件
-
下载Apktool for
windows v1.x
和Apktool
使用谷歌安装窗口,并放在相同的文件夹
-
使用谷歌下载framework-res.apk文件,并放在相同的文件夹(并非所有的apk文件都需要framework-res.apk文件)
-
打开一个命令窗口
-
导航到APKtool的根目录并input以下命令:
apktool if framework-res.apk.
以上命令应导致Framework installed ...
- apktool d“appName”.apk(“appName”表示你想要解码的应用程序)现在你得到该文件夹中的一个文件夹,现在你也可以轻松地读取xml文件。
Step 4:
最后我们得到了项目的res/
代码,这是我们开始的目标。
PS
如果您无法通过上述步骤获取res文件夹,请安装新的apktool
- Java 1.7安装? 安装Apktool 2.x
- Java 1.6或更高版本是否安装? 安装Apktool 1.x
Enjoy and happy coding
没有软件和没有太多的步骤..
只需上传您的APK,并从这个网站获取您的所有资源..
https://www.apkdecompilers.com/
本网站将反编译APK文件中embedded的代码,并提取文件中的所有其他资产。
注意:我反编译我的APK文件,并从本网站获得一个简短的代码
更新1 :
我发现了另一个在线反编译器网站,
http://www.javadecompilers.com/apk/ – 不能连续询问popup窗口
更新2:
我发现在游戏商店的apk反编译器应用程序,
https://play.google.com/store/apps/details?id=com.njlabs.showjava
我们可以在我们的android手机中反编译apk文件。 也可以在这个应用程序中查看java&xml文件
更新3:
我们可以使用另一个选项Android Studio 2.2版本的分析APKfunction
生成 – >分析APK – >select你的APK – >它给结果
不是真的。 有一些dex反汇编/反编译器套件, 例如smali或dex2jar ,将会生成半可读输出(在dex2jar的情况下,您可以通过使用类似于JD-GUI的东西来获得Java代码,但是这个过程是不完美,你不可能100%重新创build你的源代码,但它可能会给你一个地方开始重build你的源代码树。
有一个新的方法来做到这一点。
Android Studio 2.2有APK分析器,它会提供大量有关apk的信息,在这里检查它: – http://android-developers.blogspot.in/2016/05/android-studio-22-preview-new-ui.html
是的,你可以让你的项目回来。 只需将yourproject.apk
文件重命名为yourproject.apk
, yourproject.zip
获得该ZIP文件中的所有文件。 我们正在将文件扩展名从.apk更改为.zip。 从该ZIP文件中,提取classes.dex
文件并按照以下方式对其进行反编译。
首先,您需要一个工具将DEX上的所有(编译)类提取到JAR。 有一个叫做dex2jar的 ,是由一个中国学生制作的。
然后,您可以使用JD-GUI将JAR中的类反编译为源代码。 由此产生的源代码应该是非常可读的,因为dex2jar应用了一些优化。
按照下面的步骤来做到这一点或简单地使用apkToJava的gem这个过程,它甚至照顾安装所需的工具,以使其工作。
- 转换apk文件到zip
- 解压文件
- 从中提取classes.dex
- 使用dex将jar转换成jar文件
- 用jadx gui打开jar文件作为java源代码
如果你正在寻找一个专业的替代品,请看PNF软件的JEB反编译器 。
有一个演示版本,可以让你反编译大部分代码。
以下是一些可用于从APK文件到源代码执行逆向工程的工具:
- Dex2jar
- Java反编译器
- Apktool
- APK分析器