実際にライセンスの乱用を防ぎたいと仮定すると、これを行うためのはるかに優れた方法があります。「家に電話する」アプローチは簡単にできますが、お気付きのように穴だらけです。
免責事項: 私は、これらのライセンス管理とコピー防止の問題を解決するための商用ツールを作成する会社で働いています。さまざまなベンダーから入手可能な他の同様の製品があります。
これは、アプリケーションのセットアップ方法を考えるのと大差ありません。選択肢は、自分で作成するか、既存のサードパーティ ツールセットを購入するかです。一見したところ、独自のものを作成するのは安っぽく見えますが、それはおそらく、堅牢で信頼性の高いものを作成するための真の要件をすべて発見していないためです. サード パーティのツール ベンダーは自社製品に対して料金を請求する必要がありますが、彼らは何年もかけて特定の問題セットに関するすべての問題を発見し、問題を解決してきました。そのため、作業が不要になり、アプリケーションが付加価値を提供できる場所に自由に集中できます。
違いは、設定を間違えるとユーザーがイライラすることです。コピープロテクトを間違えると、製品が海賊版になります。
いずれにせよ、ライセンス検証チェックをバイナリの「どちらかまたは両方」の状態に減らすことは非常に簡単にクラックできます。ネット上でそのチェックを行うと、10 倍簡単になります (記録再生攻撃)。最新のアプローチでは、実行可能ファイルを暗号化し、それを復号化するためのキーにライセンスが含まれています (実際の方法論には、回避することが実質的に不可能なほど複雑な手順が含まれているため、これは単純化されすぎています)。有効なライセンスを持っている場合にのみ、プログラムのロード時に実行可能ファイルを復号化して実行できます。
あなたが説明した方法でそれを行いたい場合は、これを考慮してください: アプリに予測可能な変化する値 (時間などの外部値と組み合わせた乱数のテーブルからのルックアップなど) を使用させて、ある種のハッシュを作成します。 . サーバーに同じコードを実装させます。サーバーはハッシュをアプリに送信し、アプリはそれを独自のハッシュと比較します。それらが一致する場合、アプリの実行が許可されます。そうでない場合は、エラーになります。ハッシュは起動のたびに異なるため、ネットワーク経由でハッシュを記録しても、ユーザーは次回の起動時にハッシュを実行できません。