【发布时间】:2011-02-28 21:19:45
【问题描述】:
我正在为应用程序开发一些外部模块。
这些模块是 BPL 文件,如果存在于应用程序文件夹中,应用程序会加载它们并使用其中可用的任何内容。
如何防止我的客户共享这些模块?
我需要他们被授权使用模块(一个模块一个模块)。
要获得某种许可,注册模块,最好的方法是什么?
谢谢
【问题讨论】:
-
BPL 只是可执行代码,您可以像授权任何其他代码(包括“主”exe)一样授权它们。
我正在为应用程序开发一些外部模块。
这些模块是 BPL 文件,如果存在于应用程序文件夹中,应用程序会加载它们并使用其中可用的任何内容。
如何防止我的客户共享这些模块?
我需要他们被授权使用模块(一个模块一个模块)。
要获得某种许可,注册模块,最好的方法是什么?
谢谢
【问题讨论】:
我假设您的客户都有某种唯一 ID(序列号、许可证号)。当您合法地将 BPL 提供给您的一个客户时,请给他两个文件:BPL 本身 + 一个包含 BPL 名称哈希的文件 + 用户的许可证号。如果无法验证哈希,请不要加载 BPL。确保您不对 BPL 本身进行哈希处理,否则您最终会遇到无法使用您的 BPL 的客户,因为他们感染了病毒!
让您的 BPL 导出一个类似于 function OkForClient(ClientID:string):Boolean 的函数。这允许您将验证从 BPL 更改为 BPL。
花一周时间学习非对称加密,用攻击者无法复制的东西替换第一个选项中的哈希文件,即使他们知道算法。
【讨论】: