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:
  1. EasyFuscator.NET
  2. SkaterLight
  3. 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.