论文部分内容阅读
代码混淆技术是软件保护的有效技术之一。其中控制流混淆方法以其适用范围广、安全性能好等优点得到了广泛的应用。近年来研究人员提出了许多行之有效的控制流混淆方法。同时也注意到,在控制流混淆的实践过程中,分支点的选择对最终代码保护的效果有着重要影响。 本文提出一种基于污点分析技术的分支点选择方法。软件中分支点众多,大部分软件逆向分析方法重点分析软件中与外部输入数据相关的部分。本方法通过使用污点分析技术可以发现与外部输入数据相关的分支点。首先对重要的输入数据打上污点标记,然后根据指令类别制定污点传播规则,追踪记录程序中与污点信息相关的分支点。在对程序进行代码混淆保护时,可以重点对标记有污点信息的分支点进行混淆处理,从而有针对性地增加逆向攻击者的攻击难度。同时注意到一般安全性较高的混淆方法效率相对较低,效率较高的则安全性稍有下降。通过对污点数据进行人工级别划分,级别较高的用安全性较高的混淆方法,级别较低的用效率较高的混淆方法,可以在安全与效率之间取得合理的平衡。 根据上述方法,本文实现一套针对C语言的分支点选择参考软件。该软件输入为C语言源代码与被标记为污点的数据源信息,通过词法分析、语法分析、语义分析等处理,输出为被标记为污点的分支点信息,从而帮助代码保护者有针对性地对代码进行混淆保护。最后对该方法进行了实验验证。实验结果表明,本方法确实可以找到与软件输入信息相关的分支点,从而显著减小分支点的选择范围。