论文部分内容阅读
代码抄袭现象频发,网上出现大量的恶意代码、恶意软件,对许多人造成严重的危害。针对上述现象,源代码去匿名化技术用于检测源代码作者归属问题,能有效地遏制上述行为。在源代码去匿名化技术中,因为不同编程语言间语言特性不同、相关资料库不同,涉及动态特征的研究存在不同编程语言间方案迁移难问题。本文研究C++语言源代码去匿名化技术,其主要工作和创新点如下:(1)针对从Python语言到C++语言存在的方案迁移难问题,提出了面向C++编程语言源代码去匿名化的动态风格特征设计与提取方案。动态特征设计方案从时间和空间两个方面出发,分别进行设计,并区别于已有的面向Python语言的动态特征设计方案,考虑了部分能表征作者编程风格但是却被忽略的动态特征。在动态特征提取方案中,不同于已有的面向Python语言的动态特征提取方案中基于Python语言内部模块进行实现的方式,采用基于性能分析工具Gprof和Valgrind进行了具体实现。经过实验验证,动态风格特征的加入,明显提高了源代码去匿名的准确率,在涉及230个编程作者时,对比不包含动态风格特征的实验,源代码去匿名的准确率提高了约 8.5%。(2)设计并实现了一套面向C++语言的代码去匿名化系统。该系统以网页的形式呈现给用户,可以在线检测用户上传的源代码的作者身份信息。同时,在系统设计时,充分考虑各个模块的耦合度问题,保证后续在业务量激增的情况下,系统能快速拆分,以抵御高并发量的压力。最后,随机选取了 20份源代码文件,其作者身份信息均被正确识别,系统能有效用于代码去匿名化,符合预期。