IL codes are removed from methods/properties and replaced with uninitialized delegates. These delegates are just empty place holders, their values are set to null. The extracted codes are then encrypted and safely store away, so there are no IL codes to be reflected by any reflectors. At run-time these codes are retrieved, decrypt, and dynamically convert to dynamic methods and then associated with the delegates (place holder) according to the specified mode: Preload: dynamic methods/delegates are created at the start of application. LoadOnFirstCalled: dynamic method will be created and assigned to the associated delegate when the method is called for the first time. + LoadAndDiscard: dynamic method is created and assigned to the associated delegate every time the method is called and then discarded after the method return to the caller.
These dynamic methods cannot be reflected, disassembled, or decompiled. Process Dumper/Reflector will only see the delegate declarations. It will not be able to see the underlying generated dynamic methods. CIL Debuggers cannot track or trace directly into dynamic methods. For extra protection, Dynamic Code Displacing can also convert obfuscated assemblies. Obfuscation alone does not provide enough protection against modern reflectors. Highly complex reflectors have ability to assign names from their functionalities. By adding Dynamic Code Displacing on top of obfuscation, it will prevent reflectors to analyze your codes (no codes to analyze). Obfuscated names remain obfuscated. 'Dynamic Code Displacing' is a specialize obfuscation tool that only provides code hiding/displacing capability. It can be used in combination with other standard obfuscator if extra obfuscation is still needed. You don't need to used our obfuscator, feel free to used any of your favorite or already owned obfuscator.