Query regarding {SmartAssembly} new version 6.5

.NET obfuscator and automated error reporting

Moderators: Luke Jefferson, melvyn.harbour, dom.smith

Query regarding {SmartAssembly} new version 6.5

Postby maheep83 » Mon Nov 28, 2011 7:44 am

We used to use {SmartAssembly} for obfuscating our .Net assemblies till first quarter of calendar year 2010. And to verify the obfuscation we used to use .Net Reflector to decompile, if .Net Reflector fails means {SmartAssembly} succeeds.

But after some new release of .Net Reflector it used to successfully decompile the obfuscated assemblies, hence for us {SmartAssembly} was a failure and we stopped using {SmartAssembly}.

I just noticed that there is a newer version of Smart assembly. I would like to know if this version obfuscate in a way that it cannot be decompiled using .net reflector?
maheep83
 
Posts: 2
Joined: Mon Nov 28, 2011 7:30 am

Postby Simon C » Mon Nov 28, 2011 12:21 pm

There's a difference between successfully decompiling an assembly, and being able to understand it once it is decompiled. SmartAssembly obfuscates the IL within the method, but it is still IL that can be decompiled, as it has to do the same thing as the original assembly.

If you look closely at the disassembled code, the type & method names are missing and it can no longer generate correct C# or VB. Furthermore, features like strings encoding and member refs proxy, combined with control flow obfuscation and name obfuscation, further hide what the code is actually doing.
Simon C
 
Posts: 140
Joined: Tue Feb 26, 2008 4:56 pm
Location: Red Gate Software

Postby maheep83 » Mon Nov 28, 2011 12:25 pm

Agree on the wrong use of term "Decompile". What I meant was; will .net reflector, which is also a rad-gate product now, be able to reproduce the original code from a "smart assembly"?
maheep83
 
Posts: 2
Joined: Mon Nov 28, 2011 7:30 am

Postby Simon C » Mon Nov 28, 2011 1:52 pm

Again, similar to IL disassembly, some sort of (not necessarily valid) C# can always be produced from a method. SmartAssembly isn't aimed at making it impossible to disassemble methods completely, it's protections are aimed at hiding the meaning of the code, which is ultimately what you use an obfuscator for.

Control flow obfuscation, name obfuscation, strings encoding and member refs proxy all hide the original meaning of the code; even if some C# can be constructed from the disassembled IL, working out what that code actually does it very hard.
Simon C
 
Posts: 140
Joined: Tue Feb 26, 2008 4:56 pm
Location: Red Gate Software


Return to SmartAssembly 6

Who is online

Users browsing this forum: onnb and 0 guests