Als Obfuscation (zum Teil auch deutsch als Obfuskation) wird die Verschleierung von Programm-Code bezeichnet. Diese Programme bieten keinen Schutz im Sinne kryptographischer Sicherheit. Vielmehr erschweren diese die Lesbarkeit und Rückübersetzbarkeit von Code.
Grenzen#
Obfuscators 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
- SkaterLight
- Phoenix Protector
Die freien Obfuscators haben allerdings einen recht eingeschränkten Funktionsumfang. Der Dotfuscator von Microsoft ist mit verschiedenem Funktionsumfang erhältlich und für den professionellen Einsatz zu überlegen.