是否有代码混淆的指标?

逆向工程 混淆
2021-06-27 03:15:28

源代码混淆是否可以量化?

是否有任何衡量源文件混淆程度的指标?

2个回答

对于源代码,一种可能性是McCabe Cyclomatic Complexity一些源代码分析工具 ( McCabe IQ ) 将使用它作为您应该调查和重写的“蹩脚”代码的度量。圈复杂度通常表示程序逻辑过于复杂或复杂,以及难以理解的代码。不过,它可能无法反映逆向工程的实际难度,也没有考虑其他类型的混淆,例如常量变量加密和代码加密等。

我认为客观量化所有类型的混淆是非常困难的,因为您正试图衡量它们抵御对手攻击的能力。如果您可以将您的程序保护问题减少到密码学上的复杂问题(正如Gauss的作者能够做到的那样),那么我认为这是一个有用的混淆指标,因为它代表了攻击者必须执行的工作才能取消您的混淆。否则,工作水平在一个逆向工程师和另一个逆向工程师之间的混淆之间变化很大,我不确定它可以被有意义地衡量......

有一个基于抽象解释的代码混淆的纯理论度量,这是令人愉快的。它依赖于抽象解释在精确度方面具有可比性这一事实。特别是,在抽象解释的上闭包算子公式中——通过组合抽象和具体化函数来创建上闭包算子,形成从具体领域到自身的映射——我们可以比较两种抽象解释的效力:对给定闭包映射的固定点集进行部分排序。具有严格更多固定点的运算符比将所有内容都映射到顶部的运算符更精确。

为了比较混淆,我们考虑对程序原始版本和混淆版本的抽象解释集。现在我们可以使用上述相同的构造来比较混淆转换的效力。给定一些由抽象解释编码的可观察属性a,我们说混淆器对 a 有效,当保留关于该属性的抽象解释时,原始版本与转换版本的固定点不同。

在此处阅读更多信息:http : //profs.sci.univr.it/~dallapre/ICALP05.pdf