12

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

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

Reflector を使用するだけではハッキングできない単純なソリューションが必要です。

それとも、私は非常に愚かな質問をしていますか?


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

どうもありがとう!!

4

14 に答える 14

17

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

于 2008-10-22T20:12:10.573 に答える
14

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

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

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

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

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

私は彼らに電話してもらうことが重要だと言います。なぜなら、私たちはそれを彼らのセットアップについて彼らと話し、質問に答え、彼らが実際の人間と取引していることを彼らに知らせる機会として利用するからです。他の会社に電話してなりすましを試みる勇気のある人はほとんどいません (私たちはそれらを調べて、その情報を購入データベースと比較します)。私たちのパッケージは約 2,000 ドルなので、電話料金は妥当です。パッケージのコストが低く、容量が多い場合は、電子メールでこれを行うことができます. 最後に、コールインを使用して、新しいライセンスでアップグレードとテクニカル サポートを受ける方法をユーザーに伝えます。

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

結論は?パッケージ全体を単なるソフトウェア以上のものにし、いくつかの基本的な保護メカニズムを組み込み、人的要素を導入すると、収益を最大化するためにドングルの費用と手間が必要ないことがわかるはずです。

于 2008-10-22T21:12:53.290 に答える
10

もちろん、絶対的な答えは、断固たる巧妙な攻撃者は保護を破ることができるということですが、特に需要や名声のレベルが高くないソフトウェアの場合、巧妙で断固たる攻撃者はまれであるため、保護対策を講じることは理にかなっています。

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

コード自体を保護し、その保護を回避しにくくするには、難読化します。

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

于 2008-10-22T20:26:41.417 に答える
4

Skypeが暗号化によってソフトウェアを保護するタスクにどのように取り組むかについての興味深いプレゼンテーションを読みました。

于 2008-11-02T17:51:39.920 に答える
3

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

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

于 2008-10-22T20:20:19.217 に答える
1

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

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

于 2008-10-22T20:20:36.407 に答える
1

私のお勧めは、住みやすい場合は、ドングルを使い続けることです。これらは、最も実行可能なアプローチである傾向があります。

それができない場合は、間違いなく外部のプロバイダーに行ってください。とりわけ、いくつかの重要な機能を探します (しゃれた意図はありません)。

  • キーの安全な保管
  • ライセンスチェック
  • コンパイル時の難読化 (アプリの逆アセンブルを難しくするため)

これはどれも確実ではありません。肝心なのは、開発者は長い間著作権侵害と戦ってきたということです。あなたの主な目標が正直な人々を正直に保つことである場合、まともな商用ソフトウェア保護パッケージがおそらくあなたのためにそうするでしょう.

于 2008-10-22T20:24:32.280 に答える
0

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

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

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

これは明らかにそれほど強力な保護ではありません。

于 2008-10-22T20:37:27.310 に答える
0

完璧なものはありませんが、自分でやりたい場合はCryptProtectData APIをチェックしてください。

正直なところ、ソリューションを購入するだけで頭痛の種が減る可能性があります。

于 2008-10-22T20:19:59.233 に答える
0

このデータは単なる商業的なものですか、それとも従業員などと共有するものですか?

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

それがあなたに役立つかどうかはわかりません。

于 2008-10-22T20:28:44.643 に答える
0

あなたの質問にいくつかの考えを追加させてください:

  • あなたのソフトウェアは、何らかの種類のインターネット接続を必要としますか?
    • 答えが「はい」の場合、使用状況を監視できます。(この機能についてお客様に伝えてください!)
    • 答えが「いいえ」の場合、ほとんどの場合、使用状況を監視できますが、製品が機能するためにサーバーへの接続を強制することはできません。
  • ソフトウェアにコピー防止機能を追加しますか? これは修辞的な質問ではありません。
    • 一部のソフトウェアは、ソフトウェア会社またはそのパートナーによってカスタマイズする必要があります。誰かがソフトウェアのコピーを作成し、それを専門家がカスタマイズする必要がある場合、それはその人にとって何の役にも立たないでしょう。
    • 例えば、あなたの顧客の従業員があなたのハイエンド回路設計ソフトウェアを自宅での私的プロジェクトに使用したいとあなたが許可した場合、あなたはあなたの顧客サイトにあなたの製品に投票する人を持っています。すべての購入決定。
    • 作業コピーを保護するための努力は、無許可のコピーによって生じる損失よりも高くなる可能性があります。(覚えておいてください、あなたはまだ次のバージョンに含めることができます.)
于 2008-11-02T17:14:02.150 に答える
0

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

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

于 2008-10-22T20:31:41.737 に答える
0

一般に、ネットワークに接続されていないマシン上のソフトウェアはクラックされる可能性があります。あなたのアプリケーションが、著作権侵害者がクラックされたコピーを販売できるほど十分にニッチではない場合、それを目にすることになるでしょう。私が聞いた中で明らかに成功したソリューションの 1 つは、自己変更コードです。

于 2008-10-22T21:08:37.620 に答える
0

SafeDiscStarForceSecuROM、またはその他の コピー防止ソフトウェアなど、PC ゲームで通常使用される標準的な方法を試すことができます。これらのシステムは、アプリケーションを保護するために最も開発されたソフトウェア システムの 1 つです。

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

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

于 2008-10-22T21:12:33.417 に答える