【发布时间】:2012-06-21 11:52:13
【问题描述】:
我编写了一个 Java 应用程序,并计划在线分发它。每个版本都将使用我制作的秘密序列号进行锁定。
我需要保护我的 jar 文件免受反编译器等的影响。这是我目前所做的:
- 用户在表单中输入他的序列号
- 串口通过 php 脚本发送到我的开发服务器
- 脚本生成一个新的 jar bin 文件,该文件以 AES 128 加密
- 我的“加载器”将 jar 文件作为字节下载并解密。
- 它调用 main 方法。
- 用户可以随意使用应用程序
- 用户关闭应用
- 缓存被清除,一切都返回到第 1 步或之前。
我已经完成了步骤 1 到 3,但我需要知道是否可以制作一个自定义类加载器,从 HTTP 中获取字节、解密它们并调用 main 方法。由于文件是完全加密的(在 PHP 服务器上保存为 bin),我不能使用基本的类加载器。关于第 8 步,是否可以从计算机内存中卸载内容?
【问题讨论】:
-
我意识到这不是一个非常乐观或有用的想法,但如果您还不知道如何保护您的代码,那么您不太可能编写任何有人想窃取的东西。你的努力可能最好集中在更有成效的地方。
-
“我需要保护我的 jar 文件免受反编译器等的影响。” 当我在自定义 JRE 中运行它时,它是我的。
-
有什么意义?最终,一切都可以进行逆向工程。让购买您的应用程序的人跳过这些障碍值得您花时间吗?如果你的 JAR 不处理防御/敏感的东西,我在这些事情上看不到任何意义。想偷看幕后的人比例很小。而且真的想偷看幕后的人比例更小,但他们不会放弃,他们会绕过你的方法。所以我认为浪费时间这样做没有什么好处(也许除了学习)。
-
@Dave 我已经用 allatori 混淆了我的代码(实际上这非常好)。我的应用需要一种无法破解的登录表单。
-
@haylem 这样做是因为这是一个安全应用程序。
标签: java classloader urlclassloader source-code-protection