カスタムコントロール、拡張機能、その他のものを備えた.NET DLL(C#/ VB)があります。
自分だけが利用できるようにしたいと思います。DLLへの不正アクセスを制限する方法はありますか?
カスタムコントロール、拡張機能、その他のものを備えた.NET DLL(C#/ VB)があります。
自分だけが利用できるようにしたいと思います。DLLへの不正アクセスを制限する方法はありますか?
そもそも、アセンブリを再配布しないでください。アセンブリが公開されるとすぐに、誰でも使用できるようになります。難読化することでこれを難しくすることができますが、「エントリポイント」は引き続き存在し、使用可能です。
理論的には、 CASで何かを行うことができますが、これが可能かどうかは特にわかりません。
最善のオプションは、Antonが指摘したように、DLLをパック/暗号化/難読化することです。そして、誰もそれを開梱するすべての面倒を経験しないように祈ってください。
これの通常の用語は単に「パッキング」です。
これは、ゲーム開発者がf.exSonyのSecuROMで行うことです。
ただし、すべてのパッキングプログラムには同じ欠点があります。
パッカーを使用する企業は通常、考えられるすべてのコンピューターで実行できる必要があるバイナリを出荷します。本当に意味があるのであれば、一意のキーが付属しているすべてのdllを暗号化してから、復号化フェーズでチャレンジ/レスポンスの魔法をかけるためにインターネットアクセスで実行する必要があると思います。とにかくやり過ぎ。
あなたはあなた自身のパッカーを作ることもできます、しかし私がそれを言うとき私を信じてください:あなたはそこに行きたくないです;)
要するに、あなたが望むことは、大きなプレーヤーにとってさえ達成するのは簡単ではありません。SecuROMゲームがpiratebayに表示されるまでどのくらいかかりますか?したがって、あなたができる唯一のことは「水準を上げる」ことであり、優れたリバースエンジニアに気づかれることを望んでいます。
最後に、自分が何に夢中になっているのかを知ること:それはあなたにとって価値がありますか?DLLを解凍して出荷したとしましょう-そのままです。人々はそれを使用するためにそれをリバースエンジニアリングする必要があります。とにかく、文書化されていないサードパーティのライブラリを使用しているのは誰ですか?私は狂気の瞬間に一度か二度だけそれをしました。
アセンブリに強い名前を付ける場合は、PublisherIdentityPermissionAttributeの使用を検討してください。これをDLLに追加すると、適切な発行元キーで署名されたアセンブリのみがそのメソッドまたはクラスを呼び出すことができます。
これは無料で、.NETFrameworkに組み込まれています。追加機能(DLLを他の開発者にライセンス供与する機能など)が必要な場合は、ツールDeployLXLicensingのようなプロフェッショナルレベルのコピー防止ツールを検討してください。
This is not completely possible. If you want your code to run, it has to be executable. You can put in checks, packing, encryption keys, watchdogs, monitors, wardens, and various licensing schemes but at the end of the day if your code works it has to be unlocked somehow so that it can be used.
This is why DRM doesn't work. You want to protect X, but you want someone else to view it. The problem is the person you don't want viewing/using X and the person you do want using X are, at some level, the same person.
I got so fed up with dealing with 3rd party licensing code (breaking / unregistering / thinking I wasn't a legit user when I was supposed to be) that I became an FSF member. It's not worth my time to work around someone else's restrictions, and it's not worth my time to deal with them. Their code wasn't all that special.
おそらく、ライセンス/コピー防止ツールを使用してdllを変更できます。そして、発信者の内部で、必要なライセンス番号を提供します。
呼び出し元があなたであることを確認するために、DLLにチェックを追加する必要があります。しかし、それは他の課題を引き起こします:
DLLに対して自分が自分であることをどのように証明しますか。(現在のユーザー名のようなもっと単純なものをチェックすることもできますが、それは完璧ではないかもしれません)。
exeファイルが証明書によって署名されていることを要求できます。
ライセンスインフラストラクチャを確認する必要があります。実装方法はわかりませんが、.licxファイルを作成して使用すると、ビルドプロセスでlc.exeツールを使用してライセンスを埋め込むことができると思います。