2

管理対象(.NET)DLLに署名するか、その他の方法で変更から保護することは可能ですか?DLLへの変更を検出し、それらが.NETランタイムによってロードされないようにする可能な解決策を探しています。誰かがDLLをReflectorまたはILSpyにロードできるかどうかは気にしません-変更されたDLLが実行できない限り、私はそれで問題ありません。

私はこのトピックについていくつか検索しましたが、ほとんどの記事/ディスカッションでは、私が探しているものではない難読化を推奨しています。DLLにデジタル署名することでこれを達成できると思いましたが、同僚とのチャットでそれを疑うようになり、私はこの分野の表面的な知識しか持っていません。

何かアドバイスをいただければ幸いです。

4

2 に答える 2

4

DLLに署名しても、他の人がDLLを逆コンパイルして変更するのを防ぐことはできません。それ防ぐのは、彼らがそれを行い、結果を元のとして渡すことです。つまり、変更されたDLLは、呼び出し元がそれを信頼することを決定した場合に実行されますが、公開鍵トークンを持っていることを期待するコードはそれを拒否します。

于 2012-10-09T22:21:16.640 に答える
1

ライブラリに署名すると、変更が防止されます。その欠点は、このライブラリに署名したら、それが消費するすべての子ライブラリにも署名する必要があることです。NuGetライブラリの何かを使用している場合、これはお尻の痛みになる可能性があります。

理論的には、dllが署名されると、変更されていないことを確認するために署名が作成されます。誰かがそれをハッキングした場合、フレームワークはそれをロードしません。

于 2012-10-09T22:20:32.887 に答える