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

是否有任何度量标准可以度量源文件中的混淆程度?

#1 楼

对于源代码,一种可能性是McCabe Cyclomatic Complexity。某些源代码分析工具(McCabe IQ)会将其用作度量“ cr脚”代码的一种方式,您应该对其进行调查和重新编写。圈复杂性通常表示程序逻辑过于复杂或过于复杂,并且代码难以理解。但是,这可能并不反映反向工程的实际困难,也没有考虑到其他类型的混淆,例如常量变量加密和代码加密等。

我认为很难客观地量化所有类型的混淆,因为您正在尝试衡量它们抵御对手攻击的能力。如果您可以将程序保护问题简化为密码复杂的问题(如Gauss的作者所能做到的),那么我认为这是一个有用的混淆度量,因为它代表了攻击者必须执行的撤销混淆的工作。否则,工作水平会因混淆而变化,从一个反向工程师到另一个反向工程师的混淆,使我不确定是否可以有意义地对其进行测量...

#2 楼

有一个纯粹的基于抽象解释的代码混淆理论方法,很令人高兴。它依赖于这样一个事实,即抽象解释在其精确度方面具有可比性。特别是,在抽象解释的上层闭包运算符表述中-通过组合抽象和具体化函数来创建上层闭包运算符,形成从具体域到自身的映射,我们可以通过以下方式比较两种抽象解释的效用:对给定闭合图的不动点集进行部分排序。具有严格固定点的运算符比将所有内容都映射到顶部的运算符更为精确。

为了比较混淆,我们考虑了程序原始版本的抽象解释集,并且然后也要经过混淆的版本。现在,我们可以使用上述相同的结构来比较混淆转换的效力。给定一些通过抽象解释编码的可观察属性a,我们说混淆器对于if是有力的,当保留关于该属性的抽象解释时,原始版本和转换版本的不动点是不同的。 >
在此处了解更多信息:http://profs.sci.univr.it/~dallapre/ICALP05.pdf