What are the challenges you face when working across database platforms? Take the survey
Options

Query regarding {SmartAssembly} new version 6.5

maheep83maheep83 Posts: 3
edited November 28, 2011 7:52AM in SmartAssembly
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?

Comments

  • Options
    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.
  • Options
    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"?
  • Options
    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.
Sign In or Register to comment.