3

アプリケーションの他のコンポーネントによって参照される、厳密な名前の .NET アセンブリにライセンス アルゴリズムを実装しようとしています。もちろん、誰かがライセンス チェックを含むアセンブリを交換し、それによってアプリケーション機能のロックを解除するリスクを最小限に抑えたいと考えています。

私の知る限り、アセンブリを別のバージョンにリダイレクトできます (パブリッシャー ポリシーまたはアプリケーション構成ファイルで)。しかし、別の名前を持つアセンブリや別のキーで署名されたアセンブリにリダイレクトする方法が見つかりませんでした。

別のキーで署名されたアセンブリが使用されるように、アセンブリ バインドに影響を与える他の方法はありますか? 存在する場合、このアルゴリズムをバイパスするために必要な労力はどれくらいですか?

4

1 に答える 1

3

いいえ、別のアセンブリ バージョンにリダイレクトすることはできません。アセンブリ リダイレクトでは、別の名前または厳密な名前は使用できません。

これを回避することは可能です。技術的ですが簡単な方法は、厳密な名前のアセンブリをすべて逆アセンブルし、厳密な名前を付けずに再コンパイルすることです。これは、ildasm と ilasm を使用するか、PE エディターを使用すると簡単です。ここここを参照してください。また、逆コンパイルしている間に、ライセンス チェックも削除してみませんか? 逆コンパイルを防ぐことができない限り、難読化ツールは役に立ちません。既に述べたように、公開キーを使用して新しいアセンブリへの署名を遅らせ、アセンブリの検証をオフにする方法もあります。または、GAC のアセンブリはインストール中にのみ検証されるため、GAC の既存のアセンブリを置き換えることができます。最後の 2 つは管理者権限が必要です。

于 2014-03-05T19:28:26.310 に答える