• 一种基于内存对象访问序列的软件动态胎记及抄袭检测方法

    • 摘要:

      本发明涉及一种基于内存对象访问序列的软件动态胎记及抄袭检测方法.该方法将在高级语言层面上与输入数据有映射关系的函数内部数据结构及其在函数执行中的访问过程作为程序特征集合来比较原始程序和对比程序.根据对外部输入数据在程序动态运行过程中的污点追踪,捕获程序输入在动态执行中的对内存对象的访问,分析内存对象在程序执行过程中相对应的栈帧变化,最后根据内存对象访问序列构建软件胎记,并进行不同程序软件胎记之间的对比.该方法优势在于:能有效识别出功能相近但独立开发的程序,误判率低;并能检测出大多数情况下的抄袭检测行为,漏判率低.

    • 专利类型:

      发明专利

    • 申请/专利号:

      CN201710744207.3

    • 申请日期:

      2017.08.25

    • 公开/公告号:

      CN107506622A

    • 公开/公告日:

      2017-12-22

    • 发明人:

      王丽娜 陈铜 赵磊 唐奔宵 汪润

    • 申请人:

      武汉大学

    • 主分类号:

      G06F21/12(2013.01)I,G,G06,G06F,G06F21

    • 分类号:

      G06F21/12(2013.01)I,G,G06,G06F,G06F21,G06F21/12

    • 主权项:

      一种基于内存对象访问序列的软件动态胎记及抄袭检测方法,其特征在于,包括:步骤1,生成基于内存对象访问序列的动态胎记:去除冗余无用的数据结构,保留实现程序功能的必要数据结构,然后对必要数据结构的指令序列进行栈帧识别,得到以栈帧划分的指令序列,识别出栈上的局部变量和堆区在栈帧上的指针,得到程序在不同栈帧中的包含污点标签的内存对象,然后通过用内存对象所在栈帧序号与基地址结合来归一化表示区分特定函数中的特定数据结构,最后将内存对象所在栈帧的变化序列与内存对象的访问序列相结合,构建语义模型;步骤2,比较基于内存对象访问序列的动态胎记:将两个程序的同一污点标签的键值集合相并,重新构造以相并的键值集合为键值的原程序与检测程序的序列键值对,可以得到两个新的同一污点标签的键值对;将两个新的对应同一污点输入的键值对,进行余弦距离计算,得到在该污点输入下,两个程序之间的相似度得分;最后将原程序与检测程序的不同污点标签的相似度得分进行代权平均计算,权重值根据输入的重要性决定;代权平均值结果越接近1,代表两程序越相似;越接近0,代表两程序独立开发的可能性越大.