最近,我研究使用 OnGuard 来帮助诚实的人遵守他们的原则。我同意这里许多人所表达的观点,即没有任何许可系统可以保护您免受想要使用您的软件并且不想为此付费的人的侵害。另一方面,我想避免让其他人太容易为我的程序创建有效密钥。
在研究了手册和示例之后,我在主表单的代码中添加了以下内容:
const
TheKey: TKey = ($4A,$62,$F3,$2B,$9C,$D2,$84,$BF,$CB,$04,$0A,$C3,$3D,$11,$47,$1A);
function TfrmMain1.MakeCode(sName, sNumber: String; dtExpiration: TDate): String;
var Key: TKey;
Code: TCode;
sCode: String;
begin
Key := TheKey;
InitRegCode(Key, sName + ' - ' + sNumber, dtExpiration, Code);
sCode := BufferToHex(Code, SizeOf(Code));
Insert('-', sCode, 13);
Insert('-', sCode, 09);
Insert('-', sCode, 05);
Result := sCode
end;
function TfrmMain1.TestCode(sName, sNumber, sTestCode: String; dtExpiration: TDate): Boolean;
var Key: TKey;
Code: TCode;
sCode: String;
begin
sCode := MakeCode(sName, sNumber, dtExpiration);
Result := SameText(sCode, sTestCode);
end;
这带来了一些问题:
似乎是正确的使用方法?我宁愿不将它们的组件添加到我的表单中。
既然 OnGuard 源是可用的,黑客就不能对我将选择的密钥进行逆向工程并生成有效的发布代码吗?因此,我是否应该在代码中添加一些额外的混淆,或者我可能只是削弱系统。
Key 在这里设置为常数。它不会在代码中显示为连续字节并且易于复制吗?
我的程序将需要(至少)年度更新,我的计划是通过年度订阅许可它。在我的程序中将年份添加为常量并在几个地方针对该年份测试过时的用户条目是否会更强。
这里有 4 个问题密切相关且非常具体。在四个单独的条目中询问这些似乎会更尴尬,并且必须添加上下文参考,但如果这样更可取,我会很高兴这样做。感谢您的帮助。
杰克