他の人が示唆しているように、ハードウェアドングルはこのための一般的なアプローチです。ただし、これでも問題は解決しません。賢いプログラマーは、ドングルチェックをスキップするようにコードを変更できます。チェックに合格したかどうかに基づいて、コード内で分岐する場所を見つけて、それを変更するだけです。常に合格するようにテストします。
コードを難読化することで事態をさらに困難にすることができますが、それでもソフトウェアの領域に戻っており、同じ賢いプログラマーが難読化を理解し、目的の目標を達成することができます。
さらに一歩進んで、ドングルに保存されているキーを使用してコードの一部を暗号化し、ドングルからコードをフェッチするためにブートストラップコードを要求することができます。攻撃者の仕事はもう少し複雑になります。実際にはハードコーディングされている場合、攻撃者はキーを傍受し、ドングルから取得したと見なすようにコードを変更する必要があります。または、ドングル自体に復号化を実行させ、コードを渡して復号化されたコードを取得することもできます。そのため、攻撃者もそれをエミュレートするか、復号化されたコードを取得して永続的にどこかに保存する必要があります。
ご覧のとおり、ソフトウェア保護方法と同様に、これを任意に複雑にして攻撃者の負担を増やすことができますが、歴史は、攻撃者に有利にテーブルが傾いていることを示しています。スキームを解読するのは難しいかもしれませんが、それは1回だけ実行する必要があり、その後、攻撃者は変更されたコピーをすべての人に配布できます。海賊版のユーザーはソフトウェアを簡単に使用できるようになり、正当な顧客は面倒なコピー防止メカニズムに悩まされます。正当な顧客よりも優れたエクスペリエンスを海賊に提供することは、正当な顧客を海賊に変えるための非常に良い方法です。
これを回避する唯一の(主に仮想的な)方法はTrusted Computingと呼ばれ、ユーザーのコンピューターにハードウェアを追加して、承認されたアクションにユーザーが実行できることを制限することに依存しています。ハードウェアサポートの詳細については、こちらをご覧ください。
上記の理由から、このルートに反対することを強くお勧めします。海賊版を使用している顧客よりも正当な顧客に悪い体験を提供することになり、ソフトウェアを購入しないように積極的に促します。違法コピーは現実のものであり、水密保護を提供できたとしてもソフトウェアを購入しないが、不正なコピーを喜んで使用するユーザーがいます。あなたができる最善のことは、合法的な顧客に最高の体験と顧客サービスを提供し、合法的なコピーを海賊版よりも魅力的な提案にすることです。