【发布时间】:2018-01-10 07:43:44
【问题描述】:
最近我用 dex2jar、jd-gui 和 Android studio 反编译了一些 Android APK。
为什么有些类的方法可以看到源代码,而有些类的方法只能看到/编译后的代码/?
这两个类在编译时有什么区别?
更重要的是,我想对我的代码做同样的编译工作以确保安全。我可以寻找哪些工具?
【问题讨论】:
标签: android compilation decompiling
最近我用 dex2jar、jd-gui 和 Android studio 反编译了一些 Android APK。
为什么有些类的方法可以看到源代码,而有些类的方法只能看到/编译后的代码/?
这两个类在编译时有什么区别?
更重要的是,我想对我的代码做同样的编译工作以确保安全。我可以寻找哪些工具?
【问题讨论】:
标签: android compilation decompiling
当 Android Studio 打开一个 .class 文件并且无法反编译代码时,它只会显示“已编译代码”消息。有很多东西可以防止反编译,因为很多东西在字节码中是合法的,而在 Java 中是非法的。 (例如,拥有一个名为 if 或 for 的方法是完全合法的字节码,但这些是 Java 关键字,不能用于命名 Java 方法。)当 .class 时,这些事情很容易出现文件由 ProGuard 处理,也可能由 APK 构建过程中的其他工具处理。
【讨论】:
build.gradle 文件中设置minifyEnabled true,你会得到很多相同的效果。请注意,像这样的混淆是确保安全性的一种极差的方法。这个论坛的主题过于广泛,但您应该准确地确定您需要什么安全性并研究实现它的最佳技术。
这可能是因为您的JAVA 文件由于不正确的字节码而无法读取,或者它可能被加密。您无法区分正确和错误的 JAVA 文件类型。
无论如何,要正确编译您的JAVA 文件,您也可以使用 Luyten(与 jd-gui 相同)。
【讨论】: