Most .NET applications can be protected successfully using Dotfuscator's default configuration. However, certain application architectures, runtime environments, and interoperability scenarios require additional consideration to ensure that protected applications continue to function correctly.
These scenarios typically involve interactions with native code, platform-specific behaviors, or runtime features that influence how Dotfuscator applies protection.
This article introduces several compatibility scenarios that require little or no additional configuration but are important to understand before protecting your application. More specialized scenarios, such as reflection, friend assemblies, and resource handling, are covered in separate articles.
P/Invoke Methods
Dotfuscator does not automatically rename P/Invoke methods (for example, native platform methods) if it detects that the name is used to find the corresponding native function. P/Invoke methods that are mapped to native functions by an alias or by ordinal can be renamed.
Managed C++ and IJW (It Just Works) Thunking
Dotfuscator can process assemblies containing managed and unmanaged (native) code, such as those created by the Managed C++ compiler. Dotfuscator performs renaming and metadata removal on mixed code modules; however, string encryption, control flow obfuscation, and removal are automatically disabled. These features are still enabled on other "pure managed" input modules included in the run.
Obfuscating 64-Bit Assemblies
Dotfuscator can transparently obfuscate managed assemblies written explicitly for specific CPU architectures, including 64-bit architectures.Dotfuscator itself is a managed application and can run on 32-bit and 64-bit versions of Windows.
Related Articles
The following articles describe additional advanced protection scenarios:
| Article | Description |
|---|---|
| Reflection and Dynamic Loading | Learn how reflection and runtime type loading affect Renaming and when manual exclusions are required. |
| Friend Assemblies | Understand how Dotfuscator processes assemblies that use the InternalsVisibleToAttribute. |
| Managed Resources and Satellite Assemblies | Learn how Dotfuscator handles embedded resources, localized resources, and satellite assemblies. |
| Protect Multi-Module Assemblies | Learn how to protect assemblies composed of multiple modules. |