制御フローの難読化
この処理は、有効なフォワード (実行可能) ロジックを作り出している分岐処理、条件処理、反復処理などの構成要素を合成し、逆コンパイルが試みられたときに、その意味を判断できないコードを生成します。制御フローの難読化によって、クラッカーによる解析が非常に困難な、スパゲッティのように複雑にからみ合うロジックが生成されます。次の例は、Dotfuscator Professional Edition の処理を示しています。
難読化前のソース コード (C) 2001, Microsoft Corporation (WordCount.cs C# コード例の一部) |
---|
public int CompareTo(Object o) { int n = occurrences ((WordOccurrence)o).occurrences; if (n == 0) { n = String.Compare(word, ((WordOccurrence)o).word); } return(n); } |
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. All rights reserved.