最近、正直な人が自分の原則を守るのを助ける方法として、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 つの質問があります。それらを 4 つの別々の項目に分けて質問し、コンテキストの参照を追加する必要があるのは、より厄介なように思えましたが、それが望ましい場合は喜んでそうします。ご協力ありがとうございました。
ジャック