After obfuscation, why does the log file report that some names are left unchanged?
Due to inheritance constraints, some identifiers, mostly virtual methods, cannot be modified. For example, the public String ToString() method, an override of the System.Object class, cannot be renamed. • Are there situations where obfuscated code can behave differently than the original? Yes. The reflection APIs, namely, certain methods of the System.Type and the System.Reflection namespace, refer to classes, methods, fields, properties and events using a string name. If your assemblies use these reflection methods to refer to identifiers , your code may behave incorrectly after obfuscation because the string name may have been changed. • How can the above reflection problems be solved? Our obfuscator adds a warning to the log file if the above reflection methods are used in the obfuscated code. If the reflection methods act only on classes, methods, fields, properties and events outside of the assembly, there will be no problem. If, however, the reflection methods act on identifiers