StrongName はリフレクションを妨げないことがわかりました-それは難読化ツールの仕事です。しかし、かなりユニークな名前を作成すること以外に、StrongNames を使用することの暗号化の目的や保護は何ですか?
推定
MyAssembly
を介してinternal
公開されるクラスとメソッドがあります[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=RealRSAPublicKey")]
MyAssemblyTest
、テスト アセンブリ。
これらのアセンブリは両方とも、おそらく同じ RSA キー ペアを使用して、StrongNames を持っています。
誰かを妨げるもの
- 署名を剥がす
MyAssembly
- 偽/ダミーの RSA キー ペアの作成
- アセンブリ属性を次のように変更します
[assembly: InternalsVisibleTo("MyAssemblyTest, PublicKey=FakeRSAPublicKey")]
MyAssembly
独自の偽/ダミー RSA キー ペアで再署名する- 独自のアセンブリ内の内部を消費すると、
MaliciousAssembly
私はストロングネーミングの本当の義務が何であるかはっきりしていないと思います...いくつかの洞察をいただければ幸いです。