私のコードでは、ライセンス キーが必要なサード パーティの Dll を使用しています。
呼び出されたときにライセンス キーをメソッドに渡す必要があります。そうしないと、メソッドが機能しません。
ただし、コードを C# で記述しているため、コードを逆コンパイルすることでこのライセンス キーを取得できます。
このライセンス文字列が逆コンパイルされないようにする方法はありますか?
私のコードでは、ライセンス キーが必要なサード パーティの Dll を使用しています。
呼び出されたときにライセンス キーをメソッドに渡す必要があります。そうしないと、メソッドが機能しません。
ただし、コードを C# で記述しているため、コードを逆コンパイルすることでこのライセンス キーを取得できます。
このライセンス文字列が逆コンパイルされないようにする方法はありますか?
あまり心配しないでください。アプリケーションがキーにアクセスできる場合、バイナリにアクセスでき、十分な時間があれば、誰でもそのキーを取得できます。
危険にさらされているライセンススキームではなく、サードパーティのライセンススキームであるため、適用される法律に依存する必要があることに注意してください。誰かがあなたのアプリケーションを逆コンパイルしてキーにアクセスした場合、彼らは法律に違反しており、それを防ぐことはできません。
あなたのアプリには、そのサード パーティのライブラリを使用する法的権利があります。それを破ると、保護ではなく法律で処理する必要があり、サード パーティのライセンス スキームの条件に違反します。データを保護するためにある程度の期間を費やすことはできますが、データを完全に保護する方法はないため、最終的にはあなたの責任ではありません (アプリはそのキーを知る必要があるため、ある時点で、そのキーはコードにアクセスできる人なら誰でも選択できるプレーンテキスト)。アプリが完全にアセンブリ言語で記述されている場合でも、これは当てはまります。
ライセンス キーを app.config に保存してから暗号化できます: http://www.codeproject.com/Articles/18209/Encrypting-the-app-config-File-for-Windows-Forms-A
それはおそらく、最小の費用で最大の利益を得る.
(メッセージがコメントには長すぎるため、回答として追加)
この文字列へのアクセスを完全にブロックする方法はありません。アクセスを難しくすることしかできません。たとえ暗号化したとしても、プログラムはそれを解読する能力を必要とします。つまり、熟練した人なら誰でも解読メカニズムにアクセスして再利用し、暗号化されていない形式のキーを取得できます。または、復号化されたキーをメモリから単純に読み取ることもできます。
独自のソフトウェアで取得したライセンスを逆コンパイルおよび/または使用することに対して、ライセンス契約に強力な言葉遣いを追加します。ユーザーがこれらの条件に電子的に同意することを要求します。独自のサーバーでこれらの条件を受け入れる各ユーザーのタイムスタンプと IP アドレスを記録します。
これに加えて基本的な難読化を追加したい場合は、それも問題ありません。しかし要点は、このコンポーネントの認可を受けた再配布者として、他の人があなたのキーを使用するのを防ぐために協力しているということです。