Code Displacing Obfuscator 1.1
Dynamic Code Displacing is the ultimate tool in anti-reflection. It can protect your codes from any reflectors, disassemblers, decompilers, and even IL debuggers.
Unlike other similar products we do not decrypt and create hard coded methods at run-time, since this can still be exposed to Process Dumper/Reflector. 'Dynamic Code Displacing' hides IL codes through dynamic methods, ie:
- 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 or disassemble.
- Process Dumper/Reflector will only see the delegate declarations. It will not be able to see the underlying dynamic methods.
- CIL Debuggers cannot track or trace directly into dynamic methods.
- For extra protection, Dynamic Code Displacing can also convert obfuscated assemblies. Highly complex reflectors have ability to assign names from their functionalities. By adding Dynamic Code Displacing on top of obfuscation, it will prevent reflectors from analyzing your codes.
- 'Dynamic Code Displacing' is a specialize tool that only provides code hiding/displacing capability. It can be used in combination with other standard obfuscators.