控制流模糊处理

该过程对可产生有效前向(可执行的)逻辑的分支、条件和循环构造进行综合,但其结果在反编译时将产生非确定性的语义结果。控制流模糊处理能产生令解密者极难分析的通心粉逻辑。请看由 Dotfuscator Professional Edition 处理过的以下示例:

模糊处理之前的原始源代码
?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. 保留所有权利。