2

ライセンスで保護したいソフトウェアを開発しました。これまでのところ、ハードウェアコンポーネントの詳細を使用して、各マシンの一意のIDを生成するコードがあります。次に、1つのシリアルキーに対して5台のマシンのアクティブ化を許可できます(ライセンスごとに5台のマシンが販売しています)。

これはすべて正常に機能しますが、明らかにインターネットに接続されているマシンでのみ機能します。これはこの種の保護の単なる制限であり、私にできることは何もありませんか?または、この問題に取り組む方法はありますか?

NB:この時点で、このスレッドでは、一意のIDを生成する方法について批判することはできません。これは私が選択した方法であり、無意識のうちに、いくつかのことを続ける必要があります。理由。

4

2 に答える 2

2

私はあなたがいくつかのオプションを持っていると思います:

  1. コメントで説明されているように、許可されたすべてのマシンの一意のIDをキーに組み込むことにより、ライセンスをフローティングにするのではなく、マシン固有にします。起動時に、現在のマシンの一意のIDをキーと照合します
  2. 現在のアプローチを使用しますが、サーバーがあなたの側ではなく顧客の構内にあるという違いがあります。つまり、顧客がどこかにインストールする必要があるライセンスサーバーです。
  3. ある種のセルフチェックを実装します。実行中の各インスタンスは、その一意のIDをネットワークに送信し、次に、他の実行中のインスタンスの一意のIDをリッスンします。ネットワークを介して4つを超える一意のIDを受信した最初のインスタンスは、自身をシャットダウンします。これはUDPブロードキャストを使用して実装できると思います。これの実装はそれほど簡単ではありません:

    • 1つのインスタンスを終了し、その直後に新しいインスタンスを開始しても、他の場所でシャットダウンが発生しないことを確認する必要があります。
    • さらに、マシンが実際にネットワーク化されていることのチェックを実装することもできます

    そのようなものを実装する場合、次の3つのパッケージタイプを紹介します。

    • 開始:インスタンスが開始されたばかりで、そのIDを初めてブロードキャストします。他のすべてのインスタンスは、回答として独自のIDをブロードキャストする必要があります。この理由は2つあります。
      1. 早く失敗する
      2. 理想的には、最後に開始されたインスタンスは、許可されたインスタンスの最大数を超えた場合に終了する必要があります。すでに実行中のインスタンスの1つがシャットダウンするのは理想的ではありません。
    • 定期的:以前の送信が失敗した場合に備えて、すべてのインスタンスが定期的に一意のIDを送信します
    • 終了:1つのインスタンスが閉じている場合、他のインスタンスにこの事実を伝えます

いずれの場合も、許可されたインスタンスの数をキーにエンコードすることを検討する必要があります。そうすれば、後で異なるサイズのキーを配布できます。

于 2012-08-29T14:23:55.430 に答える
2

中央ライセンスサーバーが必要になります。起動時の各プログラムは、そのサーバーに登録されます。サーバーは、クライアントが起動できるかどうかをクライアントに通知します。すでに5つのプログラムが開始されている場合、プログラムは開始を拒否します。

プログラムが停止すると、ライセンスサーバーにライセンスが不要になったことを再度通知します。

仕事は終わりました。インターネットは必要ありません。

于 2012-08-29T14:36:54.723 に答える