Verbergen der Ablaufsteuerung
Bei diesem Vorgang werden Verzweigungs-, bedingte und iterative Konstrukte erstellt, die gültige (ausführbare) Ablauflogik erzeugen, um beim Versuch der Dekompilierung nicht deterministische semantische Ergebnisse hervorzubringen. Das Verbergen der Ablaufsteuerung erzeugt Spaghetticode, der für einen Cracker nur sehr schwer zu analysieren ist. Vergleichen Sie das folgende Beispiel, das mit Dotfuscator Professional Edition verarbeitet wurde:
Ursprünglicher Quellcode vor Verbergung © 2001, Microsoft Corporation (Auszug aus C#-Beispielcode WordCount.cs) |
---|
public int CompareTo(Object o) { int n = occurrences – ((WordOccurrence)o).occurrences; if (n == 0) { n = String.Compare(word, ((WordOccurrence)o).word); } return(n); } |
Zurückentwickelter Quellcode nach Verbergen der Ablaufsteuerung mit Dotfuscator Professional Edition |
---|
public virtual int _a(Object A_0) { int local0; int local1; local0 = this.a – (c) A_0.a; if (local0 != 0) goto i0; goto i1; while (true) { return local1; i0: local1 = local0; } i1: local0 = System.String.Compare(this.b, (c) A_0.b); goto i0; } |
© 2002-2007 PreEmptive Solutions. Alle Rechte vorbehalten.