アプリケーションで dotfuscate を使用しようとすると、実行時にアプリケーション エラーが発生します。
3 に答える
Dotfuscator (およびすべての難読化ツール) は通常、アプリケーションで安全に実行できますが、問題が発生することがあります。問題の具体的な詳細がなければ、診断は困難です。
ただし、難読化ツールによくある問題の 1 つは、難読化ツールとリフレクションを混在させる場合です。文字列ではなく型名を変更しているため、特定の文字列名を持つオブジェクトをリフレクションし、リフレクション名前空間を使用してオブジェクトを構築しようとすると、問題が発生する可能性があります。
難読化に関して私が遭遇した問題のほとんどは、名前を変更できない型に関係しています。これは、何かがそれら (コードまたはランタイム) に反映される必要があるためです。
たとえば、Web サービス プロキシとして使用されているクラスがある場合、クラス名を安全に難読化することはできません。
public class MyWebServiceProxy : SoapHttpClientProtocol
{
}
また、一部の難読化ツールは、ジェネリック メソッドとクラスを処理できません。
秘訣は、これらのタイプを見つけて、難読化ツールがそれらの名前を変更しないようにする必要があるということです。これは難読化属性で行われます。
[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
難読化ツールで問題になる可能性があるもう 1 つのことは、フィールド名が変更されるため、BinaryFormatter を使用したシリアル化です。このため、難読化されたコードのシリアル化にprotobuf-netを使用するユーザーがいます。