如何使java反编译器生成错误

如何使java反编译器生成错误,java,decompiler,Java,Decompiler,我对这个问题很好奇 是否有一行代码或某种方式可以让我的程序在反编译时生成错误 这不是一个大问题,因为它通常无法正确读取代码,但是完全隐藏源代码会很有趣。这可能是不可能的,但是,如果您希望保护您的知识产权,您可以使用,方法和字段名称使反编译代码难以理解。好吧,根据反编译器的工作方式,您可以使用hosemocha之类的工具。但这确实是非常古老的java 首先,困惑永远不是答案。无论你认为你需要混淆什么,你都不需要。而且它不会阻止任何有知识和决心的人对你的应用程序进行反向工程 但至于实际问题,这要视情

我对这个问题很好奇

是否有一行代码或某种方式可以让我的程序在反编译时生成错误


这不是一个大问题,因为它通常无法正确读取代码,但是完全隐藏源代码会很有趣。

这可能是不可能的,但是,如果您希望保护您的知识产权,您可以使用,方法和字段名称使反编译代码难以理解。

好吧,根据反编译器的工作方式,您可以使用hosemocha之类的工具。但这确实是非常古老的java


首先,困惑永远不是答案。无论你认为你需要混淆什么,你都不需要。而且它不会阻止任何有知识和决心的人对你的应用程序进行反向工程

但至于实际问题,这要视情况而定。有些反编译器是哑的,很容易被破坏。有些,如喀拉喀托,更为强健。还有一些方法可以防止Krakatau进行反编译,但是没有什么可以阻止一个熟练的逆向工程师长时间工作


您还可以使用字节码和类文件格式玩很多有趣的把戏,尽管其中一些是特定于Oracle的JVM的,因此略微降低了可移植性。我已经编写了crackmes来演示我发现的一些有趣的字节码技巧(特别是、、和)。其中大多数将挫败除喀拉喀托以外的任何工具。但这主要是学术兴趣。

有可能生成没有有效java等价物的字节码(例如duff设备)。一些使用break/continue(标签)的富有想象力的嵌套循环构造在反编译时也容易中断(与其说是不可能的,不如说是反编译器限制的标志)。正如我所说,我只是想知道是否有办法;)谢谢你的回复