Obfuscation Engine Execution Order
BitMono runs through a fixed order every time it obfuscates, worth knowing if you’re writing your own protection. If you’ve used ConfuserEx, a lot of this will feel familiar.
Output Loaded Module Info
Output Information about BitMono (example, is it intended for .NET Core or Mono or .NET Framework, etc.) and running OS, etc.
Output Compatibility Issues in case of module is built for .NET Framework, but BitMono is running on .NET Core, or vice versa.
Sort Protections
Information about Protections
Configuration for Native Code
Elapsed time counter
Resolve References
Expand Macros
Run Protection, PipelineProtection and child pipeline protections
public class StandardProtection : Protection
public class Pipeline : PipelineProtection
Optimize Macros
[ObfuscationAttribute] cleanup
Create PE Image
Write Module
Run Packers
public class Packer : PackerProtection
Output Elapsed Time since obfuscation
Output Tips (short, helpful hints printed after a run; can be turned off with the
Tipssetting inobfuscation.json)