まず第一に、ドングルはほんの少しの障害を提供するだけであることを理解してください。自分が何をしているのかを知っている人は、ドングルへの呼び出しを削除し、呼び出された結果に対して「true」を入力します。誰もがあなたにこれを言うでしょう。ただし、追加できる障害があります。
私はあなたのコードの重要な部分、知るのが難しいか難しいもの、ドメイン知識を必要とするものを見つけるでしょう。次に、その知識を鍵に入れます。この一例は、シェーダールーチンです。シェーダールーチンは、特定の効果を実現するためにグラフィックカードに送信されるテキストファイルです。非常に単純な明るさ/コントラストフィルターの実装には500文字未満で済み、ほとんどのドングルのユーザースペースに保存できます。次に、その情報をキーに配置し、画像を表示するためにキーからの情報のみを使用します。そうすれば、誰かがドングルを単に取り除こうとすると、プログラム内のすべての画像が黒く塗りつぶされます。誰かがあなたのプログラムのコピーを持っていて、キーからテキストファイルを取得し、次にそのテキストファイルを含むようにプログラムを変更する必要があります。そして、その特定のファイルが画像を表示するための「正しい」方法になることを知っています。実装の詳細は、デプロイメントプラットフォームによって異なります。たとえば、WPFでプログラムを実行している場合は、DirectXルーチンをキーに保存し、そのルーチンをキーから読み込んで、アプリ内のすべての画像に効果を適用できる場合があります。次に、クラッカーはそのDirectXルーチンをインターセプトし、適切に適用できる必要があります。
もう1つの可能性は、キーの乱数生成ルーチンを使用してUIDを開発することです。誰かがドングル機能を削除するとすぐに、生成されたすべてのUIDがゼロになります。
ただし、最善の方法は、ドメイン固有の関数をドングルに配置することです(UID生成ルーチン全体など)。この点に関しては、メーカーが異なれば機能も異なります。
これらの賢さはあなたにどれだけの障害をもたらしますか?現実的には、それはあなたのプログラムの人気に依存します。あなたのプログラムの人気が高いほど、誰かがそれをクラックしたいと思う可能性が高くなり、そうすることに時間を費やすでしょう。そのシナリオでは、ドングルコーディングが特に得意な場合は、数日かかる場合があります。プログラムがそれほど人気がない場合(たとえば、数百人の顧客のみ)、ドングルが存在するだけで、巧妙なことを何もしなくても十分に抑止できます。