【问题标题】:Convert .Java file to .Smali file将 .Java 文件转换为 .Smali 文件
【发布时间】:2015-05-17 02:08:11
【问题描述】:

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

提前谢谢你。

【问题讨论】:

    标签: java android smali apktool


    【解决方案1】:

    您可以使用普通的 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
    

    【讨论】:

    • 谢谢,也帮助了我。我制作了一个小的 Windows 批处理文件来完成此操作:gist.github.com/houtianze/fc9f158fd86bb0b58c485139ddc32ece
    • 请注意,您必须使用 Java 7(而不是 Java 8)!
    • 最后一行不应该是baksmali d classes.dex吗?你改变了命令行格式吗?
    • @user202729 谢谢,已修复。是的,从现在到首次发布时,命令格式确实发生了变化。
    • 但这不适用于具有导入的类。有解决办法吗?
    【解决方案2】:

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

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

    【讨论】:

    • 这是一个 IntelIJ 插件。我需要一个独立的程序。
    • 是的,我也发现了那个帖子,但是它将 .Java 文件转换为 .class 文件或 .dex 文件,但我需要一个 .Smali 转换器,因为 APKTool 会从 .Smali > .Dex 进行转换
    • 嗯!我不知道这个插件。漂亮
    • 是否需要所有java格式的包才能将2-3个类转换回smali?我在 java 中只有 2-3 个使用一些库的类。库已经是 .smali 格式(不是 .java),我只需要将这 2-3 个类转换为 .smali。有可能吗?
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多