他の質問と重複している可能性がありますが、私はグーグルでたくさん検索し、StackOverflow.comでたくさん検索していることを誓います。そして、私の質問に対する答えが見つかりません。
C#.Netアプリケーションで、有効期限、使用回数などの保護トライアル情報をどこに保存しますか?
私は、あらゆる種類のソフトウェア保護戦略が、洗練されたハッカーによって解読される可能性があることを理解しています(ほとんどの場合、有効期限チェックのステップを回避できるため)。しかし、私が今やろうとしていることは、「一般的な」/「上級」ユーザーがそれを台無しにできないように、合理的な方法でそれを保護することです。
OK、StackOverflow.comでグーグルでたくさん検索したことを証明するために、私が得たすべての可能な戦略をリストします。
1.レジストリエントリ
まず、一部のユーザーはレジストリテーブルを読み取ることさえできない場合があります。
次に、保護トライアル情報をレジストリエントリに入れると、ユーザーはソフトウェアのインストール前後の違いを比較することで、いつでもどこにあるかを知ることができます。彼らは単にそれを変更することができます。
OK、保護トライアル情報を暗号化する必要があると言うかもしれませんが、そうすることはできます。しかし、ユーザーがインストールする前にシステムの日付を変更した場合はどうなるでしょうか。
OK、最後に使用した日付も入力する必要があると言うかもしれません。何か問題がある場合は、最後に使用した日付が保護ガイドとして機能する可能性があります。しかし、ユーザーがソフトウェアをアンインストールし、このソフトウェアに関連するすべてのレジストリエントリを削除してから、ソフトウェアを再インストールした場合はどうなるでしょうか。
これにどう対処したらいいのかわからない。助けてください。
プレーンファイル
まず、プレーンファイルを配置する場所がいくつかあります。
- 2.a)ソフトウェアインストールパスの下の単純なXMLファイル
- 2.b)構成ファイル
この場合も、ユーザーはソフトウェアをアンインストールしてこれらのプレーンファイルを削除し、ソフトウェアを再インストールするだけです。
-ソフトウェア自体
ソフトウェア自体に保護トライアル情報(有効期限、使用回数は入れられません)を入れても、上記の場合の影響を受けやすくなります。さらに、そうするのもクールではありません。
-試用版のプロダクトキー
これはライセンスプロセスのように機能します。つまり、トライアル情報をRSA署名付きの文字列に入れます。ただし、ユーザーがソフトウェアを試してみるには、手順が多すぎます(忍耐力が失われる可能性があります)。
- 4.a)ユーザーがソフトウェアをダウンロードします。
- 4.b)ユーザーは、ユーザー名(または電子メール)またはハードウェア情報を提供することにより、トライアルプロダクトキーを要求するための電子メールを送信します。
- 4.c)サーバーはリクエストを受信し、RSA-署名してユーザーに送り返します。
- 4.d)ユーザーは(有効期限と使用回数)の条件で使用できるようになりました。
これで、サーバーにはユーザーのユーザー名またはハードウェア情報の記録があるため、ユーザーは2回目の試行を要求することを拒否されます。ハードウェア情報を収集することは合法ですか?
つまり、ユーザーは、ソフトウェアを試してみるためだけに、もう1つの追加の手順(試用版のプロダクトキーを要求する)を実行する必要がありますが、これはクールではありません(自分自身をユーザーと考えてください)。
注:この質問はライセンスに関するものではなく、トライアル情報の保存場所に関するものです。試用期間が終了したら、ユーザーはライセンス(CD-Key / Product-Key)を要求する必要があります。RSA署名を使用します(ユーザーハードウェアにバインドされています)
PS:私のソフトウェアは、ソフトウェア市場が米国とは異なる中国市場をターゲットにしています。中国のほとんどの人はハードウェアのみを購入し、通常はMicosoft Windows / Officeのようなソフトウェアを購入しません(海賊版を使用するだけです)。ただし、特定の分野を対象とした一部の専門的なソフトウェアでは、クラックバージョンがない場合、またはクラックバージョンのインストールが非常に難しい場合でも、研究者は喜んで購入します。