質問

私はソフトウェアの完全に機能する試用版の作成に取り組んでいます。ここでは、期間制限 (30 日間の試用版など) や機能制限の試用版は望まないため、「ユーザーがソフトウェアを実行できる回数」の試用版を使用するのがよいでしょう。

これは C# ベースの .NET アプリケーションであり、これを実装する方法を見つけようと懸命に努力しています。レジストリキー、ファイルベースの追跡などを試しましたが、あまり信頼性がないようです。

このトピックに関して助けていただければ幸いです。

感謝 ロハン

役に立ちましたか?

解決

試用期間を追跡する通常の 2 つの方法は、レジストリ キーを使用する方法と Web サービスを使用する方法です。

  • レジストリ キー: おそらく何らかの難読化を使用して、プログラムの起動回数を Windows レジストリのキーに保持する何らかの方法を実装します。「ソルテッド」暗号化スキームは、ユーザーの値に NIC の MAC アドレスなどのマシン依存の値を加えたスキームを暗号化するもので、おそらく最も効果的です。Dotfuscator などを使用して、コードが逆コンパイルされにくいようにしてください。インストーラーを使用してキーを所定の場所に配置し、プログラムがキーの不在を改ざんの試みとして単純に扱うことができるようにするのが最善です。

    次に、起動時にキーを取得し、復号化して検査します。期待どおりの場合は、値に 1 を加えてレジストリに書き戻し、新しい値が許可された起動回数より大きい場合は、ユーザーをロックアウトします。レジストリ キーが予期しない値になった場合 (つまり、レジストリ キーが改ざんされた場合)、まったく存在しない場合も含めて、ユーザーをロックアウトします。

    このアプローチの利点は、インターネットを必要とせずに非常に強力なセキュリティを提供できることです。欠点は、「マシンに依存する」詳細が正当な理由で変更される可能性があり、その場合、ユーザーはすべてのスタートを使用する前にロックアウトされ、ユーザーをイライラさせる可能性があることです。また、ソルティングと暗号化の実装はユーザーのコンピュータ上に存在します。洗練されたハッカーは、コードを難読化した場合でもプログラムを検査する方法を持っており、実装を発見してそれを模倣してカウンタを「リセット」することができます。それができるのはたった 1 人だけで、他の誰でもできるようにするシンプルな Warez アプリが登場します。

  • ウェブサービス:管理するサーバーに WCF サービスを実装します。しっかりとロックしてください。そのため、LAN の外部から出入りする唯一の方法は、WCF が期待するとおりに WCF ポートを経由することになります。次に、プログラムとそのインストーラーにクライアントを実装します。インストール時に、インストーラはサービス メソッドを呼び出し、特定の MAC アドレスまたはハードウェア ID を持つマシンにソフトウェアがインストールされていることを通知します。データベースにその一意のマシンがリストされていない場合は、追加します。それ以外の場合は何もしません。次に、プログラムの起動時にプログラムから Web サービスを呼び出し、同じ情報を渡すと、Web サービスは起動回数を更新し、起動が許可されているかどうかをクライアントに示す値を返します。

    Web サービスの利点は、Warez を介して大量販売できる方法で回避するのが非常に難しいことです。このようなシステムを攻撃する主な方法は、ライセンス サーバーをハッキングするか、Web サービスに対するプログラムの要求を制御するコンピュータにリダイレクトできる「中間者」を置くことです。欠点は、コンピューターのハードウェア ID を変更すると、依然として早期ロックアウトが発生する可能性があることです。さらに悪いことに、攻撃者がこれまでに見たことのない新しい MAC アドレスまたはハードウェア ID を偽装し、ソフトウェアを再インストールすることで回避策が可能になる可能性があることです。ユーザーは、「新しい」マシン上で新しいセットを開始します。これを防ぐ方法もありますが、難読化とハッキング対策チェックのレベルを追加するたびに、さらに複雑なレイヤーが増えます。

何をする場合でも、80/20 の法則を覚えておいてください。試用プロセスを保護するための最も基本的な手段によって、ユーザーの 80% は正直に保たれます。ユーザーの 20% はそれを回避する方法を見つけるでしょう。その 20% のうち、80% は、追加の対策を講じると妨げられることになります。このプロセスは再帰的です。重要なのは、あなたが講じたあらゆる対策をどこかの誰かが回避してしまうということですが、計算が成り立つなら、シフト暗号化されたレジストリ キーと難読化されたプログラムに直面した場合、ユーザーの 96% は屈服してフル アクセスの料金を支払うでしょう。コード。難読化されたキーをマシン固有のものでソルトするなど、何かを追加することで、99.2% のユーザーにそれを届けることができます。

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