20

我使用 APKTool 对 Android 应用程序进行了逆向工程,并获得了 .Smali 文件作为源代码输出。我将带有应用程序的 .Smali 文件转换为 .Java 文件。我能够成功编辑 .Java 文件,但现在我想将它们转换回 .Smali,以便我可以使用新的 .Smali 文件重新编译应用程序。当我将 .Java 文件留在那里时,它不会重新编译它并给出一些错误。我在 Internet 上找不到任何关于将 .Java 编译为 .Smali 的信息,所以希望你们能帮助我。

先感谢您。

4

2 回答 2

27

您可以使用普通的 java 编译器编译 java 类,然后使用 Android 的 'dx' 实用程序将编译后的 .class 文件转换为 dex 文件。然后在 dex 文件上运行 baksmali 以生成 smali 文件。

例如,假设您在名为“HelloWorld.java”的 java 文件中有以下代码:

public class HelloWorld {
    public static void main(String[] args) {
         System.out.println("Hello World!");
    }
}

要将其转换为 smali:

javac HelloWorld.java
dx --dex --output=classes.dex HelloWorld.class
baksmali d classes.dex
于 2015-03-14T17:33:13.077 回答
16

试试 java2smali:https ://github.com/ollide/intellij-java2smali

它是一个用于将 Java 转换为 Smali 的应用程序。

于 2015-03-14T17:15:51.213 回答