Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Obfuscator's "Prevent Microsoft IL Disassembler from opening my assembly" option

I've been trying to apply code protection using the SmartAssembly obfuscator to a WPF Prism application, but it the application refuses to work properly when being obfuscated.

The only option that works for it is: Prevent Microsoft IL Disassembler from opening my assembly.

The Red-Gates help describes it as: SmartAssembly can add an attribute to your assembly that prevents Microsoft's Common Intermediate Language (IL) Disassembler (ildasm.exe) from opening your assembly.

I wonder how serious is this protection, is it worth to be applied if the code isn't really obfuscated. Or, in other words, what is it this Microsoft's Common Intermediate Language (IL) Disassembler (ildasm.exe)? Is it the main part of every known .NET reverse engineering tool or is it just one of the many such tools?

like image 513
rem Avatar asked Jul 19 '11 17:07

rem


1 Answers

ildasm.exe is the IL disassembler that comes with the .Net Framework. It's the one tool that everyone has if they have .Net. It's not a component, so other disassemblers are not based on it or anything.

The attribute in question is the SuppressIldasmAttribute. I do not know if other disassemblers such as Reflector or ILSpy respect this attribute, but I doubt it. A cursory Google search suggests that is not the case, and that the SuppressIldasmAttribute only affects ildasm.exe itself.

As such, it doesn't really protect your assembly and isn't much use as an obfuscation tool. But if you are obfuscating anyway, I don't see any reason why you wouldn't apply this attribute, as it at least blocks the easiest (most commonly available) method of disassembly and I don't think it does any harm.

like image 85
Sven Avatar answered Oct 20 '22 00:10

Sven