hi there I hope you doing well

lately, I have searched about ildasm and how to protect my DLLs from reverse engineering,

so I found some great open source projects (ConfuseEx..), it works when I tried the reverse engineering my dll with ILSpy it didn't show my code and because of my curiosity I start searching how that happened,

I found the reverse engineering depends on the metaData of the DLL to show Extract the code with ildasm.exe so this lead me to ask some questions I didn't find answers to them,

did the ConfuseEx corrupt metaData of the assemblies to protect them from reverse Engineering?

is metaData used to define the functions of the assembly to other assemblies to use them? (without defined functions in metaData we cant access the DLL function)

can I protect my function content by corrupting metaData variable definitions and all these defined functions?

1 Answer 1


Type typical use of meta data in .NET assemblies is documented here

Metadata describes every type and member defined in your code in a language-neutral manner. Metadata stores the following information:

  • Description of the assembly.
  • Identity (name, version, culture, public key)
  • The types that are exported.
  • Other assemblies that this assembly depends on
  • Security permissions needed to run.
  • Description of types.
  • Name, visibility, base class, and interfaces implemented.
  • Members (methods, fields, properties, events, nested types).
  • Attributes
  • Additional descriptive elements that modify types and members.

It is common for .NET obfuscators to modify this metadata to increase the complexity of reverse engineering.

ConfuserEx uses many different techniques for .NET obfsucation. The most basic for preventing opening with IlDasm is applying an attribute "SuppressIldasmAttribute" to the assembly. However nearly all modern decompilers will ignore this attribute, it doesn't add meaningful protection on its own.

In relation to metadata ConfuserEx also uses "Invalid Metadata Protection" where invalid data is added to the meta data, which can prevent older decompilers opening the assembly but modern decompilers already work around this protection.

Full list of protections ConfuserEx uses is documented here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.