2009-08-27 4 views
1

私は、他の人があなたの公開されたdllを使用できないようにする方法を考えています。たとえば、いくつかのアセンブリに分かれた軽量なWinUI写真処理ツールを作成するとします。それらの1つは、基本的にすべてのコアフィルタリング作業を行う貴重なfilters.dllアセンブリです。アプリケーションを公開したら、他人がこのfilters.dllを取得して他のプロジェクトでそれを使用するのを防ぐ方法を教えてください。強力な名前付きDLL機能を使用して制限する

私はすでに良い例hereを持っていますが、私のために動作していないようStrongNameIdentityPermissionAttributeを見てみました、コードはただのセキュリティ例外をスローせずに動作します。..

任意のアイデア?

答えて

0

フィルタアセンブリのメソッドとクラスを内部で宣言し、それを "フレンド"としてアクセスできるアセンブリを明示的に指定する方法があります。

あなたが好き(Ususallyにassemblyinfo中)組立宣言でこれを行う:

[assembly:InternalsVisibleTo("cs_friend_assemblies_2")] 

は、詳細はFriend Assembliesを参照してください。

また、アセンブリを難読化したり、リフレクターを使用してコードを掘り下げることができます。

+0

依存するアセンブリをSNINGする場合、internalsVisibleToは[SNトークンを含む]完全なアセンブリ名である必要があることに注意してください。しかし、ここで私の主な関心事は、InternalsVisibleToは、難読化者が一般的には内部よりも攻撃的であることを除いて、多くのことを助けるものではないということです。 –

+1

内部はアセンブリを直接参照する人を止めるでしょうし、内部も混乱させることができますが、それはパブリックではそうではありません。あなたが難読化だけに頼っていれば、あなたのパブリック・インターフェースはまだ再利用されています。最終的にコードが顧客に配備されていれば、あなたは敗北戦いに挑戦しています。 –

+0

@ジョン:慎重、それは私が言っていたことではない - 内部doesntは「難読化できる」。ほとんどの難読化者には、「これは私の完全な集合体です」と言われているスイッチがあり、これもまたパブリックを難読化します。リフレクションはすべてをプライベートに呼び出すことができるため、通常、ObfuscationAttributeまたはObfuscatorの設定のいずれかを使用して、難読化ツールが意味をなさないと思っても、難読化されてはならないことを示す方法があります。 「直接参照する」の試みで阻止されているpeopelの価値は、IP保護メカニズムとしては役に立たないよりも悪いです。 –

2

強い名前はリバースエンジニアリングの防止または禁止とは関係ありません。彼らはハッキングされたバージョンでアセンブリを置き換える人々を阻止するためにのみ役立ちます - そして、人々が強力な名前検証を無効にしない限り。 ILDASMingやReflectoring、re-ILASMingなどのコードを服用するのを止める方法はありません。

InternalsVisibleToと友人もコンパイラレベルで優遇されていますので、探しているものにはあまり使われません(一部の難読化ツールでは、内部的にはパブリックよりも難読化が難しくなります)。克服する)。私の主な関心事は、リバースエンジニアリングを止める魔法コード保護の魔法のダストが何か「内部」に与えられていないことを指摘することです。

Most of this stuff re why these sort of approaches arent a solution for code protection is summarised very well in this article

あなたが記述の仕事のためのツールのような音の難読化を超え、市場のコード保護製品もあります。

+1

情報をお寄せいただきありがとうございます。難読化は、私のコードを逆アセンブルまたはリバースエンジニアリングから保護することはできますが、参照および再利用を手助けすることはできませんので、難読化は必須ではありますが、十分ではありません。 –

0

.NETコードの保護について心配する必要はありません。それを誰かのelsesコンピュータに配備し、その人があなたのコードを使用したり読んだりしたいのであれば、彼らはそうなります。

あなたのコードが十分な価値がある場合は、自分が制御しているコンピュータ(Webサーバーなど)にコードを保存し、不正なアクセスから保護する必要があります。

難読化は、決定された人を遅らせるだけです。強力な命名と署名は、コードを保護するために使用されるのではなく、ユーザーがコードの由来を確認できるようにします(つまり改ざんされていないことを確認します)。

+1

誰かがあなたのコンピュータに侵入したいと思えば、ファイアウォールをオンにしても構わないと言っているのではないですか.. –

+0

@Roiy、いいえルーターのファイアウォールが実際に動作し、だから私はそれをオフにするばかだと思います。 .NETコードの難読化では、コードを再利用/ハッキングしようとする人の速度が遅くなりますが、難読化する人にとっては価値のないコードだけが保護されます。 – Ash

+0

私は、決まったハッカーがあなたのコンピュータを引き継ぐ場合、100 $ルータのファイアウォールは彼を止めさせないことを保証します。 1500 $ Checkpointのセキュリティファイアウォールも...と驚くほど十分に、バッファリングターミナルサーバでさえない!それは戦いの地獄を与える! –

関連する問題