假设我编写了一个 JAVA 程序并创建了 JAR 文件。我怎样才能做到,如果有人从 JAR 中提取类文件,他就不能反汇编它?例如,如果您使用 DJ JAVA Decompiler,您应该会看到一条错误消息“您无法反汇编此文件”。我已经看到了这条消息。那么,如何锁定类文件呢?
谢谢
假设我编写了一个 JAVA 程序并创建了 JAR 文件。我怎样才能做到,如果有人从 JAR 中提取类文件,他就不能反汇编它?例如,如果您使用 DJ JAVA Decompiler,您应该会看到一条错误消息“您无法反汇编此文件”。我已经看到了这条消息。那么,如何锁定类文件呢?
谢谢
我怎样才能做到,如果有人从 JAR 中提取类文件,他就不能反汇编它
简单的答案是你不能。
反汇编(人类可读的字节码)是微不足道的。甚至还有一个 JDK 工具可以做到这一点。
如果使用混淆器,反编译到 Java 代码可能会部分失败。混淆器可以做一些事情来删除有用的符号,并混淆典型的反编译器,使它们产生不可编译的“代码”。但是,具有中等技能(和动机/持久性)的黑客无论如何都可以弄清楚您的代码在做什么,并将反编译器输出手动编辑为可编译的 Java(如果这是他/她的意图)。
有时建议的另一种方法是加密字节码。不幸的是,对于黑客来说,回避比混淆更容易。在某些时候,您的应用程序必须解密字节码才能加载它们。黑客需要做的就是拦截它们。
而且您无法说服反编译器/反汇编器告诉用户/黑客他无法反编译/反汇编。一开始这将是一个“大谎言”......