我有一个独立的Java应用程序,它具有一些我希望保护的授权代码,即阻止用户更改我的软件以规避授权。做这个的最好方式是什么?Jar安全
我已经看了困惑,但需要各种各样的问题:反思,系列化,乱七八糟的堆栈跟踪等也许JAR签名可能是一个解决方案吗?但是如何在运行时验证jar?我如何确保用户不更改jar验证码?
我有一个独立的Java应用程序,它具有一些我希望保护的授权代码,即阻止用户更改我的软件以规避授权。做这个的最好方式是什么?Jar安全
我已经看了困惑,但需要各种各样的问题:反思,系列化,乱七八糟的堆栈跟踪等也许JAR签名可能是一个解决方案吗?但是如何在运行时验证jar?我如何确保用户不更改jar验证码?
对不起,如果你的用户有足够的萨维与您的类文件篡改,他们会首先删除签名检查功能。 我同意模糊处理,但是不应该使用一个好的混淆器来保存一些字典来为你转换一个模糊的堆栈跟踪吗?
这个讨论真的很古老,真的很复杂。只要看看游戏行业。也许你应该考虑用你的应用程序来运送吉他?
结合这两者,你应该有很好的协同效应。
你可以密封罐子。 PLS。详见
以下链接 - http://java.sun.com/docs/books/tutorial/deployment/jar/sealman.html
java.sun.com/developer/JDCTechTips/2001/tt0130.html
这可以保护用户免受不良代码的侵害。它不保护恶意用户的代码。 – erickson 2008-10-28 23:06:28
这是一个法律问题,而不是软件问题。
您可以让第一个用户制作副本更加困难,但并非不可能。而一旦决心的攻击者破坏了你的安全,他可以为懒人制作无限数量的副本。
如果你认为这是有利可图的,起诉人谁使你的软件的盗版拷贝。
我相信谁都会故意窃取您的软件(或者更一般地说,知识产权)用的介质类型不同而不同,对大多数产品,是比较小的用户的部分。如果您正在销售T-Pain MP3,盗窃可能会破坏您的业务。否则,应采取信用卡公司的立场,这些公司希望能够容忍由于欺诈造成的一些损失,但仍然可以盈利。
我们目前使用了一个混淆器,它可以提供合理的保护来抵御攻击。我们现在使用的是一个堆栈跟踪工具,当它们从另一端出来时(基于在混淆时生成的日志文件),它将消除它们的混淆。
即使这样,对确定的黑客也没有真正的保护。
对吉他的想法+1。 – Epaga 2008-10-29 22:34:11