【问题标题】:How does Android compile a Java method to an compiled method?Android如何将Java方法编译为编译方法?
【发布时间】:2018-01-10 07:43:44
【问题描述】:

最近我用 dex2jar、jd-gui 和 Android studio 反编译了一些 Android APK。

为什么有些类的方法可以看到源代码,而有些类的方法只能看到/编译后的代码/?
这两个类在编译时有什么区别?

更重要的是,我想对我的代码做同样的编译工作以确保安全。我可以寻找哪些工具?

【问题讨论】:

    标签: android compilation decompiling


    【解决方案1】:

    当 Android Studio 打开一个 .class 文件并且无法反编译代码时,它只会显示“已编译代码”消息。有很多东西可以防止反编译,因为很多东西在字节码中是合法的,而在 Java 中是非法的。 (例如,拥有一个名为 iffor 的方法是完全合法的字节码,但这些是 Java 关键字,不能用于命名 Java 方法。)当 .class 时,这些事情很容易出现文件由 ProGuard 处理,也可能由 APK 构建过程中的其他工具处理。

    【讨论】:

    • 谢谢。我想对我的代码做同样的工作以确保安全。我可以寻找哪些工具?
    • @zccneil - ProGuard 是一个很好的工具。如果你在你的build.gradle 文件中设置minifyEnabled true,你会得到很多相同的效果。请注意,像这样的混淆是确保安全性的一种极差的方法。这个论坛的主题过于广泛,但您应该准确地确定您需要什么安全性并研究实现它的最佳技术。
    【解决方案2】:

    这可能是因为您的JAVA 文件由于不正确的字节码而无法读取,或者它可能被加密。您无法区分正确和错误的 JAVA 文件类型。

    无论如何,要正确编译您的JAVA 文件,您也可以使用 Luyten(与 jd-gui 相同)。

    Source Link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2011-04-28
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多