基于结构信息和token比对的软件同源性检测技术研究
【摘要】:目前,随着计算机软件技术的飞速发展,优秀的软件越来越多,计算机软件市场发生了巨大变化,计算机软件所带来的巨大经济效益和社会效益,引起了人们对计算机软件价值的更多重视。在这种情况下,盗版就成为了日益严重的问题。现阶段,经发现一些开源代码中的部分代码频繁的成为别人抄袭的对象,因此能否发现这种代码的抄袭就变的十分重要。
如何维护计算机软件开发者的权益,也就是保护软件的知识产权,成为了越来越值得研究的问题。软件的同源性鉴别可以为软件的知识产权提供很好的依据。软件的同源性鉴别指将两款软件从源代码到软件功能上进行比较,找出它们是否相同或者相似,以此作为软件知识产权的一个凭证。作为软件形成基础的程序源代码是进行比较和鉴别的重要依据。
软件同源性鉴别技术可以鉴别软件抄袭,在保护软件的知识产权方面起到了很大的作用。软件抄袭主要表现为对代码的完全拷贝、函数名和变量名替换、语句顺序打乱、类型重定义等。目前市场上软件的同源性鉴别技术主要分为基于二进制可执行程序的同源性检测技术和基于源代码的同源性检测技术,其中基于源代码的同源性检测技术主要有三种:基于文本的同源性比对、基于Token的同源性比对和基于源代码语法结构的比对。
本文首先介绍了软件同源性检测技术的相关理论,以及目前市场上已有的相关技术和应用工具,主要从两个角度研究软件同源性检测技术:基于二进制可执行程序的同源性检测;基于token的软件同源性检测。
接着本文详细介绍了基于二进制可执行程序同源性检测技术,其中包括该技术的实现步骤、关键技术、检测效果和相关技术模块等。本文设计并实现了二进制可执行程序的同源性检测系统,并对二进制可执行程序的相似性度量进行了深入的研究。
基于token的代码同源性分析技术可以检测出代码的完全拷贝、函数名和变量名替换、语句顺序打乱等抄袭手段,但是目前这种技术还不能检测类型重定义的代码抄袭手段。为了更加有效的检测出代码抄袭,本文提出了一种能够完全检测基于类型重定义抄袭手段的检测方式,能够检测所有的、任意层次的简单类型重定义、重复类型重定义、带指针的类型重定义等抄袭手段。
最后,本文对基于token的软件同源性比对进行了相关实验,实验表明,本文的算法可以有效的比对出类型重定义的代码抄袭行为,提高检测的准确率,能够为软件同源性鉴别工作提供较大的帮助。