Als Obfuscation (zum Teil auch deutsch als Obfuskation) wird die Verschleierung von Programm-Code bezeichnet. Diese Programme bieten keinen Schutz im Sinne [kryptographischer|http://de.wikipedia.org/wiki/Kryptographie] Sicherheit. Vielmehr erschweren diese die Lesbarkeit und [Rückübersetzbarkeit|http://de.wikipedia.org/wiki/Reverse_Engineering] von Code. !Grenzen [Obfuscators|http://de.wikipedia.org/wiki/Obfuscator] benennen Symbole (Methoden und Public Members), daher entsteht nur ein konsistentes Ergebnis wenn alle Symbole bekannt sind. Zwei Hauptgründe für Inkonsistenzen sind: * __Cross-Assembly-References:__ Werden Public Members eines Assembly obfuscated, werden die Referenzen von anderen Assemblies gebrochen, also beispielsweise von EXE-Dateien. * __Reflection:__ Der Methoden- oder Field-Zugriff über Reflection kann von Obfuscators nicht erkannt werden und führt zu Inkonsistenzen im Code. Daher ist nach der Obfuscation eine Qualitätssicherung durchzuführen. !Obfuscators für .NET Folgende freie Obfuscators können in absteigender Reihenfolge (abhängig vom konkreten Anwendungsfall) empfohlen werden: # [EasyFuscator.NET|http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx] # [SkaterLight|http://rustemsoft.com/Skater.htm] # [Phoenix Protector|http://www.ntcore.com/phoenix.php] Die freien Obfuscators haben allerdings einen recht eingeschränkten Funktionsumfang. Der [Dotfuscator|http://msdn.microsoft.com/de-de/library/ms227240.aspx] von Microsoft ist mit verschiedenem Funktionsumfang erhältlich und für den professionellen Einsatz zu überlegen.