アセンブリ署名のチェックについて教えてください。
現象1:
署名の付いたアセンブリ(exe)をバイナリエディタで内部を
修正しても、実行できてしまうことがある。
・開発マシン(XP-SP2 + Visual Studio 2008 SP1)で、簡単な
フォーム(ボタン1つのみで、ボタンを押すとメッセージボ
ックスを出す)をC#にて、署名付きで作成しました。
ビルドしたものは、GACには登録していません。
・出来上がったファイルは当然実行できます。
sn.exeで署名チェック(-vf)も有効ですと判定されます。
・出来上がったファイルをバイナリエディタで開き、ボタンの
キャプション文字列を探して、変更して保存しました。
・改変したので、sn.exeで署名チェック(-vf)では、無効と判定
されます。
・ところが、エクスプローラ等から改変したファイルが実行出
来てしまいます。
・別マシンにコピーして実行したところ、署名チェックでひっ
かかり、実行出来ませんでした。
(別マシンにも、VS2008SP1はインストールされています)
その他やってみた事。
「sn.exe -Pb n」を実行してやるとビルドしたマシン上でも
署名チェックに引っかかりました。
ビルドしたマシン以外で、「sn.exe -Pb y」を実行しても、
署名チェックに引っかかりました。
Microsoft .NET Framework 2.0 Configurationで、完全信頼ア
センブリのリスト等を見ても、ビルドしたexeは入っていな
いようです。
まず、最初に知りたいことは以下の通りです。
・何故、ビルドしたマシン上では、改変しても実行できてしま
うのでしょうか?
・ビルドしたマシン以外に持っていって、そのマシンで、同様
に署名チェックを回避することが可能なのでしょうか ?
sn.exe -?
でのヘルプの中に
-Pb [y|n]
CLR ポリシーを有効化 (y)、無効化 (n)、またはチェック (パラメータなし) します。
この CLR ポリシーは、信頼されたアプリケーションがアセンブリの厳密な名前の署名確認を
バイパスできるようにします。
とありますが、実際に「アセンブリの厳密な名前の署名確認をバイパス」
する時は、どんな時なのでしょうか ?
よろしくお願いします。
Sorry, I am not good at English.