我对这个问题很好奇。
是否有一行代码或某些方法可以让我的程序在反编译时产生错误?
这不是一个大问题,因为通常它无法正确读取代码,但完全隐藏源代码会很有趣。
答案 0 :(得分:2)
首先,混淆绝不是答案。无论你认为你需要混淆,你都不需要。并且它不会阻止任何知识渊博的人,并且无论如何都要对您的应用进行逆向工程。
但至于实际问题,这取决于。一些反编译器是愚蠢的,容易打破。像Krakatau一样,有些人更强大。仍然有办法阻止Krakatau反编译,但没有什么可以阻止熟练的逆向工程师长久。
您可以使用字节码和类文件格式进行许多有趣的技巧,但其中一些特定于Oracle的JVM,从而略微降低了可移植性。我写了一些裂缝,展示了我发现的一些有趣的字节码技巧(特别是this,this,this和this)。除了Krakatau之外,其中大多数都会挫败任何工具。但这主要是学术兴趣。
答案 1 :(得分:0)
这可能是不可能的,但是,如果您希望保护自己的知识产权,可以使用ProGuard来混淆类,方法和字段名称,以使反编译代码难以理解。
答案 2 :(得分:0)
那么,根据反编译器的工作原理,您可以使用像hosemocha这样的东西。但那真的是老java。