与反编译器相比,Java代码混淆实际上有效吗?
我很好奇,考虑不在晚上用Java编写某些代码,因为反编译是多么容易。有没有一种方法可以让我用Java编写而不用担心反编译器?我知道只要有足够的时间,任何东西都可以被反向工程,所以我要问的是:Java类混淆器是否足够有效,足以阻止反编译?根据我个人的经验,反编译Java时,我会说混淆会使人的反编译尝试非常恼人和困难。最让我恼火的是,最终构建的类文件都被命名为“a.class、b.class、c.class”等等,并且大量的假人被扔进去。在代码内混淆方面,try/catch可以很好地为反编译器搞乱内容 一般来说,您反编译的任何内容都是不可编译的,但会提示您程序的一般工作方式 Java类混淆器是否足够有效以阻止分解与反编译器相比,Java代码混淆实际上有效吗?,java,obfuscation,decompiling,Java,Obfuscation,Decompiling,我很好奇,考虑不在晚上用Java编写某些代码,因为反编译是多么容易。有没有一种方法可以让我用Java编写而不用担心反编译器?我知道只要有足够的时间,任何东西都可以被反向工程,所以我要问的是:Java类混淆器是否足够有效,足以阻止反编译?根据我个人的经验,反编译Java时,我会说混淆会使人的反编译尝试非常恼人和困难。最让我恼火的是,最终构建的类文件都被命名为“a.class、b.class、c.class”等等,并且大量的假人被扔进去。在代码内混淆方面,try/catch可以很好地为反编译器搞乱内
我会说“不”。当我反编译源代码试图找出某人是如何做某事的时候,我已经知道我在寻找什么了。所以我不需要理解整个程序,只需要理解我当时感兴趣的一部分。由于对方法有足够的困惑,并且在调用链上有一点回溯,通常不需要太多的努力就可以确定隐藏在引擎盖下的内容。坦率地说,不。无论你如何可笑地混淆代码,如果有人知道他可以从你的代码中赚一百万美元,他将反编译您的类文件并获取代码 不过,还有其他选择:
编辑:据报道,有人利用电子显微镜成功地打破了流行的TPM芯片;看见有趣的是,他最初的动机是破解Xbox360游戏机 如果你的问题是我能否确保没有人能破解我的代码,答案是否定的。。 无论是在java还是Visual C++中。 只要黑客可以直接访问由“是”或“比特”组成的软件 原因很简单 无论您如何编码,都可以解码。 最好的策略可能是制作一个web服务并在那里部署您的秘密逻辑。
让其他人使用您的服务,而不必访问您的编写方式。在Java和其他语言中,混淆只是一种威慑。它只是提高了攻击者的门槛。这并不意味着模糊处理没有价值,只是不能保证 你想保护什么?你的目标市场是什么 在一个充斥着盗版的市场上,对许可证算法进行模糊保护并没有多大意义。然而,对于中小企业来说,这可能足以消灭大多数临时海盗 如果你想保护知识产权免受竞争,我看到两个答案。这个想法,将很难保护。一个有能力的工程师查看代码将发现逻辑的精华并能够重新实现。混淆会使人们更难直接获取代码并将其包含在自己的产品中。当他们试图进行更改时,维护成本将继续增长(我想说,对于干净的反编译代码也是如此) 我为公司开发的java产品是模糊的。他们有没有保护我们免遭盗窃……我怀疑。但是,就我们的开发成本而言,这种混淆并没有那么昂贵。以小的价格获得一点保护并不是一个坏的权衡。如果你读了我的帖子,你会发现我找不到一个好的java反模糊器,它实际上可以像预期的那样工作
因此,当前的答案是:不。请注意,您不应该在调试版本中进行任何模糊处理,而应该在发布版本中进行!使用模糊代码非常困难。这两种代码都不会真正阻止反编译-1。)只意味着它们需要将本机可执行文件反编译到程序集-2。)如果自定义类加载器可以解密该类,他们可以从类加载器-@nate获得它…说起来容易做起来容易1)对于exe,如果反编译程序集本机代码真的有帮助,那么地球上没有任何代码是安全的2)如果只有你的类加载器知道键,你甚至读过链接了吗?1.)没有任何代码(用户可以直接访问)是逆向工程的“安全”代码——任何可执行文件都可以反编译为汇编文件——有些人既可以编写汇编文件,也可以编写Java文件。2.)无论采用何种加密方案,类加密都是无用的,因为类加载器要在JVM中工作,它必须通过defineClass()方法向JVM提供未加密的类-如何阻止某人仅仅使用类加载器解密您的类