16

他の質問と重複している可能性がありますが、私はグーグルでたくさん検索し、StackOverflow.comでたくさん検索していることを誓います。そして、私の質問に対する答えが見つかりません。

C#.Netアプリケーションで、有効期限、使用回数などの保護トライアル情報をどこに保存しますか?

私は、あらゆる種類のソフトウェア保護戦略が、洗練されたハッカーによって解読される可能性があることを理解しています(ほとんどの場合、有効期限チェックのステップを回避できるため)。しかし、私が今やろうとしていることは、「一般的な」/「上級」ユーザーがそれを台無しにできないように、合理的な方法でそれを保護することです。

OK、StackOverflow.comでグーグルでたくさん検索したことを証明するために、私が得たすべての可能な戦略をリストします。

1.レジストリエントリ

まず、一部のユーザーはレジストリテーブルを読み取ることさえできない場合があります。

次に、保護トライアル情報をレジストリエントリに入れると、ユーザーはソフトウェアのインストール前後の違いを比較することで、いつでもどこにあるかを知ることができます。彼らは単にそれを変更することができます。

OK、保護トライアル情報を暗号化する必要があると言うかもしれませんが、そうすることはできます。しかし、ユーザーがインストールする前にシステムの日付を変更した場合はどうなるでしょうか。

OK、最後に使用した日付も入力する必要があると言うかもしれません。何か問題がある場合は、最後に使用した日付が保護ガイドとして機能する可能性があります。しかし、ユーザーがソフトウェアをアンインストールし、このソフトウェアに関連するすべてのレジストリエントリを削除してから、ソフトウェアを再インストールした場合はどうなるでしょうか。

これにどう対処したらいいのかわからない。助けてください。

プレーンファイル

まず、プレーンファイルを配置する場所がいくつかあります。

  • 2.a)ソフトウェアインストールパスの下の単純なXMLファイル
  • 2.b)構成ファイル

この場合も、ユーザーはソフトウェアをアンインストールしてこれらのプレーンファイルを削除し、ソフトウェアを再インストールするだけです。

-ソフトウェア自体

ソフトウェア自体に保護トライアル情報(有効期限、使用回数は入れられません)を入れても、上記の場合の影響を受けやすくなります。さらに、そうするのもクールではありません。

-試用版のプロダクトキー

これはライセンスプロセスのように機能します。つまり、トライアル情報をRSA署名付きの文字列に入れます。ただし、ユーザーがソフトウェアを試してみるには、手順が多すぎます(忍耐力が失われる可能性があります)。

  • 4.a)ユーザーがソフトウェアをダウンロードします。
  • 4.b)ユーザーは、ユーザー名(または電子メール)またはハードウェア情報を提供することにより、トライアルプロダクトキーを要求するための電子メールを送信します。
  • 4.c)サーバーはリクエストを受信し、RSA-署名してユーザーに送り返します。
  • 4.d)ユーザーは(有効期限と使用回数)の条件で使用できるようになりました。

これで、サーバーにはユーザーのユーザー名またはハードウェア情報の記録があるため、ユーザーは2回目の試行を要求することを拒否されます。ハードウェア情報を収集することは合法ですか?

つまり、ユーザーは、ソフトウェアを試してみるためだけに、もう1つの追加の手順(試用版のプロダクトキーを要求する)を実行する必要がありますが、これはクールではありません(自分自身をユーザーと考えてください)。

注:この質問はライセンスに関するものではなく、トライアル情報の保存場所に関するものです。試用期間が終了したら、ユーザーはライセンス(CD-Key / Product-Key)を要求する必要があります。RSA署名を使用します(ユーザーハードウェアにバインドされています)

PS:私のソフトウェアは、ソフトウェア市場が米国とは異なる中国市場をターゲットにしています。中国のほとんどの人はハードウェアのみを購入し、通常はMicosoft Windows / Officeのようなソフトウェアを購入しません(海賊版を使用するだけです)。ただし、特定の分野を対象とした一部の専門的なソフトウェアでは、クラックバージョンがない場合、またはクラックバージョンのインストールが非常に難しい場合でも、研究者は喜んで購入します。

4

5 に答える 5

13

オプション1(プレーンレジストリキー)または2(プレーンファイル)のいずれかで問題ありません。これが私の推論です:

  • 標準権限のあるユーザーには、レジストリの読み取り権限があります。彼らがあなたの鍵を読めない場合は、他の何かが間違っています。標準特権のユーザーにはレジストリの書き込み権限がありませんが、そもそもソフトウェアをインストールする権限もないため、これは問題ではありません。つまり、ユーザーはインストール時にレジストリキーを作成する権限を持っているか、とにかくインストールの支援が必要になります。したがって、レジストリキーについて提起した基本的な技術的な問題は、実際には要因ではありません。
  • システムクロックを遅らせたり、レジストリを手動でハッキングしてキーを壊したりするようなユーザーのことを心配する必要はありません。もう一度言いましょう。試用版の制限を乗り越えるためにシステムを大幅に変更するという意識的な決定を下すユーザーについて心配する必要はありません。間違いなく、システムクロックを戻すか、レジストリを編集することは重要な変更です。 。これらのユーザーについて心配する必要がない理由は、潜在的な収入が正確に0ドルであるためです。。ソフトウェアの海賊版についてこの種の意識的な選択をすることをいとわないユーザーは、それが機能しない場合、単にあきらめて製品の代金を支払うことを決定するつもりはありません。彼らがあなたのソフトウェアを無料で手に入れることができないならば、彼らは競争相手と一緒に行くか、またはなしで行くでしょう。あなたはお金を稼ぐためにこれにいます-あなたはあなたが勝つことができない売上を獲得するために時間とリソースを費やしたり、競合他社にユーザーを送ったりしたくありません。したがって、どちらのオプションでも発生した基本的なセキュリティの問題は要因ではありません。
