CN104104659A - 一种通信指纹的提取方法以及装置 - Google Patents

一种通信指纹的提取方法以及装置 Download PDF

Info

Publication number
CN104104659A
CN104104659A CN201310118284.XA CN201310118284A CN104104659A CN 104104659 A CN104104659 A CN 104104659A CN 201310118284 A CN201310118284 A CN 201310118284A CN 104104659 A CN104104659 A CN 104104659A
Authority
CN
China
Prior art keywords
network packet
data
labeled
application program
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310118284.XA
Other languages
English (en)
Other versions
CN104104659B (zh
Inventor
葛子毅
程绍银
蒋凡
吕秀全
周志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN201310118284.XA priority Critical patent/CN104104659B/zh
Publication of CN104104659A publication Critical patent/CN104104659A/zh
Application granted granted Critical
Publication of CN104104659B publication Critical patent/CN104104659B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例提供了一种通信指纹的提取方法以及装置,该方法包括:将网络数据包中的每一组数据进行污点标记,并记录网络数据包中每一组数据与其被标记的污点标识的对应关系;在应用程序处理网络数据包的过程中对应用程序进行程序插桩,以获得程序状态集和所述每一组数据在应用程序中运行的污点传播轨迹;从程序状态集中获得至少两个变量之间的不变特征;根据污点传播轨迹,获得与所述至少一个变量相关联的,网络数据包中被标记的至少一组数据;依据所述不变特征以及与所述至少一个变量相关联的,网络数据包中被标记的至少一组数据,获得应用程序的通信指纹。采用本发明实施例提供的方法和装置可以提高提取通信指纹的效率的目的。

Description

一种通信指纹的提取方法以及装置
技术领域
本发明涉及软件技术领域,更具体的说,是涉及一种通信指纹的提取方法以及装置。
背景技术
随着Internet技术的迅速发展和网络应用的普及,网络通信已经成为各种软件系统的重要基础功能之一,出于对管理、计费和安全等方面的考虑,区分出各种应用软件的网络流量一直是一种迫切的需求。
现有技术中可以通过应用软件的通信指纹来区分各种应用软件的网络流量,现有技术中提取应用软件通信指纹的方法为:基于网络流量的应用层载荷特征提取,下面以QQ应用软件为例对上述方法进行说明。
在用户A与用户B通过QQ应用程序进行通信的过程中,用户B接收到用户A发送的消息,用户A发送的消息是以网络数据包的形式发送至用户B的,基于网络流量的应用层载荷特征提取就是人为从用户A发给用户B的多个网络数据包中提取出各个网络数据包都具有的不变特征,根据该不变特征可以获得QQ应用软件的通信指纹。
由于从用户A发给用户B的多个网络数据包中提取出各个网络数据包都具有的不变特征是人工进行的,所以现有技术中提取通信指纹的方法效率较低。
发明内容
有鉴于此,本发明提供了一种通信指纹的提取方法以及装置,以克服现有技术中提取通信指纹的方法效率较低的问题。
为实现上述目的,本发明提供如下技术方案:
一种通信指纹的提取方法,包括:
将网络数据包中的每一组数据进行污点标记,并记录所述网络数据包中每一组数据与其被标记的污点标识的对应关系;
在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩,以获得程序状态集和所述每一组数据在所述应用程序中运行的污点传播轨迹,所述程序状态集至少包括一个属于所述应用程序,且与所述网络数据包中被标记的至少一组数据相关联的变量的信息;
从所述程序状态集中获得至少两个变量之间的不变特征,所述至少两个变量中的至少一个变量与所述网络数据包中被标记的至少一组数据相关联;
根据所述污点传播轨迹,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据;
依据所述不变特征以及与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据,获得所述应用程序的通信指纹。
优选地,在所述在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩之前,还包括:
根据预先设置的配置文件判断所述应用程序中当前待运行的函数是否需要程序插桩,所述配置文件包括不需要程序插桩的函数信息;
在上述判断结果为是的情况下,执行所述在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩的操作;
在上述判断结果为否的情况下,暂停程序插桩操作。
优选地,在从所述程序状态集中获得至少两个变量之间的不变特征之后,还包括:
将至少两个网络数据包分别对应的各个不变特征相匹配,获得所述至少两个网络数据中各个网络数据包均具有的共同不变特征,所述共同不变特征为获得所述应用程序的通信指纹的依据。
其中,所述根据所述污点传播轨迹,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据包括:
获得包括所述不变特征中与所述网络数据包中被标记的至少一组数据相关联的变量的污点传播轨迹;
根据获得的污点传播轨迹以及所述网络数据包中各个被标记的每组数据与污点标记的对应关系,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据。
其中,所述不变特征包括与所述网络数据包中被标记的字符不相关的变量,所述与所述网络数据包中被标记的字符不相关的变量为常量。
一种通信指纹的提取装置,包括:
污点标记模块,用于将网络数据包中的每一组数据进行污点标记,并记录所述网络数据包中每一组数据与其被标记的污点标识的对应关系;
插桩模块,用于在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩,以获得程序状态集和所述每一组数据在所述应用程序中运行的污点传播轨迹,所述程序状态集至少包括一个属于所述应用程序,且与所述网络数据包中被标记的至少一组数据相关联的变量的信息;
第一获取模块,用于从所述程序状态集中获得至少两个变量之间的不变特征,所述至少两个变量中的至少一个变量与所述网络数据包中被标记的至少一组数据相关联;
第二获取模块,用于根据所述插桩模块获得的污点传播轨迹,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据;
第三获取模块,用于依据所述不变特征以及与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据,获得所述应用程序的通信指纹。
优选的,还包括:
判断模块,用于根据预先设置的配置文件判断所述应用程序中当前待运行的函数是否需要程序插桩,所述配置文件包括不需要程序插桩的函数信息;
触发模块,用于在所述判断模块的判断结果为是的情况下,触发所述插桩模块;
暂停模块,用于在所述判断模块的判断结果为否的情况下,暂停程序插桩操作。
优选的,还包括:
匹配模块,用于将至少两个网络数据包分别对应的各个不变特征相匹配,获得所述至少两个网络数据中各个网络数据包均具有的共同不变特征,所述共同不变特征为获得所述应用程序的通信指纹的依据。
其中,所述第二获取模块包括:
过滤单元,用于获得包括所述不变特征中与所述网络数据包中被标记的至少一组数据相关联的变量的污点传播轨迹;
获得单元,用于根据获得的污点传播轨迹以及所述网络数据包中各个被标记的每组数据与污点标记的对应关系,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据。
其中,所述不变特征包括与所述网络数据包中被标记的字符不相关的变量,所述与所述网络数据包中被标记的字符不相关的变量为常量。
经由上述的技术方案可知,本发明实施例公开的通信指纹提取方法,首先将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中各个被标记的每一组数据与其被标记的污点标识的对应关系,在应用程序处理网络数据包的过程中,通过对应用程序进行程序插桩获得程序状态集以及每一组数据的污点传播轨迹,程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息,这样就可以根据程序状态集中的各个变量获得至少两个变量之间的不变特征,不变特征所涉及到的至少一个变量与网络数据包中被标记的至少一组数据相关联,可以根据污点传播轨迹,获得与上述至少两个变量中的至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,依据上述不变特征以及与上述至少两个变量中的至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得上述应用程序的通信指纹,上述整个过程中,不需要人为查找程序状态集,也不需要人为从程序状态集中获得不变特征,所以获得通信指纹的速度较快,实现了提高提取通信指纹的效率的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种通信指纹的提取方法的流程示意图;
图2为本发明实施例提供的一个网络数据包中每组数据与污点标记的对应关系的示意图;
图3为本发明实施例提供的一种通信指纹的提取方法另一实施例的方法流程示意图;
图4为本发明实施例提供的一种通信指纹的提取方法另一实施例的方法流程示意图;
图5为本发明实施例通信指纹的提取方法中根据所述污点传播轨迹,获得所述至少两个变量中的至少一个变量对应的被标记的至少一组数据的一种实现方法的流程示意图;
图6为本发明实施例提供的一种通信指纹的提取装置的结构示意图;
图7为本发明实施例提供的一种通信指纹的提取装置另一实施例的结构示意图;
图8为本发明实施例提供的BitTorrent握手数据包的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅附图1,为本发明实施例提供的一种通信指纹的提取方法的流程示意图,该方法包括:
步骤S101:将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中每一组数据与其被标记的污点标识的对应关系。
网络数据包可以是实时的网络流量包、已保存的流量文件数据包或作为应用程序的输入的数据包。网络数据包可以是单个的数据包,也可以是多个具有关联性的数据包。
应用程序采用的通信协议可以分为两大类,即二进制协议和文本协议,二进制协议的最小语法单元可以是比特位,文本协议的最小语法单元可以是字节,所以可以将网络数据包中的数据以字节为单位进行污点标记,即每一个字节的数据对应一个唯一污点标识,还可以对网络数据包中的数据以比特为单位进行污点标记,即每一个比特的数据对应一个唯一污点标识。可以根据不同的实际情况对网络数据包中的数据进行分组,例如可以将两个字节的数据分为一组。
污点标记是将来自于应用程序外部的数据标记为污染状态,这里来自于应用程序外部的数据是指上述网络数据包。对上述网络数据包中的每组数据进行污点标记的方法有多种,例如,可以按照每个字节在网络数据包中的偏移量对上述网络数据包中的每组数据进行污点标记。
请参阅图2,为本发明实施例提供的一个网络数据包中每组数据与污点标识的对应关系的示意图。
由于网络数据包中数据过多,所以以网络数据包中的部分数据为例进行说明。从图2中可知,网络数据包中的部分数据为“GET/index.html”,按照每个字节在网络数据包中的偏移量对网络数据包中的每组数据进行污点标记,则网络数据包中的每组数据对应的污点标识分别依次为0至13。
步骤S102:在应用程序处理上述网络数据包的过程中对该应用程序进行程序插桩,以获得程序状态集和上述每一组数据在该应用程序中运行的污点传播轨迹。
程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息。
污点传播轨迹是指网络数据包中每一组被标记的数据在应用程序中的处理流程。
在应用程序接收到网络数据包并对网络数据包进行处理的过程中,网络数据包中被标记的每一组数据会与应用程序中的一些变量相关联。
假设某一网络数据包中包括“a”、“b”和“c”,该网络数据包中的“a”可能被赋值给应用程序中的变量A,或者网络数据包中的“b”与“c”的乘积被赋值给应用程序中的变量A,或者在“a”被赋值给应用程序中的变量A之后,A又被赋值给应用程序中的变量B,变量B的值又赋值给应用程序中的变量C,这样应用程序中的一些变量就与网络数据包中的被标记的至少一组数据相关联了。网络数据包中的数据“a”在应用程序中的处理流程,即污点传播轨迹可以为A-B-C。
当应用程序代码为二进制程序代码时,程序状态集可以包括寄存器状态和内存状态。
寄存器状态可以包括寄存器组实体和变量集合实体。
寄存器组实体包括多个寄存器,每一个寄存器都有自己的标识。
变量集合实体包括寄存器组实体中各个寄存器存储的变量,每一寄存器的标识为其存储变量的标识。
内存状态包括各个内存的标识和内存中存储的变量。
程序状态集包括寄存器组实体中各个寄存器存储的变量在不同时刻的值,和内存中存储的变量在不同时刻的值。
当应用程序代码为源程序代码时,程序状态集可以包括源程序中各个变量在不同时刻的值。
在应用程序处理网络数据包的过程中,可以对该程序状态集进行跟踪和更新。对有源代码的应用程序,程序状态集还可以包括在不同函数之间运行的轨迹,各个函数定义的变量的值和函数参数值、返回值等。
步骤S103:从程序状态集中获得至少两个变量之间的不变特征。
上述至少两个变量中的至少一个变量与上述网络数据包中被标记的至少一组数据相关联。
通过分析程序状态集,可以得到与通信指纹有关的不变特征。与通信指纹有关的不变特征可以是一些域变量之间的相等关系或线性关系。线性关系可以是一些简单的函数关系,比如域a和域b之间可能存在a=strlen(b)。如果检测到存在这种strlen函数关系,则可以得到域a是域b的长度的结论。有些汇编指令本身就具有这种strlen函数关系,比如对rep指令,ECX寄存器存放的是要复制的字符串的长度,ESI寄存器存放的是源字符串的首地址。若ESI和ECX分别代表着网络数据包中的不同的域,则可知这两个域之间存在满足strlen函数的不变量关系。而对于有源代码的应用程序,可以利用已有不变量检测工具(如Daikon)对程序状态集中的变量间关系进行检查,自动根据程序状态集提取出不变特征。
步骤S104:根据上述污点传播轨迹,获得与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
不变特征中的至少两个变量中至少有一个变量1与上述网络数据包中被标记的至少一组数据相关联,可以根据变量1以及污点传播轨迹得出与变量1相关联的网络数据包中的一组或多组被标记的数据。
步骤S105:依据上述不变特征以及与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得该应用程序的通信指纹。
依据上述不变特征以及与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,可以推导出上述网络数据包中不同域间存在的不变特征,从而获得可用于识别该应用程序的通信指纹。
本发明实施例公开的通信指纹提取方法,首先将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中各个被标记的每一组数据与其被标记的污点标识的对应关系,在应用程序处理网络数据包的过程中,通过对应用程序进行程序插桩获得程序状态集以及每一组数据的污点传播轨迹,程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息,这样就可以根据程序状态集中的各个变量获得至少两个变量之间的不变特征,不变特征所涉及到的至少一个变量与网络数据包中被标记的至少一组数据相关联,可以根据污点传播轨迹,获得与上述至少两个变量中的至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,依据上述不变特征以及与上述至少两个变量中的至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得上述应用程序的通信指纹,上述整个过程中,不需要人为查找程序状态集,也不需要人为从程序状态集中获得不变特征,所以获得通信指纹的速度较快,实现了提高提取通信指纹的效率的目的。
请参阅图3,为本发明实施例提供的一种通信指纹的提取方法另一实施例的方法流程示意图,该方法包括:
步骤S301:将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中每一组数据与其被标记的污点标识的对应关系。
步骤S302:根据预先设置的配置文件判断该应用程序中当前待运行的函数是否需要程序插桩,如果是,则进入步骤S303,如果否,则进入步骤S304。
配置文件包括不需要程序插桩的函数信息。
配置文件用于对应用程序进行程序插桩时进行过滤,只对应用程序中特定的程序段插桩,对已有库函数和系统调用程序不进行插桩,从而减轻插桩分析的开销。
配置文件可以包括两部分,一是关键函数配置文件,一是函数模拟配置文件。关键函数配置文件中可以定义在程序插桩分析时需要特别检查的特定函数(例如应用程序接收网络数据包的库函数接口),关键函数配置文件可以包括需要特别检查的函数的函数名、缓冲区地址的参数索引和缓冲区长度的参数索引,在程序插桩过程中如果检测到当前待运行的函数的函数名与关键函数配置文件中包含的一致,则可以在该函数的程序中进行插桩。在进行程序插桩时,可以依据函数的缓冲区地址的参数索引和缓冲区长度的参数索引进行插桩,所以通过关键函数配置文件可以确定进行程序插桩的时机,并从中获取网络数据包存储的缓冲区。
函数模拟配置文件可以包括常见库函数的污点传播动作效果,还可以包括常见库函数的函数名、污点传播类别、参数个数、污染来源参数索引和被污染的参数索引,通过函数模拟配置文件可以模拟获得网络数据包中每组被标记的数据在常见库函数的污点传播轨迹,所以可以不用在这些常见库函数中进行插桩。
在实际应用中,可能不知道应用程序中都有哪些需要关注的特定函数,所以配置文件中可以不包括函数模拟配置文件,只包括关键函数配置文件。
步骤S303:在应用程序处理上述网络数据包的过程中对该应用程序进行程序插桩,以获得程序状态集和上述每一组数据在该应用程序中运行的污点传播轨迹。
应用程序在处理网络数据包之前会执行一些对提取通信指纹无关的操作,因此在应用程序接收到网络数据包之后开始执行程序插桩,即在应用程序处理上述网络数据包的过程中对该应用程序进行程序插桩。
程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关的变量的信息。
本发明涉及到的应用程序可以是源代码的应用程序,也可以是二进制代码的应用程序。程序插桩可以是指在应用程序的源代码或二进制代码中插入分析性的语句,该分析性语句可以为输出应用程序中变量的抽象值、内存状态和寄存器状态的语句。
对于应用程序为源代码的应用程序,一般采用静态插桩方法,静态插桩方法是在源代码中的预设位置插入与源代码兼容的分析性语句,然后对包含插入分析性语句的源代码进行编译执行。当源代码较为简单,且对源代码的程序插桩位置以及需要插入的分析性语句都比较明确,那么也可以人为插入,对于复杂的源代码,可以通过软件插入。
对于应用程序为二进制代码的应用程序,可以采用静态插桩方法,也可以采用动态插桩方法。静态插桩方法是指,在应用程序运行前先对应用程序进行改写,在对改写后的应用程序进行插桩,例如可以使用ATOM工具进行插桩。动态插桩方法是在应用程序运行时,根据应用程序的位置和应用程序的实时状态插入分析性语句,可以采用动态二进制插桩工具PIN和Valgrind对应用程序进行插桩。
采用动态插桩方法对应用程序插桩时,速度较慢,因此在采用动态程序插桩时,优选的,配置文件中包括关键函数配置文件以及函数模拟配置文件,当然配置文件也可以只包括函数配置文件,本发明实施例对配置文件中的内容不作具体限定。
步骤S304:暂停程序插桩。
暂停程序插桩操作,在不需要程序插桩的函数运行完毕之后,再进入步骤S302判断下一个函数是否需要进行程序插桩。
步骤S305:从程序状态集中获得至少两个变量之间的不变特征。
上述至少两个变量中的至少一个变量与上述网络数据包中被标记的至少一组数据相关联。
步骤S306:根据上述污点传播轨迹,获得与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
步骤S307:依据上述不变特征以及与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得该应用程序的通信指纹。
对于应用程序为二进制代码的应用程序,应用程序的语义信息主要由一些特殊指令和库函数引入。比如在cmp指令中,如果将网络数据包中某组数据的污染标记反复与一个立即数比较,则该组数据可能是控制循环次数的长度信息,从而可以认为该组数据表示长度信息,结合该组数据的污染标识的污点传播轨迹,即可推导出网络数据包中的该组数据的语义信息。一些库函数本身也带有很重要的语义信息,比如内存拷贝函数memcpy,该函数的三个参数分别表示目的地址、源地址和要拷贝的长度。如果由污染传播轨迹知道,第二个参数(源地址)是网络数据包中某组数据的地址,且第三个参数(要拷贝的长度)是网络数据包中某组数据的值,则可以很轻易的得到这两组数据之间存在的不变特征。可以根据对这一类特殊指令和库函数的归纳和总结,对程序状态集进行检索和分析,结合污点传播轨迹,可以推导出网络数据包的不变特征,从而获得通信指纹。
对于应用程序为源代码的应用程序,应用程序的语义信息比较清晰,假设记录的不变特征中与网络数据包中被标记的至少一组数据相关联的变量为变量2,,在污点传播轨迹中查找变量2的污点传播来源,即可推导出网络数据包的不变特征,从而获得通信指纹。
应用程序中包括一些常见库函数,本发明实施例不在常见库函数中进行程序插桩,从而大量减少待插桩的指令数目,减少了总体程序插桩分析的开销,从而进一步提高了提取通信指纹的速度。例如应用程序会大量调用系统提供的库函数来实现一些基本操作(如调用recv、recvfrom接收网络数据包),对于这些库函数的执行效果可以通过模拟执行得到,在进行应用程序的通信指纹提取的过程中,一次可以只对一个网络数据包进行步骤S101至步骤S105的操作,根据同一个网络数据包1得到的该应用程序的不变特征可能有多个,且同一个网络数据包1中的数据可能具有一个特定的不变特征,而其他网络数据包2中不具备该特定的不变特征,所以根据同一个网络数据包1得到的该应用程序的不变特征可能不是准确的,所以还需要进一步的验证。
请参阅图4,为本发明实施例提供的一种通信指纹的提取方法另一实施例的方法流程示意图,该方法包括:
步骤S401:将至少两个网络数据包分别执行如下步骤,得到上述至少两个网络数据包分别对应的不变特征。
将至少两个网络数据包执行如下步骤S4011至步骤S4013。
步骤S4011:将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中每一组数据与其被标记的污点标识的对应关系。
步骤S4012:在应用程序处理上述网络数据包的过程中对该应用程序进行程序插桩,以获得程序状态集和上述每一组数据在该应用程序中运行的污点传播轨迹。
程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息。
污点传播轨迹是通过在应用程序中进行程序插桩,跟踪应用程序对输入的网络数据包的处理过程,对网络数据包中被标记的每组数据的状态进行跟踪和合并,记录被标记的每组数据的传播情况。比如在配置文件中定义了strcpy函数的污点传播特性是将第二个参数的污染状态和污点标识传播给第一个参数,那么在应用程序运行到strcpy函数时,就生成了网络数据包对应位置污点标识的污点传播轨迹中的一段。而对于指令来说,某些指令虽然操作数是污染的,但结果却可能是不污染的,如某些函数的执行结果始终为零,不会产生有意义的污染传播,那么网络数据包中对应位置污点标识的该条污点传播轨迹这里就结束了。
程序插桩包括多种类型,例如过程级别插桩、轨迹级别插桩和指令级别插桩,其中:过程级别插桩是在函数级别进行插桩,通过对函数名的判断可以选择在遇到消息接收函数时开启插桩,以免在与消息接收函数无关的代码增加程序插桩分析的开销,并在再次遇到消息接收函数时退出插桩分析,在遇到系统调用或库函数时暂停插桩以减少开销;轨迹级别插桩是依次对一条执行轨迹中未被暂停插桩的每条指令进行程序插桩;指令级别插桩则是模拟分析不同语义的指令对程序状态的影响,为不同的指令进行程序插桩。
步骤S4013:从程序状态集中获得至少两个变量之间的不变特征。
上述至少两个变量中的至少一个变量与上述网络数据包中被标记的至少一组数据相关联。
假设,上述至少两个网络数据包为N个网络数据包,N为大于等于2的整数,第K网络数据包对应第K不变特征,K为大于等于2小于等于N的整数。
步骤S402:获得上述至少两个网络数据中各个网络数据包均具有的共同不变特征。
比对第一不变特征、第二不变特征......第K不变特征……第N不变特征,获得这N个不变特征中的共同不变特征,该共同不变特征才具有普遍性。
步骤S403:根据上述污点传播轨迹,获得与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
步骤S404:依据上述不变特征以及与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得该应用程序的通信指纹。
可以理解的是,为了使应用程序的通信指纹对于各个网络数据包都有效,还可以对多个网络数据包执行步骤S101至步骤105,得到上述多个网络数据包分别对应的候选通信指纹,然后比对上述多个网络数据包对应的候选通信指纹,得出上述多个网络数据包共同的候选通信指纹,将该共同的候选通信指纹作为该应用程序的准确通信指纹。
可以理解的是,上述任一实施例中的污点传播轨迹有多个,如果直接从多个污点传播轨迹中查找上述至少两个变量中的至少一个变量对应的被标记的至少一组数据,则查找速度会很慢,请参阅图5,为本发明实施例通信指纹的提取方法中根据上述污点传播轨迹,获得与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据的一种实现方法的流程示意图,该实现方法包括:
步骤S501:获得包括上述不变特征中与上述网络数据包中被标记的至少一组数据相关联的变量的污点传播轨迹。
通过应用程序处理网络数据包的过程中对该应用程序进行程序插桩,获得的污点传播轨迹的数量可能是非常多的,而与提取应用程序的通信指纹相关的污点传播轨迹又非常有限,因此需要对污点传播轨迹进行过滤,以减轻提取通信指纹的负担,例如,可以通过程序切片技术,剔除与上述不变特征中变量值无关的程序执行片段,从而将与上述不变特征相关的程序执行片段限定到一个较小的范围中,即从大量的污点传播轨迹中得到与上述不变特征相关的污点传播轨迹,以提高通信指纹的提取速度。
步骤S502:根据获得的污点传播轨迹以及上述网络数据包中各个被标记的每组数据与污点标识的对应关系,获得上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
本发明实施例,先从多个污点传播轨迹中获得包括上述不变特征中与上述网络数据包中被标记的至少一组数据对应的变量的污点传播轨迹,再根据获得的污点传播轨迹以及上述网络数据包中各个被标记的每组数据与污点标记的对应关系,获得上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,从而提高了通信指纹的提取速度。
上述任一实施例中的不变特征可以包括与所述网络数据包中被标记的字符不相关的变量,此时与所述网络数据包中被标记的字符不相关的变量为常量。
上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了多种装置,下面给出具体的实施例进行详细说明。
请参阅图6,为本发明实施例提供的一种通信指纹的提取装置的结构示意图,该装置包括:
污点标记模块601、插桩模块602、第一获取模块603、第二获取模块604以及第三获取模块605,其中:
污点标记模块601,用于将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中每一组数据与其被标记的污点标识的对应关系。
插桩模块602,用于在应用程序处理上述网络数据包的过程中对上述应用程序进行程序插桩,以获得程序状态集和上述每一组数据在上述应用程序中运行的污点传播轨迹。
程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息。
第一获取模块603,用于从上述程序状态集中获得至少两个变量之间的不变特征。
上述至少两个变量中的至少一个变量与上述网络数据包中被标记的至少一组数据相关联。
第二获取模块604,用于根据上述插桩模块获得的污点传播轨迹,获得上与上述少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
第三获取模块605,用于依据上述不变特征以及与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得上述应用程序的通信指纹。
本发明实施例公开的通信指纹提取装置,首先通过污点标记模块601将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中各个被标记的每一组数据与其被标记的污点标识的对应关系,在应用程序处理网络数据包的过程中,通过插桩模块602对应用程序进行程序插桩,并通过程序插桩获得程序状态集以及每一组数据的污点传播轨迹,程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息,这样就可以通过第一获取模块603根据程序状态集中的各个变量获得至少两个变量之间的不变特征,不变特征所涉及到的至少一个变量与网络数据包中被标记的至少一组数据相关联,可以由第二获取模块604根据污点传播轨迹,获得与上述至少两个变量中的至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,第三获取模块605上述不变特征以及与上述至少两个变量中的至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得上述应用程序的通信指纹,上述整个过程中,不需要人为查找程序状态集,也不需要人为从程序状态集中获得不变特征,所以获得通信指纹的速度较快,实现了提高提取通信指纹的效率的目的。
请参阅图7,为本发明实施例提供的一种通信指纹的提取装置另一实施例的结构示意图,该装置包括:
污点标记模块601、判断模块701、触发模块702、暂停模块703、插桩模块602、第一获取模块603、第二获取模块604以及第三获取模块605,其中:
污点标记模块601,用于将网络数据包中的每一组数据进行污点标记,并记录上述网络数据包中每一组数据与其被标记的污点标识的对应关系。
判断模块701,用于根据预先设置的配置文件判断上述应用程序中当前待运行的函数是否需要程序插桩。
上述配置文件包括不需要程序插桩的函数信息。
触发模块702,用于在判断模块701的判断结果为是的情况下,触发插桩模块602。
暂停模块703,用于在判断模块701的判断结果为否的情况下,暂停程序插桩操作。
插桩模块602,用于在应用程序处理上述网络数据包的过程中对上述应用程序进行程序插桩,以获得程序状态集和上述每一组数据在上述应用程序中运行的污点传播轨迹。
程序状态集至少包括一个属于上述应用程序,且与上述网络数据包中被标记的至少一组数据相关联的变量的信息。
第一获取模块603,用于从上述程序状态集中获得至少两个变量之间的不变特征。
上述至少两个变量中的至少一个变量与上述网络数据包中被标记的至少一组数据相关联。
第二获取模块604,用于根据上述插桩模块获得的污点传播轨迹,获得上与上述少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
第三获取模块605,用于依据上述不变特征以及与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据,获得上述应用程序的通信指纹纹。
本发明实施例,通过判断模块701判断出应用程序中当前待运行的函数是否需要程序插桩,当需要进行程序插桩时触发模块702触发插桩模块602,当不需要进行程序插桩时,通过暂停模块703暂停程序插桩操作,从而大量减少待插桩的指令数目,减少了总体程序插桩分析的开销,从而进一步提高了提取通信指纹的速度。例如,应用程序会大量调用系统提供的库函数来实现一些基本操作(如调用recv、recvfrom接收网络数据包),对于这些库函数的执行效果可以通过模拟执行得到。
在进行应用程序的通信指纹提取的过程中,应用程序一次可以接收一个网络数据包,而根据一个网络数据包1得到的该应用程序的不变特征可能是多个,因为同一个网络数据1包中的数据可能具有一个特定的不变特征,而其他网络数据2包中不具备该特定的不变特征,所以根据同一个网络数据包1得到的该应用程序的候选不变特征中的部分候选不变特征可能不是准确的,所以还需要进一步的验证。所以上述任一装置实施例在获得至少两个网络数据包对应的不变特征之后,还可以包括:匹配模块,用于将至少两个网络数据包分别对应的各个不变特征相匹配,获得上述至少两个网络数据中各个网络数据包均具有的共同不变特征,该共同不变特征为获得上述应用程序的通信指纹的依据。
可以理解的是,为了使应用程序的通信指纹对于各个网络数据包都有效,还可以先获得多个网络数据包分别对应的候选通信指纹,然后比对上述多个网络数据包对应的候选通信指纹,得出上述多个网络数据包共同的候选通信指纹,将该共同的候选通信指纹作为该应用程序的准确通信指纹。
上述任一装置实施例中的第二获取模块可以包括过滤单元,获得包括上述不变特征中与上述网络数据包中被标记的至少一组数据相关联的变量的污点传播轨迹;获得单元,用于根据获得的污点传播轨迹以及上述网络数据包中各个被标记的每组数据与污点标记的对应关系,获得与上述至少一个变量相关联的,上述网络数据包中被标记的至少一组数据。
上述任一装置实施例中的不变特征包括与上述述网络数据包中被标记的字符不相关的变量,上述与上述网络数据包中被标记的字符不相关的变量为常量。
为了本领域技术人员更加理解本发明实施例,下面通过对BitTorrent应用程序提取通信指纹,以对上述实施例进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
Bit Torrent是一款P2P下载软件,其源代码是用python语言编写的。本实施例将Bit Torrent握手数据包作为上述实施例所涉及的网络数据包。
请参阅图8,为本发明实施例提供的Bit Torrent握手数据包的示意图。
图8中用虚线框框出的部分为Bit Torrent握手数据包中的数据。从图中可知Bit Torrent握手数据包中应用层载荷中的数据为“19Bit Torrent Protocol”,可以将Bit Torrent握手数据包中的数据以字节为单位分组,按照每个字节在网络数据包中的偏移量对Bit Torrent握手数据包中的每组数据进行污点标记,Bit Torrent握手数据包中的每组数据对应的污点标识分别依次为0至20。
Bit Torrent应用程序中的_read_messages()是专门用来处理Bit Torrent握手数据包的,_read_messages()部分代码段如下:
其中,上述代码中yield n表示从变量self._message中读出n个字节。Bit Torrent握手数据包内容以固定字符串“19Bit Torrent protocol”开头,其中19代表的是len(protocol_name),protocol_name即为“Bit Torrent protocol”。可见这段代码的功能就是识别Bit Torrent应用程序接收到的数据包是否为Bit Torrent握手数据包。
为得到程序状态集和污点传播轨迹,对以上源代码段进行程序插桩,进行程序插桩后的代码为:
在执行上述程序代码的过程中,污染标记0传播到了变量self._message1中,执行yield len(protocol_name)时,污染标记1-20传播到了变量self._message2中。
编译执行上述程序插桩后的代码,输出程序状态集,程序状态集包括:self._message1、self._message2、len(protocol_name)和protocol_name。
从上述程序代码可知,self._message1=len(protocol_name)=19,self._message2=“Bit Torrent protocol”,所以可以得到不变特征为self._message1=len(protocol_name)=19,self._message2=protocol_name=“Bit Torrent protocol”。
Bit Torrent应用程序中的Connector.py文件中的data_came_in函数是负责从Bit Torrent握手数据包中读取内容存入到self._message中,程序代码如下所示:
由此,被标记的数据便从Bit Torrent握手数据包中传播到self._message变量中。由于Bit Torrent握手数据包比较小,在一个循环内“Bit Torrentprotocol”的污染标记1-20也传播到self._message的前20个字节处。
Bit Torrent握手数据包中污染标记为0的一组数据的轨迹为19-self._message—self._message1,污染标记为1至20的数据的污染传播轨迹是相同的,都为Bit Torrent protocol—protocol_name—self._message—self._message2。
根据上述污点传播轨迹可知不变特征中的self._message1与Bit Torrent握手数据包中的“19”相关联,self._message2与Bit Torrent握手数据包中的“Bit Torrent protocol”相关联。
根据不变特征以及“19”和“Bit Torrent protocol”可以得出Bit Torrent应用程序的通信指纹可以为19Bit Torrent protocol。
在Wire Shark中,也是以“19Bit Torrent protocol”固定字符串作为指纹的,从而可知本发明实施例提供的通信指纹提取方法提取出的指纹较为准确。
综上,本发明实施例可自动提取出应用程序的通信指纹,减少人工分析的工作量,具有分析效率高、准确度高的特点。本发明实施例提供的通信指纹提取方法不需要应用程序的源代码,不需要分析协议的语法规范和语义。在实际应用中大部分的应用程序发布时是以二进制形式发布的。本发明实施例中的输入可以是二进制程序和其对应的网络数据包,所以不需要应用程序的源代码。也不涉及应用程序的具体语法规范和语义信息,减少了分析的复杂度,实用性好。本发明实施例提出的通信指纹提取方法,建立在对应用程序分析的基础上,相对于基于流量的分析方法,更能反映通信协议的语义逻辑,进而能够生成高精确性的指纹。本发明实施例可对不同平台下网络应用程序的通信指纹进行提取。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置或系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种通信指纹的提取方法,其特征在于,包括:
将网络数据包中的每一组数据进行污点标记,并记录所述网络数据包中每一组数据与其被标记的污点标识的对应关系;
在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩,以获得程序状态集和所述每一组数据在所述应用程序中运行的污点传播轨迹,所述程序状态集至少包括一个属于所述应用程序,且与所述网络数据包中被标记的至少一组数据相关联的变量的信息;
从所述程序状态集中获得至少两个变量之间的不变特征,所述至少两个变量中的至少一个变量与所述网络数据包中被标记的至少一组数据相关联;
根据所述污点传播轨迹,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据;
依据所述不变特征以及与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据,获得所述应用程序的通信指纹。
2.根据权利要求1所述通信指纹的提取方法,其特征在于,在所述在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩之前,还包括:
根据预先设置的配置文件判断所述应用程序中当前待运行的函数是否需要程序插桩,所述配置文件包括不需要程序插桩的函数信息;
在上述判断结果为是的情况下,执行所述在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩的操作;
在上述判断结果为否的情况下,暂停程序插桩操作。
3.根据权利要求1所述通信指纹的提取方法,其特征在于,在从所述程序状态集中获得至少两个变量之间的不变特征之后,还包括:
将至少两个网络数据包分别对应的各个不变特征相匹配,获得所述至少两个网络数据中各个网络数据包均具有的共同不变特征,所述共同不变特征为获得所述应用程序的通信指纹的依据。
4.根据权利要求1所述通信指纹的提取方法,其特征在于,所述根据所述污点传播轨迹,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据包括:
获得包括所述不变特征中与所述网络数据包中被标记的至少一组数据相关联的变量的污点传播轨迹;
根据获得的污点传播轨迹以及所述网络数据包中各个被标记的每组数据与污点标记的对应关系,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据。
5.根据权利要求1所述通信指纹的提取方法,其特征在于,所述不变特征包括与所述网络数据包中被标记的字符不相关的变量,所述与所述网络数据包中被标记的字符不相关的变量为常量。
6.一种通信指纹的提取装置,其特征在于,包括:
污点标记模块,用于将网络数据包中的每一组数据进行污点标记,并记录所述网络数据包中每一组数据与其被标记的污点标识的对应关系;
插桩模块,用于在应用程序处理所述网络数据包的过程中对所述应用程序进行程序插桩,以获得程序状态集和所述每一组数据在所述应用程序中运行的污点传播轨迹,所述程序状态集至少包括一个属于所述应用程序,且与所述网络数据包中被标记的至少一组数据相关联的变量的信息;
第一获取模块,用于从所述程序状态集中获得至少两个变量之间的不变特征,所述至少两个变量中的至少一个变量与所述网络数据包中被标记的至少一组数据相关联;
第二获取模块,用于根据所述插桩模块获得的污点传播轨迹,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据;
第三获取模块,用于依据所述不变特征以及与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据,获得所述应用程序的通信指纹。
7.根据权利要求6所述通信指纹的提取装置,其特征在于,还包括:
判断模块,用于根据预先设置的配置文件判断所述应用程序中当前待运行的函数是否需要程序插桩,所述配置文件包括不需要程序插桩的函数信息;
触发模块,用于在所述判断模块的判断结果为是的情况下,触发所述插桩模块;
暂停模块,用于在所述判断模块的判断结果为否的情况下,暂停程序插桩操作。
8.根据权利要求6所述通信指纹的提取装置,其特征在于,还包括:
匹配模块,用于将至少两个网络数据包分别对应的各个不变特征相匹配,获得所述至少两个网络数据中各个网络数据包均具有的共同不变特征,所述共同不变特征为获得所述应用程序的通信指纹的依据。
9.根据权利要求6所述通信指纹的提取装置,其特征在于,所述第二获取模块包括:
过滤单元,用于获得包括所述不变特征中与所述网络数据包中被标记的至少一组数据相关联的变量的污点传播轨迹;
获得单元,用于根据获得的污点传播轨迹以及所述网络数据包中各个被标记的每组数据与污点标记的对应关系,获得与所述至少一个变量相关联的,所述网络数据包中被标记的至少一组数据。
10.根据权利要求6所述通信指纹的提取装置,其特征在于,所述不变特征包括与所述网络数据包中被标记的字符不相关的变量,所述与所述网络数据包中被标记的字符不相关的变量为常量。
CN201310118284.XA 2013-04-07 2013-04-07 一种通信指纹的提取方法以及装置 Expired - Fee Related CN104104659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310118284.XA CN104104659B (zh) 2013-04-07 2013-04-07 一种通信指纹的提取方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310118284.XA CN104104659B (zh) 2013-04-07 2013-04-07 一种通信指纹的提取方法以及装置

Publications (2)

Publication Number Publication Date
CN104104659A true CN104104659A (zh) 2014-10-15
CN104104659B CN104104659B (zh) 2017-02-08

Family

ID=51672460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310118284.XA Expired - Fee Related CN104104659B (zh) 2013-04-07 2013-04-07 一种通信指纹的提取方法以及装置

Country Status (1)

Country Link
CN (1) CN104104659B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105938562A (zh) * 2016-04-13 2016-09-14 中国科学院信息工程研究所 一种自动化网络应用指纹提取方法及系统
CN111046396A (zh) * 2020-03-13 2020-04-21 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及系统
CN116467221A (zh) * 2023-06-16 2023-07-21 荣耀终端有限公司 一种基于解释器的插桩方法、系统及相关电子设备
CN116483734A (zh) * 2023-06-16 2023-07-25 荣耀终端有限公司 一种基于编译器的插桩方法、系统及相关电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040028281A1 (en) * 2002-08-06 2004-02-12 Szeming Cheng Apparatus and method for fingerprinting digital media
CN102289515A (zh) * 2011-09-07 2011-12-21 江西财经大学 基于不变距特征的多级指纹数据库检索方法
CN102306098A (zh) * 2011-08-18 2012-01-04 电子科技大学 一种隐式污点传播系统及其方案
CN102495795A (zh) * 2011-11-25 2012-06-13 中国人民解放军总参谋部第五十四研究所 一种基于中间语言分析的软件脆弱性测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040028281A1 (en) * 2002-08-06 2004-02-12 Szeming Cheng Apparatus and method for fingerprinting digital media
CN102306098A (zh) * 2011-08-18 2012-01-04 电子科技大学 一种隐式污点传播系统及其方案
CN102289515A (zh) * 2011-09-07 2011-12-21 江西财经大学 基于不变距特征的多级指纹数据库检索方法
CN102495795A (zh) * 2011-11-25 2012-06-13 中国人民解放军总参谋部第五十四研究所 一种基于中间语言分析的软件脆弱性测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
葛子毅等: "基于程序不变量的载荷特征提取方法", 《通信技术》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105938562A (zh) * 2016-04-13 2016-09-14 中国科学院信息工程研究所 一种自动化网络应用指纹提取方法及系统
CN105938562B (zh) * 2016-04-13 2019-06-11 中国科学院信息工程研究所 一种自动化网络应用指纹提取方法及系统
CN111046396A (zh) * 2020-03-13 2020-04-21 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及系统
CN116467221A (zh) * 2023-06-16 2023-07-21 荣耀终端有限公司 一种基于解释器的插桩方法、系统及相关电子设备
CN116483734A (zh) * 2023-06-16 2023-07-25 荣耀终端有限公司 一种基于编译器的插桩方法、系统及相关电子设备
CN116483734B (zh) * 2023-06-16 2024-03-19 荣耀终端有限公司 一种基于编译器的插桩方法、系统及相关电子设备
CN116467221B (zh) * 2023-06-16 2024-04-02 荣耀终端有限公司 一种基于解释器的插桩方法、系统及相关电子设备

Also Published As

Publication number Publication date
CN104104659B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
AU2016216684B2 (en) Flow analysis instrumentation
CN103294594B (zh) 一种基于测试的静态分析误报消除方法
US9389986B2 (en) Identifying impacted tests from statically collected data
Martins et al. Plagiarism detection: A tool survey and comparison
CN105095207B (zh) 检索、获取应用软件内容的方法和装置
CN102402479B (zh) 用于静态分析的中间表示结构
US9298590B2 (en) Methods and apparatuses for automated testing of streaming applications using mapreduce-like middleware
Mondai et al. Micro-clones in evolving software
CN103679038B (zh) 并行程序共享数据类漏洞的检测方法及系统
CN110765459A (zh) 一种恶意脚本检测方法、装置和存储介质
Poon et al. Instructor-centric source code plagiarism detection and plagiarism corpus
CN107193732A (zh) 一种基于路径比对的校验函数定位方法
CN104104659A (zh) 一种通信指纹的提取方法以及装置
Walkinshaw et al. Are 20% of files responsible for 80% of defects?
Solanki et al. Comparative study of software clone detection techniques
US10241957B2 (en) Workload patterns for realistic load recreation in performance testing
Heumüller et al. Exploit those code reviews! bigger data for deeper learning
CN107066302A (zh) 缺陷检测方法、装置及服务终端
Liu et al. Automatic performance debugging of SPMD-style parallel programs
CN103150445B (zh) 一种matlab模型变量的剖析方法及装置
WO2018205391A1 (zh) 信息检索准确性评估方法、系统、装置及计算机可读存储介质
Rattan et al. Systematic mapping study of metrics based clone detection techniques
Tennyson A replicated comparative study of source code authorship attribution
Kumar et al. Code clone detection and analysis using software metrics and neural network-a literature review
Razagallah et al. Twindroid: A dataset of android app system call traces and trace generation pipeline

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170208