将.Java文件转换为.Smali文件

11 java android smali apktool

我使用APKTool逆向设计了一个Android应用程序,并将.Smali文件作为源代码输出.我将带有应用程序的.Smali文件转换为.Java文件.我能够成功编辑.Java文件,但现在我想将它们转换回.Smali,以便我可以使用新的.Smali文件重新编译应用程序.当我在那里留下.Java文件时,它不会重新编译它并给出一些错误.我找不到任何关于在互联网上编译.Java到.Smali的内容,所以我希望你们能帮助我.

先感谢您,

Jes*_*eke 18

您可以使用普通的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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

要将其转换为smali:

javac HelloWorld.java
dx --dex --output=classes.dex HelloWorld.class
baksmali classes.dex
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您必须使用Java 7(而不是Java 8)! (3认同)
  • 谢谢,也帮助了我.我已经制作了一个小的Windows批处理文件来完成这个:https://gist.github.com/houtianze/fc9f158fd86bb0b58c485139ddc32ece (2认同)

Der*_*air 14

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

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

  • 咦!我不知道这个插件.俏皮的 (3认同)
  • 是否需要所有 java 格式的包才能将 2-3 个类转换回 smali?我在 java 中只有 2-3 个使用一些库的类。库已经是 .smali 形式(不是 .java),我只需要将这 2-3 个类转换为 .smali。是否可以? (2认同)