于 2010-12-23T19:43:03.077 に答える
1

少し違うタクトを取ることをお勧めします。

ソフトウェアの「ライト」バージョンを配布します。試用版はありません。機能が本当に制限されています。

「プロフェッショナル」バージョンを試用したい場合は、試用キーを入手するように依頼してください。これは何らかの形式で暗号化する必要があり、必要な場所に保存します。アプリが起動したら、このトライアルキーの存在をテストします。そこにある場合は、復号化します。キーの中には、ソフトウェアの有効期限が含まれている必要があります。

日付をテストし、それに応じて行動します。存在しない場合は、ライトバージョンとして実行してください。

トライアルキーを取得するには、アプリのボックスにメールアドレスやその他の必要な情報を入力してもらうことができます。この限られた部分で、マシンをインターネットに接続するように依頼するのは不合理ではありません。MS Officeでさえ、キーを検証するためにインターネットに短時間接続する必要があります。キーリクエストを使用してアプリにサーバーに接続してもらいます。キーをメールで返送してください。

ボーナスポイントについては、トライアルキーをマシン自体のメトリックに関連付けます。箱の名前だけでも。それらはめったに変更されず、とにかくそれは試練です。

キーを取得するためにインターネットに接続するように強制できない場合は、少し異なるルートを使用できます。アプリにリクエストを生成させます(マシン名などが含まれます)。生成されたリクエストIDを使用してユーザーに電話をかけるか、ウェブサイトにプラグインしてもらいます。次に、そのマシンのキーをメールで送信します。

これらすべてがキーの共有を妨げます。キーの場所がジャックされた場合のフォールバックがあり、キーが他のマシンに移動するのを防ぎます。また、完全に切り離された方法でこれを行う方法も提供します。公開暗号化キーをアプリからリッピングしてソフトウェアライセンスキーを復号化しても、新しいライセンスキーファイルを作成するための秘密暗号化キーはありません。

さて、鍵管理はあなたが戦っている悪のほんの一面です。

次のステップは、アプリを逆コンパイルしてキーチェックをバイパスできないようにアプリを難読化する必要があることです。これは、キーファイルを渡すよりもはるかに一般的です。

アプリには、さまざまな方法でキーをテストする複数のメソッドがある場合もあります。しかし、これは別の質問です。


これを行うのに十分な信心深い人々への最後のボーナスとして:あなたを引き裂こうとしている人々のマシンに興味深いことをするkeygenソフトウェアでさまざまな海賊ボードをシードします。あなたはここで本当に創造的になることができます。

または、ジョエルが言ったように、あなたは単にそれらについて心配することはできません。結局のところ、彼らがあなたのソフトウェアのひびの入ったバージョンを見つけるために邪魔をしているのなら、彼らはとにかくそれを支払うつもりはなく、あなたは本当に何も失っていません。

于 2010-12-23T19:56:14.980 に答える
1

完璧な解決策は1つも見つかりません。あなたがこれにかける努力はあなたが作る製品の価格に比例するべきです。それがたくさんの価値があるなら、それから専門的な解決策を購入してください。そうでない場合は、見つけた方法の任意の組み合わせを使用してください。レジストリを使用し、オンライン試用キーを要求し、ユーザーがシステム時刻を操作しているかどうかを確認します。

于 2010-12-23T18:46:03.367 に答える
0

試用版を使用しているユーザーにインターネットへの接続を要求できますか?もしそうなら、試用版を起動時にサーバーに連絡してもらうだけで、さまざまなことを確認できます。ユーザーのコンピューターにデータを保存したり、データやシステム時刻を改ざんしたりすることを心配する必要はありません。

于 2010-12-23T19:33:29.927 に答える
0

これが古いスレッドであることは知っていますが、私はそれを偶然見つけただけで、他の人がこれが役立つかもしれません。

最近の有効なオプションは、アプリケーションがインストール時にRESTサービスにクエリを実行して、試用版または有料のライセンスを生成することです。ユーザーがアプリケーションを開くたびに、アプリケーションは、ソフトウェアの特定のコピーにリンクされているライセンス情報をRESTサービスに照会します。

于 2018-05-28T12:41:37.373 に答える