该过程对可产生有效前向(可执行的)逻辑的分支、条件和循环构造进行综合,但其结果在反编译时将产生非确定性的语义结果。控制流模糊处理能产生令解密者极难分析的通心粉逻辑。请看由 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. 保留所有权利。