Definition
What is invalid metadata?
Every .NET assembly carries metadata: structured information describing its types, methods, and members. The runtime uses it to execute the application, and decompilers use it to rebuild readable source code.
Invalid metadata is an obfuscation technique that adds metadata which the runtime tolerates but decompilers cannot process. It targets the assumptions decompilers make about how metadata is structured.
The application behaves exactly as intended, because the runtime handles the metadata correctly. Decompilers, which expect well-formed metadata, fail: they crash, skip types, or produce output that cannot be rebuilt.
