DLL Obfuscation

timb24timb24 Posts: 5
edited December 8, 2015 11:42AM in SmartAssembly
I am new to using SmartAssembly. I have SA Std v6.9.0.114 running Win 7 64-bit. Source code is C#. Visual Studio 2010.
When I SA build any of my DLLs, and then use ILSpy to decompile/browse, the obfuscation seems to be falling short of what I expected. In ILSpy I can still see the namespace all of the classes under the namespace - names are unobfuscated. Then looking inside each of the classes, most of the method names are unchanged; enums are unchanged; a lot more of the logic control flow is still there (more than I expected; still enough to get the idea of what's going on). Initially I turned on Obfuscation : Types/Methods Name Mangling to Unicode and advanced; Fields Name Mangling to advanced renaming. Also Control Flow Obfuscation : Strongest. And Strings Encoding : all checked. After seeing the initial results, I went to the other extreme and turned on Dependency Merging; cranked up Obfuscation and Control Flow Obfuscation to the highest levels... But still saw more decompiled source than I thought I would. I did try obfuscating an .exe, and got much better results.

Being a new user, I assume that I'm missing something, doing something wrong, etc... I am looking for help, advice, other things to try to get better results.



  • Speaking from my own experience, usually it's best if possible to merge the dll with the exe (in your SA project) that will be calling it. That's the ideal fix because then everything in the dll becomes internal. Otherwise everything in the dll that is public cannot be renamed or pruned because, by definition, being public they have to be accessible to any exe that loads the dll.

    If you don't want to merge it then try to make as much as you can into internal classes etc and only leave the ones you really need to be accessed from outside the dll as public.

    Hope that helps. I'm just another ordinary user of SA btw :)
Sign In or Register to comment.