質問

他の質問と複製するかもしれませんが、私はたくさんグーグルで検索してstackoverflow.comでたくさん検索したことを誓います。私の質問に対する答えは見つかりません。

C#.NETアプリケーションでは、有効期限、使用時間数など、保護試験情報をどこに保存するか?

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

わかりました、Stackoverflow.comでグーグルで検索して検索したことを証明するために、私が得た可能性のあるすべての戦略をリストしています。

1.レジストリエントリ

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

第二に、保護試験情報をレジストリエントリに配置すると、ユーザーはソフトウェアのインストールの前後に違いを比較することで、いつでもそれを見つけることができます。彼らは単にそれを単に変更することができます。

わかりました、あなたは私たちが保護試験情報を暗号化するべきだと言うかもしれません、はい、私たちはそれをすることができます。しかし、ユーザーがインストールする前にシステムの日付を変更するだけの場合はどうなりますか?

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のようなソフトウェアを購入しません(海賊版コピーを使用しています)。ただし、特定の分野を目指しているプロフェッショナルソフトウェアの一部は、亀裂バージョンがない場合、またはクラックバージョンをインストールするのが非常に困難な場合、調査の人々はまだそれを購入する意思があります。

役に立ちましたか?

解決

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

  • 標準的な主なユーザーは、レジストリの読み取り権限を持っています。彼らがあなたの鍵を読むことができない場合、何か他のものが間違っています。標準的な主なユーザーには、レジストリの書き込みアクセス許可がありませんが、そもそもソフトウェアをインストールする権限もないため、これは問題ではありません。言い換えれば、ユーザーはインストール時にレジストリキーを作成する許可を得るか、とにかくインストールをサポートする必要があります。したがって、レジストリキーのために提起した基本的な技術的問題は実際には要因ではありません。
  • システムクロックを後退させたり、レジストリを手動でハッキングしてキーを破るなどのユーザーを心配しないでください。もう一度言いましょう: システムを変更するという意識的な決定を下すユーザーを心配しないでください。 - そして、間違いを犯さないでください。システムクロックを戻すか、レジストリを編集することは大幅な変更です。これらのユーザーを心配してはいけない理由は それらは、潜在的な収入で正確に0ドルを表しています. 。ソフトウェアの海賊行為についてこの種の意識的な選択をすることをいとわないユーザーは、あきらめて、それが機能しない場合は製品の支払いを決定するだけではありません。彼らがあなたのソフトウェアを無料で入手できない場合、彼らは競合他社と一緒に行くか、それなしでやるでしょう。あなたはお金を稼ぐためにこれにいます - あなたはあなたが勝つことができない、または競合他社にユーザーを送ることができない販売をつかもうとする時間とリソースを費やしたくありません。したがって、どちらのオプションでも提起した基本的なセキュリティの問題は要因ではありません。

他のヒント

完璧なソリューションは1つありません。あなたがこれに費やした努力は、あなたが作る製品の価格に比例するはずです。それがたくさんの価値があるなら、プロのソリューションを購入してください。そうでない場合は、見つけた方法の任意の組み合わせを使用してください。レジストリを使用し、オンライントライアルキーを要求し、ユーザーがシステム時間を操作するかどうかを確認します。

少し異なるタクトをとることをお勧めします。

ソフトウェアの「ライト」バージョンを提供します。試行はありません。実際には機能が限られています。

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

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

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

ボーナスポイントの場合、トライアルキーをマシン自体のメトリックに結び付けます。たとえそれが箱の名前だけであっても。これらはめったに変わりませんし、とにかく試練です。

本当にキーを取得するためにインターネットに接続させることを強制できない場合は、わずかに異なるルートに行くことができます。アプリにリクエストを生成させます(これらの行に沿ったマシン名または何かを含む)。生成されたリクエストIDでユーザーに電話するか、Webサイトにプラグインしてもらいます。次に、そのマシンのキーをメールで送信します。

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

現在、主要な管理は、あなたが戦っている悪の1つの側面にすぎません。

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

さまざまな方法でキーをテストする複数の方法がアプリにさえあるかもしれません。しかし、これは別の質問です。


これを行うのに十分なvindictiveの人々の最終的なボーナスとして:あなたをはぎ取ろうとしている人々のマシンに興味深いことをする主要なGenソフトウェアをさまざまな海賊ボードにシードします。ここで本当に創造的になることができます。

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

トライアルを使用しているユーザーがインターネットに接続することを要求することはできますか?その場合、スタートアップ中にトライアルバージョンにサーバーに連絡するだけで、あらゆる種類のものを確認できます。ユーザーのコンピューターや、データやシステムの時間を改ざんしているものに材料を保存することを心配する必要はありません。

私はこれが古いスレッドであることを知っていますが、私はちょうどそれにつまずいただけで、他の人はこれが便利だと思うかもしれません。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top