Options

Obfuscating enum names when enum is .ToString()'d

CodeGuruCodeGuru Posts: 13
edited November 23, 2010 12:27PM in SmartAssembly 5
Say for instance I have
Class Drawing
{
  enum Color
  {
    red,
    blue,
  }
}

and I reference it by:
Color myColor = Color.red;
myColor.ToString();

Smart Assembly will not only fail to obfuscate the enum name and its members, but it also does not obfuscate the entire class name. :(

Other obfuscators I have worked with did this by default, and we'd have to manually add exclusions to enums (or their members) if we did not want their name to be obfuscated.

I much prefer this approach as it errors on the secure side, rather than the unsecure side.

If anything, at least give us an option to force obfuscation of objects thats are .ToString()'d.

I wouldn't have noticed this but when I loaded my assembly up in ida (which loads fine btw), I saw a few of my key enum's and class names plain as day. It makes it a lot easier to reverse the code when you have that kind of starting point.

You may wonder why you would want to obfuscate an enum by default when its .ToString()'d, and the reason is, if your enum is a set of flags, you may .ToString("X") to view the hex value of its current state. The current workaround is to ((int)myColor).ToString("X") and SmartAssembly will obfuscate the names and members as expected.

Thanks for your consideration!

Comments

Sign In or Register to comment.