最善の解決策は、おそらく今日使用されている一般的な戦術の組み合わせです。
アプリケーションをロックダウンする
…ホスト オペレーティング システムの MAC アドレス、ハード ドライブのシリアル番号、および Windows プロダクト キー (利用可能な場合) に。サイトで収集した後、これをアプリケーションにハードコーディングできます。間違ったハードウェアが検出された場合は、シャットダウンします。また、VMware または Virtual PC 統合機能の存在を示唆する項目をレジストリで探し、見つかった場合は実行を拒否します。
難読化
…そのため、リバース エンジニアリングやライセンスの削除がより困難になります。CIL は非常に簡単にリバース エンジニアリングできるため、他に何を行うにしても、(前述のように) アプリケーションではこれに重点を置く必要があります。特にシリアライゼーションに依存している場合は、これが正しく機能するまでに多くの時間がかかる場合があります。可能であれば、すべてのアセンブリを 1 つの EXE ファイルにラップします。このファイルは暗号化され、管理されていないブートストラップを含みます。
ハートビートを送る
…ハードウェアまたはサイト固有のデータを含むオフサイト サーバーへ。ソフトウェアをコピーして別のコンピューターで起動すると、ヒントが得られる場合があります。これにより、アプリケーションがオフラインになった場合に警告が表示される可能性もあります。さらに、サーバーからの基本的な暗号化された応答を要求するか、シャットダウンするようにアプリケーションを構成できます。
最後に 1 つ注意してください。船外に出ないでください。おそらく、可能性のある代替手段 (それらが何であれ) に対するアプリケーションの経験により、10,000 ドルが支払われます。保護対策を追加すると、考えられる (非常に厄介な) バグの数が増え、メンテナンス コストが追加され、顧客にとって頭痛の種になります。非常に破壊的なライセンス体系は、クライアントに別の考え方をさせる可能性があります。