130

我下载了APK Manager,它可以让我解压 APK 文件。

但它只是将其解包,不会将 .smali 文件反编译为 .java。

是否可以将 .smali 反编译为 .java?

4

6 回答 6

113

不,APK 管理器.dex文件反.smali编译.xml为人类可读的 xml。

顺序(基于 APK Manager 4.9)是22选择包,然后9反编译。如果您按 1 而不是 9,那么您只需解压它(仅当您想交换 .png 图像时才有用)。

没有可用于反编译回.java文件的工具,而且很可能不会有任何工具。还有一种替代方法,就是使用dex2jar将 dex 文件转成.class文件,然后使用 jar 反编译器(如免费的jd-gui)转成纯文本 java。然而,这个过程远非最佳,它不会生成工作代码,但它足够体面,可以阅读它。

dex2jar:https ://github.com/pxb1988/dex2jar

jd-gui:http: //jd.benow.ca/

编辑:我知道这里有一个答案非常相似的问题......将DEX反编译成Java源代码

于 2011-04-14T01:08:00.903 回答
35

有一个新的跨平台(java)和开源工具,可以让你做到这一点,只需检查https://bytecodeviewer.com

在此处输入图像描述

=========

编辑:截至 2017 年 4 月,谷歌开发了一个新的开源工具,这意味着我们一直在寻找的东西 => https://github.com/google/android-classyshark

于 2016-04-11T19:46:20.150 回答
29

dex2jar 有助于反编译您的 apk,但不是 100%。.smali 文件会有一些问题。Dex2jar 无法将其转换为 java。我知道一个应用程序可以反编译您的 apk 源文件并且 .smali 文件没有问题。这是一个链接http://www.hensence.com/en/smali2java/

于 2014-01-29T10:14:14.637 回答
3

我的推荐是德十工作室。该工具是免费的,但他们建议捐赠。它将所有必要的步骤(解包 APK、baksmaliing、反编译等)组合到一个易于使用的基于 UI 的导入过程中。在五分钟内,您应该拥有 Java 源代码,比找出上述工具之一的命令行选项所需的时间还少。

将 smali 反编译为 Java 是一个不精确的过程,尤其是当 smali 工件经过混淆器时。你可以在网上找到几个反编译器,但只有其中一些仍在维护。有些会给你比其他更好的反编译代码。将“更好”理解为“比其他人更容易理解”。不要指望逆向工程的 Java 代码可以直接编译。Virtuous Ten Studio 内置了多个免费的 Java 反编译器,因此您可以轻松尝试不同的反编译器(“生成 Java 源”步骤),看看哪一个给您最好的结果,节省您自己查找这些反编译器并计算的时间出如何使用它们。其中包括 CFR,它是少数免费且仍在维护的反编译器之一。

作为输出,您会收到一个文件夹结构,其中包含所有反编译的 Java 源代码。然后,您可以将其导入 IntelliJ IDEA 或 Eclipse 以进行进一步编辑、分析(例如,转到定义、查找用法)等。

于 2014-08-25T13:01:29.397 回答
1

我同意那个。

Dex2jar 将生成一个 WORKING jar,您可以将其添加为项目源,其中包含您从 apktool 获得的 xml。

然而,JDGUI 生成的 .java 文件通常有错误。

我猜这与代码混淆有关。

于 2013-04-02T10:17:16.033 回答
-1

要获得将 .apk 文件转换为 .java 文件的实用视图,只需查看https://www.youtube.com/watch?v=-AX4NYE-9V8视频。你会得到更多的好处并清楚地理解。它清楚地展示了您在使用mac OS.

完成这项工作的基本要求。1. http://code.google.com/p/dex2jar/
2. http://jd.benow.ca/

于 2015-02-02T07:41:38.720 回答