アセンブリ ファイル (*.dll、*.exe) をDotfuscatorで難読化したいと考えています。私の質問は、これを行う場合、それらのアセンブリにあるクラスと型を元の名前 (難読化前の名前を意味します) で引き続き使用し、System.Reflection
メソッドを使用してそれらを操作することはできますか?
詳細が必要な場合は、教えてください
アセンブリ ファイル (*.dll、*.exe) をDotfuscatorで難読化したいと考えています。私の質問は、これを行う場合、それらのアセンブリにあるクラスと型を元の名前 (難読化前の名前を意味します) で引き続き使用し、System.Reflection
メソッドを使用してそれらを操作することはできますか?
詳細が必要な場合は、教えてください
難読化は、リフレクションによって問題が発生する可能性があります。パブリック メソッドを難読化しないオプションを使用するよう提案した場合でも、反映されたコードの一部がプライベート メソッドを呼び出す場合があります。問題は、難読化によって一部のコードの名前が変更され、同じままにしておく必要がある場合があることです。
反射で使用されやすい領域を知っているか、見つけることができる場合は、使用できます
[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
これにより、難読化ツールは名前を保持するように指示されます。
リフレクションを使用して難読化を実行するには、より多くのテストが必要です。これは確かですが、まだ可能です...
ここで例を読んでください http://msdn.microsoft.com/en-us/library/ms227298(v=vs.80).aspxパブリックメンバーの難読化を無効にする「ライブラリモード」があります。そうしないと、おそらくメソッドにアクセスできなくなります。型レベルで難読化を制御する属性があります: http://msdn.microsoft.com/en-us/library/ms227281(v=vs.80).aspx
難読化されたアセンブリで使用できますSystem.Reflection
が、難読化のポイントの一部は、アセンブリ内のすべての名前をランダムで無意味なものに変更することであるため、難読化されていないアセンブリと同じ名前と識別子でリフレクションを行うことはできません。 . 難読化されたアセンブリでリフレクションを実行する場合は、名前が付けられている型とメンバーに依存しない方法で実行する必要があります。