失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > dex转为java_android - 将DEX反编译成Java源代码

dex转为java_android - 将DEX反编译成Java源代码

时间:2023-07-30 18:41:25

相关推荐

dex转为java_android  - 将DEX反编译成Java源代码

android - 将DEX反编译成Java源代码

如何将Android DEX(VM字节码)文件反编译成相应的Java源代码?

16个解决方案

831 votes

这很简单

获取这些工具:

1)dex2jar将dex文件转换为jar文件

2)jd-gui查看jar中的java文件

源代码非常易读,因为dex2jar进行了一些优化。

程序:

这是关于如何反编译的过程:

步骤1:

将test_apk-debug.apk中的classes.dex转换为test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk

注意:在Windows机器中,所有.sh脚本都被.bat脚本替换

dex2jar文档

第2步:

在JD-GUI中打开jar

Dheeraj Bhaskar answered -03-27T02:27:34Z

126 votes

为了澄清一点,根据您想要完成的任务,您可以在此处使用两条主要路径:

将Dalvik字节码(dex)反编译为可读的Java源代码。 您可以使用dex2jar和jd-gui轻松完成此操作,正如fred提到的那样。 生成的源可用于阅读和理解应用程序的功能,但可能无法生成100%可用的代码。 换句话说,您可以阅读源代码,但无法真正修改和重新打包它。 请注意,如果使用proguard对源进行了混淆,则生成的源代码将难以解开。

另一个主要的替代方法是将字节码反汇编为smali,这是一种专为此目的而设计的汇编语言。 我发现最简单的方法是使用apktool。 一旦你安装了apktool,你就可以将它指向一个apk文件,你将获得应用程序中包含的每个类的smali文件。 您可以通过从新Java源生成smali来完全读取和修改smali甚至替换类(为此,您可以使用javac将.java源代码编译为.class文件,然后使用Android将.class文件转换为.dex文件 dx编译器,然后使用baksmali(smali反汇编程序)将.dex转换为.smali文件,如本问题所述。这里可能有一个快捷方式)。 完成后,您可以使用apktool轻松打包apk。 请注意,apktool不会对生成的apk进行签名,因此您需要像其他任何Android应用程序一样处理它。

如果您选择了smali路线,您可能需要尝试使用APK Studio,这是一个自动执行上述某些步骤的IDE,可帮助您反编译和重新编译apk并将其安装在设备上。

简而言之,您的选择几乎要么是反编译成Java,哪个更具可读性,但可能是不可逆转的,或者反汇编为smali,这更难以阅读,但更灵活地进行更改并重新打包修改后的应用程序。 您选择哪种方法取决于您希望实现的目标。

最后,敢于提出的建议也值得注意。 它是一个重定向工具,可将.dex和.apk文件转换为java .class文件,以便使用典型的java静态分析工具对其进行分析。

Zach Lipton answered -03-27T02:28:39Z

59 votes

我实际上建议去这里:[/JesusFreke/smali]

它提供了BAKSMALI,这是DEX文件最优秀的逆向工程工具。它是由JesusFreke制作的,他为Android创造了成名的ROM。

reflog answered -03-27T02:29:15Z

27 votes

fred答案的更完整版本:

手动方式

首先,您需要一个工具将DEX上的所有(已编译)类提取到JAR。

有一个名为dex2jar,由中国学生制作。

然后,您可以使用jd-gui将JAR上的类反编译为源代码。

结果源应该是可读的,因为dex2jar应用了一些优化。

自动方式

你可以使用APKTool。 它将自动提取所有类(.dex),资源(.asrc),然后它将二进制XML转换为人类可读的XML,它也将为您解组类。

反编译总是比反编译更强大,尤其是反编译

JAR与Pro Guard混淆了!

只需告诉APKTool将APK解码到一个目录中,然后修改你想要的内容,

最后将其编码回APK。 就这样。

重要提示:APKTool无法解决。 它不反编译。

生成的代码不是Java源代码。

但是你应该能够阅读它,如果你熟悉jasmin,甚至可以编辑它。

如果您需要Java源代码,请查看手动方式。

Alba Mendez answered -03-27T02:31:35Z

21 votes

有时你会在使用dex2jar/apktool时破坏代码,最明显的是在循环中。 为了避免这种情况,使用jadx,它将dalvik字节码反编译成java源代码,而不是像dex2jar那样创建.jar/.class文件(我认为apktool使用dex2jar)。 它也是开源和积极的开发。 它甚至还有一个GUI,用于GUI狂热分子。 试试吧!

polym answered -03-27T02:32:03Z

15 votes

由于没有人提到这一点,还有一个工具:DED主页

安装方法和一些说明:安装。

