Which base Protection to pick, and why
BitMono has three kinds of protection at its core, and picking the right base for what you’re building matters. They are:
ProtectionPipelineProtectionPackerProtection
Start by asking what your protection actually needs to do:
Just need the Module? Reading or modifying types, methods, IL, anything in the managed metadata, use
Protection. It’s also the simplest one to start with for quick testing.Want to split the work into layers? If your protection naturally breaks into stages, or it spawns child protections, use
PipelineProtection. You still get full access to the Module.Changing the file itself (the PE)? Use
PackerProtection. Packers run last, after the module has already been written to disk, so this is where you rewrite the actual file structure. You can still reach the Module from here, but you’d have to write it out again, so only do this if you really need to touch the PE.