From my research, many obfuscation/optimization packages include a feature called pruning where the software will remove dead code during processing.
The following packages include both obfuscation and code pruning as a feature (to name a few):
- RedGate SmartAssembly (.NET)
- Preemtive Dotfuscator (.NET)
- Inquartos Obfuscator (.NET)
- ProGuard (Java)
I see the common thread that both operations require scanning and analyzing an assembly, but I'm curious if the two features are or even could be fundamentally related. The reason I am asking is that we are considering disabling code pruning in our environment (unrelated issue), but our concern is that it could potentially decrease the effectiveness of the obfuscation process and thus protect our Intellectual Property less.
Does or could code pruning influence obfuscation, and how?
[DoNotPruneAttribute]might be expedient. – Robert Harvey Feb 28 '12 at 18:24