3

スプーフィングから .net アセンブリを保護する方法を検索したところ、この投稿が非常に役立つことがわかりました。しかし、投稿には非常に明確な矛盾があります。ある時点で、ユーザーが共謀している場合、厳密な名前は役に立たないと述べられています。

しかし、ユーザーがスプーフィングに加担している場合 (チートしようとしている場合)、コード署名はスピード バンプにすぎず、実際の保護は提供されません。確かに、Strong Names は PunkBuster に匹敵する保護を提供しません。

そして数行後、筆者は完全に対照的なことを述べています。

次に、署名されたアセンブリへの参照を追加するときに、誰かが同じアセンブリ名 (完全修飾名ではなく、バージョン、ハッシュ、および公開キーを含まない名前のみ) と同じ型名で別のアセンブリを配置しようとすると、型を読み込もうとすると CLR フィルが失敗し、型が見つからなかったことを示します。型は、名前空間と型名と共に、完全修飾アセンブリ名を使用して解決されます。

そう:

1) これは矛盾ですか、それとも私は何かを失っていますか? 最初の段落の筆者は、厳密な名前の検証が無効になり、再び有効にならない状況について話しているのでしょうか?

さらに、驚くべきことに、次のように述べられています。

参照したアセンブリの厳密な名前を攻撃者が変更できる場合、攻撃者はアセンブリと実行に関与する他のすべてのアセンブリを同じように簡単に変更できます。

2) デプロイされたアセンブリ (DLL など) の厳密な名前を変更するにはどうすればよいですか?

4

1 に答える 1

1

ここに矛盾があるようには見えません - 2 番目の引用は、参照されたアセンブリを同じ名前の型を含む別のアセンブリに置き換えるだけで、別の (またはまったくない) 厳密な名前を持つアセンブリが失敗することを正しく示しています。このアセンブリは一致しないためです。参考に示したもの。基本的に、これは、ユーザーが意図しない変更からシステム自体を保護するシステムの方法です。

ただし、変更意図されている場合 (つまり、最初の引用によると、ユーザーが共謀している場合)、変更されたアセンブリの読み込みを有効にする簡単な方法があります。たとえば、厳密な名前のチェックを無効にする (無効な署名を持つアセンブリを許可します)。 、たとえば、変更された結果として) ロードされるか、アセンブリ参照自体を変更します。

2番目の質問への回答として、標準のアセンブリ署名ツールsnにはアセンブリの厳密な名前を別の名前に置き換えるオプションはありませんが、それは確かに可能であり、簡単な検索でそれを実行できるさまざまなツールが見つかるはずです。(実際、単純な 16 進エディタを使用すれば簡単に実行できます)。

于 2013-01-04T16:40:05.453 に答える