我使用 APKTool 对 Android 应用程序进行了逆向工程,并获得了 .Smali 文件作为源代码输出。我将带有应用程序的 .Smali 文件转换为 .Java 文件。我能够成功编辑 .Java 文件,但现在我想将它们转换回 .Smali,以便我可以使用新的 .Smali 文件重新编译应用程序。当我将 .Java 文件留在那里时,它不会重新编译它并给出一些错误。我在 Internet 上找不到任何关于将 .Java 编译为 .Smali 的信息,所以希望你们能帮助我。
先感谢您。
您可以使用普通的 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
试试 java2smali:https ://github.com/ollide/intellij-java2smali
它是一个用于将 Java 转换为 Smali 的应用程序。