当前位置: 首页 > 面试题库 >

如何保护Java代码免于反编译?

吕奇
2023-03-14
问题内容

众所周知,有很多Java反编译器工具可以将.cl​​ass转换为.java文件。

因此,我们需要保护.java文件免于反编译。我知道这是一个大话题,也许没有止境。

通常,有两种方法:混淆器和定制的类加载器。

是否有将这两种方式结合在一起的成熟解决方案或开源框架?

另一个方面与exe4j有关,它将jars打包到exe文件中,似乎可以保护java代码,因为我们看到的是exe文件而不是jars或class文件。但是确实,当它运行时,它将所有jar文件分解为临时目录,这意味着很容易获得用于反编译的类文件。那么从exe4j方面保护Java代码的任何注意事项吗?

感谢您的评论和建议。

更新中

感谢大家的建议或经验分享。那对我有帮助。作为结论,我将放弃任何带有加密功能的混淆器或自定义类加载器。因为最终Java代码可以在聪明的黑客面前公开。

我将在编译时使用C语言中的“


问题答案:

您无法保护类文件免受反编译器和恶意用户的侵害。但是,反编译器的输出可能不是有效的java。

最好的方法是很好地记录您的API(假设可供客户使用)和应用程序。并且让您的支持人员能够解决API和应用程序问题。这样,您的客户就没有理由要使用反编译器来探究为什么事情无法正常进行。



 类似资料:
  • 问题内容: 我正在使用Java开发应用程序,但是我不会发布代码。问题是,我测试了其中的一个jar反编译器,它几乎可以完美地从我的jar文件中获取代码!我的问题是如何在不提取代码的情况下分发jar文件? 问题答案: 由于Java在编译过程中保留了大多数“元数据”(允许动态加载和反射),因此直接编译(不仅反汇编)已编译的类文件是一种直接的方法。这就是为什么恢复的代码与原始代码非常相似的原因。 虽然不是

  • 问题内容: 我是Java初学者。我正在开发可解密某些数据的应用程序。解密密钥被硬编码到软件中,因此可以通过分析字节码看到。 我知道不能完全防止逆向工程,所以我想做的就是使过程尽可能地艰巨。 我的想法不是直接将密钥放入代码中,而是将其进行某种转换。例如,我可以写- 这样,查看字节码的人无法立即读取它。但是将必须遵循逻辑并对其进行转换,这在字节级别上不会那么容易。 那么你们怎么看?这有用吗?除了十六进

  • 问题内容: 我正在编写我的第一个使用OAuth的应用程序。这是针对桌面应用程序的,而不是网站或移动设备,在这些应用程序上访问二进制文件会更加困难,因此我关注如何保护应用程序的密钥和机密。我觉得查看编译后的文件并找到存储密钥的字符串很简单。 我是否反应过度,或者这是桌面应用程序的真正问题(使用已知解决方案)? 该项目正在用Java进行编码,但是我也是C#开发人员,因此任何用于.NET的解决方案也将不

  • 问题内容: 我正在用Python开发一款软件,该软件将分发给雇主的客户。我的雇主想通过限时许可文件限制软件的使用。 如果我们分发文件甚至文件,将很容易(反编译和)删除检查许可证文件的代码。 另一个方面是,我的雇主不希望我们的客户阅读该代码,因为担心该代码可能被盗或至少是“新颖的主意”。 有解决这个问题的好方法吗?最好使用现成的解决方案。 该软件将在Linux系统上运行(因此,我认为py2exe不会

  • 问题内容: 实际上,我是一名PHP开发人员。我想出售我的PHP产品。 因此,我想保护PHP中的一些主要源代码。但是在PHP中这是不可能的。 我也知道Golang 因此,我想在golang代码中构建秘密算法并编译为二进制。 最后,我想用PHP代码和&二进制程序保护我的PHP主要算法。 我的疑问是: 当我将golang源代码编译为二进制文件时。是否可以从二进制文件中获取golang源代码? 问题答案: