使用 Play 或 Grails 或任何其他 JVM 框架;
有没有一种方法(或者什么方法)来完全编译生成的war/jar文件,以便隐藏源代码,而没有反编译的可能性?
或者甚至编译后,是否可以轻松反编译并获取字符串和类?例如数据库连接等
谢谢。
不,你无法编译anything没有可能性的反编译。也就是说,您可以采取一些措施来提高该过程的成本。
真正的技巧是让你的成本低而别人的成本高。简而言之,预计要付出更多的时间/金钱/不便,并意识到你刚刚以某种方式使挑战变得更加困难(这可能会变得很容易规避)。但是,从好的一面来看,整个软件行业在没有绝对的反编译保护的情况下也相处得很好。
签署并密封您的 JAR 文件。这可以防止人们向您的 JAR 文件添加内容,并防止人们替换您的部分代码(以更好地理解操作程序)。
考虑一个类/方法名称混淆器。这会将您的类和方法名称重命名为包含“a.a(..)”等小名称的等效结构,而不是“Client.connect(...)”。这使得其他人更难阅读您的代码(在这种情况下其他人包括您自己,因此如果您打算调试,这会增加您支持代码的成本)。哦,这会破坏任何反射,因此您必须提供反射的解决方法和修复。
如果您提供任何类型的体面日志记录,则还需要混淆日志记录,否则只需读取从类发出的日志消息即可找出类“h”是DatabaseConnection,类“k”是“User”数据对象等
类中嵌入的字符串始终可以被提取。因此,如果您想保护它们,则必须嵌入“加扰”字符串,并在使用前对其进行“解扰”。这样做会产生 CPU 开销,并且一旦知道“解扰”路由,就可以绕过整个过程。
存在奇异的解决方案,例如将代码重写为执行类似操作的等效代码。问题是,为了使最终交付成果有用,它仍然必须与原始代码执行相同的操作,但现在调试输出甚至不遵循原始代码。
通常人们想要保护解决问题的能力,而不是真正的源代码。请记住这一点,通过提供有效的东西,通常复制已编译的元素就足以打破“此代码是我的”心态。如果您确实想控制代码,请不要发布它,而是设置服务器并在您自己的硬件上“作为服务”提供软件解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)