質問

ソフトウェアでは、ハードウェアドングルを使用してソフトウェアを保護します。完璧な保護はありませんが、この商用ソリューションは手頃な価格であり、正直な人を正直に保ちます(別のスレッドで言及されています)。利点は、ハードウェアドングルに「読み取り不可」で保存される128ビットキーです。

このハードウェアドングルを取り外して、ソフトウェア保護の使用を開始します。基本的には市販の製品を使用できますが、一方では壊れることもありません。暗号化についてあまり知らないので、これを投稿しています。 Reflectorなどを使用して読み取ることができないキーをWindowsコンピューターに保存するにはどうすればよいですか?ただし、ライセンスコードをテストするためのキーにアクセスできるはずです。

Reflectorを使用するだけではハッキングできないシンプルなソリューションが欲しいのです。

または非常に愚かな質問をしていますか?


非常に迅速かつ有用な返信をありがとうございました。アプリケーションが接続されているコンピューターで常に実行されているわけではないため、インターネット経由でライセンスを使用したくありません。そうすれば、おそらく解決するよりも多くの問題が発生します。私たちは今、おそらく商用ソリューションに行きます。保護はそれほど些細なことではないようです。

どうもありがとう!!

役に立ちましたか?

解決

私は、20年近くこの問題に対処してきたソフトウェア会社を経営しています。開発者とビジネスオーナーの両方として、まず目標を少し広げることをお勧めします。たとえば、問題を「著作権侵害の防止」と定義するのは単なる間違いです。目標は収益を最大化することです。

そうは言っても、ソフトウェアを購入することは決してないが、無料で入手するためにかなりの努力を払う人もいます。 「公平」ではありません。無料のコピーを入手できますが、それを防ぐために多くのリソースを費やすことは、時間の無駄です。実際、これらの人々はしばしば「合法化」することになります。単に更新リストに登録したり、サポートを受けたり、彼らのビジネスが私たちのライセンスを購入できるようになったからです。これらの場合、元の著作権侵害により収益が増加します。

では、どのようにライセンスを取得しますか?

新しいインストールごとにランダムライセンス番号を生成します(10Kから99Kの間の番号が適切です)。次に、一致する番号を生成するアルゴリズムがあります(重要なことは何でもできます)。ちなみに、別のコンピューターに再インストールしようとすると、異なるライセンス/一致番号になるように、乱数を使用しています。

次に、ユーザーに電話で電話して、ライセンスに一致する番号を取得するように依頼します(これは重要です)。ソフトウェアは、入力された一致する番号を見て、それをユーザー側で生成された一致する値と比較します。一致する場合、ソフトウェアは完全にアクティブ化されます。

彼らに電話をかけてもらうことは重要だと思います。私たちはそれを彼らの設定について話し、質問に答え、彼らが本物の人々を扱っていることを彼らに知らせる機会として使うからです。他の会社に電話してなりすましをしようとする神経を持っている人はほとんどいません(彼らを調べて、その情報を購入データベースと比較します)。パッケージは$ 2K近くで実行されるため、電話は妥当です。パッケージのコストが低く、ボリュームが大きい場合は、電子メールでこれを行うことができます。最後に、コールインを使用して、新しいライセンスでアップグレードとテクニカルサポートを取得する方法をユーザーに伝えます。

最後に、アプリケーションのデータベース(ローカルにインストールされたMSDE / SQL Expressデータベース)にキーを保存します。これにより、アプリをコピーしようとすると、A)自明ではなく、B)最初に正当なバージョンを購入した組織(共有する可能性を低くする)。ライセンスキーは暗号化され、「分割」されます。 2つの異なるキーを2つの異なるテーブルに保持します。したがって、単純な「キーを見つけて海賊版に入力」するだけです。動作しません。

要点?ソフトウェアだけでなくパッケージ全体を作成し、いくつかの基本的な保護メカニズムを構築し、人的要素を導入すると、収益を最大化するためにドングルの費用と手間が必要ないことがわかります。

他のヒント

キーを完全に保護する方法はありません。プログラムで読み取れる場合は、別のプログラムで読み取ることができます。

絶対的な答えは、もちろん、決意のある巧みな攻撃者はあらゆる保護を破ることができるということですが、特に高いレベルの要求や名声がないソフトウェアでは、巧妙で決意のある攻撃者はまれなので、防御策を講じます理にかなっています。

ライセンスを検証するには、サーバー(またはプロトコル、監視)を検証して検証する必要があるため、キーを中央の場所に送信するのが最も安全な方法です。そのためには、ソフトウェアを使用するために接続が必要になりますが、これは可能性がある場合とそうでない場合があります。また、ローカルネットワークアクセスのみを必要とする大規模インストール用に、ソフトウェアと共に「ライセンスサーバー」を配布することもできます。ローカルでのみ検証できない場合は、ネイティブコードでdllを記述すると、リバースエンジニアリングが難しくなります。

コード自体を保護し、保護をバイパスしにくくするには、難読化します:

全体として、パッケージ化されたソリューションからより良い価値を得ることができます。

そしてこれが、コピー防止と「正直なユーザーを正直に保つ」ことが負けている理由です。正直なユーザーを正直に保つ必要はありません、彼らはすでにそうです。