它用于一个非常有趣的顶级市场应用程序的安全性研究(并不真正相关,只是如果你很好奇):Android应用程序安全性调查

phaethon answered -03-27T02:32:55Z

13 votes

下载APK文件后,您需要执行以下步骤以获取可编辑的Java代码/文档。

将您的apk文件转换为zip(开始下载时不要使用“保存”选项,只需使用“另存为”并将您的扩展名称为.zip),这样做可以避免APKTOOL ...

解压缩zip文件,在那里你可以找到somefilename.dex。 所以现在我们需要转换dex - > 。类

要做到这一点,你需要“dex2jar”(你可以从[/p/dex2jar/]下载它,解压后,在命令提示符中你必须提到像,[D:\ dex2jar- 0.09> dex2jar somefilename.dex](请记住,somefilename.dex必须位于保存dex2jar的同一文件夹中。)

从[/blogs/download/jad/jad.zip]下载jad并解压缩。 提取后你可以看到两个文件,如“jad.exe”和“Readme.txt”(有时候“jad.txt”可能代替“jad.exe”,所以只需将其扩展名as.exe重命名即可运行)

最后,在命令提示符中你必须提到像[D:\ jad> jad -sjava yourfilename.class]它会将你的类文件解析为可编辑的java文档。

Kamal answered -03-27T02:34:02Z

9 votes

我用过

dex2jar + jd-gui

enjarify

Apktool

但没有人比谷歌自己的工具更好

1)Android Studio 2.x:构建> 分析apk

2)Android Studio 3.0:个人资料或调试APK

ishandutta answered -03-27T02:35:16Z

8 votes

使用Dedexer,您可以将.dex文件反汇编为dalvik字节码(.ddx)。

据我所知,不可能对Java进行反编译。

你可以在这里阅读dalvik字节码。

hcpl answered -03-27T02:36:01Z

8 votes

Android逆向工程是可能的。 按照以下步骤从apk文件中获取.java文件。

步骤1 。 使用dex2jar

从.apk文件生成.jar文件

命令:dex2jar sampleApp.apk

第2步 。 使用JD-GUI反编译.jar

它反编译.class文件,即我们将从apk中获得模糊的.java。

gtiwari333 answered -03-27T02:37:25Z

5 votes

自从大多数答案发布以来,已经发生了很多变化。 现在有很多简单的GUI工具,如下所示:

APK Easy Tool for Windows (GUI tool, friendly)

Bytecode Viewer - APK/Java Reverse Engineering Suite

URET Android Reverser Toolkit

找到它们的最佳位置是在XDA开发者论坛上。

MPaulo answered -03-27T02:38:01Z

5 votes

最近的Debian有Python包classes.dex:

Description-en: full Python tool to play with Android files

Androguard is a full Python tool to play with Android files.

* DEX, ODEX

* APK

* Android's binary xml

* Android resources

* Disassemble DEX/ODEX bytecodes

* Decompiler for DEX/ODEX files

安装相应的包:

sudo apt-get install androguard python-networkx

反编译DEX文件:

$ androdd -i classes.dex -o ./dir-for-output

从Apk + Decompile中提取classes.dex:

$ androdd -i app.apk -o ./dir-for-output

Apk文件不再是Java存档(JAR),您可以通过以下方式从存档中提取文件:

$ unzip app.apk -d ./dir-for-output

gavenkoa answered -03-27T02:39:06Z

4 votes

您可以尝试JADX([/mstrobel/procyon/wiki/Java%20Decompiler],]这是DEX反编译的完美工具。

是的,它也可以在线上获取(我的:0)新网站:[/apk/]

Andrew Rukin answered -03-27T02:39:43Z

2 votes

这可以通过以下五个步骤完成:

即使安装了所需的工具,这个gem也可以自动为您完成这些工作

将apk文件转换为zip

解压缩文件

从中提取classes.dex

使用dex to jar将classes.dex转换为jar文件

使用jadx gui打开jar文件作为java源代码

Ajit Singh answered -03-27T02:40:30Z

1 votes

如果你不想下载dex2jar,那么只需使用apk_grabber python脚本将任何apk反编译成jar文件。 然后你用jd-gui读它们。

Jeff Brateman answered -03-27T02:40:59Z

1 votes

最简单的反编译Android应用程序的方法是从playstore下载名为ShowJava的应用程序。 只需从应用程序列表中选择需要反编译的应用程序即可。 你可以使用三种不同的反编译器来反编译应用程序 -

CFR 0.110,JaDX 0.6.1或FernFlower(分析反编译器)。

Rishabh Maurya answered -03-27T02:41:37Z

如果觉得《dex转为java_android - 将DEX反编译成Java源代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。