At a minimum, an obfuscator should have:
- String encryption
- Symbol renaming
- Control flow obfuscation
Good to have features are:
- Resource protection
- Assembly merging/embedding
- External method call hiding
- Ability to auto-sign obfuscated assemblies
- Support for satellite assemblies
- Dead-code elimination
- Meta-data reduction
- Anti-decompiler (Reflector)
- Anti-tamper
- Anti-Debugging
Take a look at our Crypto Obfuscator product which supports all of these.