最近の効果的なコピー防止スキームの大部分は、中央サーバーに対して時折キーチェックを行うことを中心にしています。アプリケーションがそのキーを中央サーバーに対して頻繁にチェックするようにし、ソフトウェアが正しくライセンスされているかどうかを判断できます。私は明らかに物事を単純化しすぎていますが、それは一つのアプローチです。

基本的に、商用ソリューションを使用する必要があります。ここでのアプローチはドングルとは異なり、ドングルを単純に複製することは期待できません。

代わりに、主な解決策は、ソフトウェアを実行しているコンピューターに関するものから部分的に計算される何らかの種類のキーを使用することです。同じことを行うKeygenはクラッカーで作成できますが、そうです。ドングルを探しないように、ソフトウェアにパッチを適用するだけでした。

私が推奨するのは、住みやすいならドングルを使うことです。それらは最も実行可能なアプローチである傾向があります。

オプションではない場合は、必ず外部プロバイダーにアクセスしてください。とりわけ、いくつかの重要な機能を探しています(しゃれはありません):

  • 鍵の安全な保管
  • ライセンスの確認
  • コンパイル時の難読化(アプリの分解を困難にするため)

これは確実なものではありません。肝心なのは、開発者が長い間海賊行為と戦ってきたということです。海賊が十分に決定されると、私たちは常に負けてしまいます。あなたの主な目標が正直な人々を正直に保つことであるなら、まともな商用ソフトウェア保護パッケージはおそらくあなたのためにそうするでしょう。

完璧なものはありませんが、自分でやりたい場合は、CryptProtectData API。

しかし、正直に言うと、ソリューションを購入するだけで頭痛が少なくなります。

このデータは単なる商業的なものですか、それともあなたが労働者と共有しているものですか?

後者の場合は、簡単なc ++プログラムを作成してxorすることができます。基本的に、キーの長さがドキュメントの長さと等しい場合、「壊れない」必要があります。私がc ++で行うことは、ドキュメントのサイズのランダムな文字のバッファを作成し、それをxorし、ドキュメントとキーファイルを別々に送信し、次に他の人が一緒にxorしてドキュメントを取得することです。

それが役立つかどうかわからない。

ユーザーのローカルコンピューターにキーを保存すると、クラッカーはこれを阻止しようとしても、アクセスできるようになります。

キーまたはコピー防止コードの重要な部分をリモートで保存せず、リモートで処理するのはなぜですか?

キーのハッシュ(SHA1、MD5など)を生成し、アプリケーションでハッシュをハードコーディングします。キーをユーザーに配布します。実行可能ファイルで、ユーザーが指定したキーのハッシュをハードコードされたハッシュと照合できます:

bool CheckKey(string keyFromUser) 
   return SHA1(key) == "ABC2983CF293892CD298392FG";
}

これは、組織(または別のユーザー)からキーを取得できる人は誰でもアプリケーションを実行できることを意味します。実行可能ファイルを調べてキーを特定することは実際には困難です。

これは明らかに非常に強力な保護ではありません。

一般に、ネットワークに接続されていないマシン上のソフトウェアはクラックされる可能性があります。海賊版がクラックされたコピーを販売できるほどニッチではないアプリケーションの場合は、そこから確認できます。明らかに成功したと聞いた解決策の1つは、自己修正コードです。

SafeDisc StarForce 、 SecuROM またはその他のコピー防止ソフトウェア。これらのシステムは、アプリケーションを保護するために最も開発されたソフトウェアシステムの1つです。

それでも、経験だけでは、ソフトウェア保護システムだけが壊れることはなく、ハッカーがそれらを破壊するのにかかる時間は、保護されたコンテンツの価値に正比例することがわかります。人気のあるゲームの海賊版コピーを防止するために保護システムがどれほど高度に使用されたとしても、数か月先のクラックが待っています。

ライセンスサーバーはシステムの問題であると述べていますが、すぐには削除しません。少なくとも最初のプログラムの実行時にライセンスを発行するライセンスサーバー(インストールごとに異なる復号化キーなど)が、著作権侵害を減らすための最良の抑止策であると思います。暗号化方式の強度だけでなく、主に自動登録システムが原因です。ソフトウェアアクティベーションキーがインストール/ユーザーごとに一意であり、保存され、ユーザーのプロファイルに一致していることを顧客に知らせると、キーとソフトウェアの提供について考え直すことになります。

質問に考えを追加してください:

  • ご使用のソフトウェアには、あらゆる種類のインターネット接続が必要ですか?
    • 答えが「はい」の場合、使用状況を監視できます。 (この機能について顧客に伝えてください!)
    • 答えが「いいえ」の場合、ほとんどの場合、使用状況を引き続き監視できますが、製品が機能するようにサーバーへの接続を強制することはできません。
  • ソフトウェアにコピー防止機能を追加しますか?これは修辞的な質問ではありません。
    • 一部のソフトウェアは、ソフトウェア会社またはそのパートナーがカスタマイズする必要があります。誰かがソフトウェアのコピーを作成し、それを専門家がカスタマイズする必要がある場合、それは彼にとってはまったく役に立ちません。
    • e.g。顧客の従業員が自宅でプライベートプロジェクトにハイエンドの回路設計ソフトウェアを使用したい場合、その許可を与えると、顧客サイトに誰かがいます。購入決定。
    • 作業コピー保護の努力は、許可されていないコピーによって生じる損失よりも大きくなる可能性があります。 (次のバージョンにも引き続き含めることができます。)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top