CN114637992A - 软件函数调用行为数据的处理方法及装置 - Google Patents
软件函数调用行为数据的处理方法及装置 Download PDFInfo
- Publication number
- CN114637992A CN114637992A CN202210201647.5A CN202210201647A CN114637992A CN 114637992 A CN114637992 A CN 114637992A CN 202210201647 A CN202210201647 A CN 202210201647A CN 114637992 A CN114637992 A CN 114637992A
- Authority
- CN
- China
- Prior art keywords
- function
- data
- tree
- call
- node
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件函数调用行为数据的处理方法及装置。该方法包括:获取以序列化数据表征的软件函数调用行为数据;将软件函数调用行为数据从序列化数据转换为层次化结构数据;在二维平面上基于层次化结构数据进行树形布局,以获得绘图属性数据;以及根据绘图属性数据绘制树状调用图,其中,根据函数被调用的先后顺序将函数节点放置在树状调用图的不同层级上,并通过函数节点之间的连接线唯一表征对应的函数调用,从而树状调用图有效地避免相互交错的函数节点和调用边,增强可读性,还能清晰地显示出完整的调用链路。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种软件函数调用行为数据的处理方法及装置。
背景技术
随着信息技术的迅猛发展,各种功能的软件层出不穷,但同时恶意软件也日益泛滥。为了进行软件分析,首先需要获取到软件函数调用行为数据。软件函数调用行为数据Opcode是一种动态行为数据,安全专家往往会基于Opcode来构造指令频率特征、文本向量特征以及序列的二进制图像等,并将这些特征输入到基于机器学习和深度学习的神经网络、支持向量机、朴素贝叶斯等模型中去,以识别各种软件中的恶意软件,但是这种方式虽然在准确率、检测速度上取得了较大的突破,但往往依赖于安全专家的经验。
目前有一些人机协同的方法,通过引导可视化交互,进一步提升分析和识别的准确度和效率。如绘制样本Opcode的调用图,调用图既可用于构造成样本特征输入到恶意文件检测器中去,又可以作为图表辅助分析,具有较好的解释性。然而,基于现有方法构建出的调用图仍然存在一些问题:(1)可读性较差:存在大量节点和交错的调用边;(2)非关键节点混淆布局:所有函数的等价表示导致主次不分明,在软件分析中,安全专家往往会更加关注敏感函数的调用;(3)所蕴含的信息维度单一:传统的调用图强调函数调用行为,但没有展示出函数的参数信息以及带污点参数的传递行为。总之,安全人员缺少一种可读性强、可解释性好的调用图,来对软件中的函数调用行为进行解释和分析,并据此识别恶意软件。
发明内容
有鉴于此,本公开的目的是提供一种软件函数调用行为数据的处理方法及装置,以解决现有方法构建出的调用图存在的以上问题。
根据本公开的第一方面,提供一种软件函数调用行为数据的处理方法,包括:
获取以序列化数据表征的软件函数调用行为数据;
将所述软件函数调用行为数据从序列化数据转换为层次化结构数据;
在二维平面上基于所述层次化结构数据进行树形布局,以获得绘图属性数据;以及
根据所述绘图属性数据绘制树状调用图,其中,根据函数被调用的先后顺序将函数节点放置在所述树状调用图的不同层级上,并通过函数节点之间的连接线表征函数调用。
可选地,所述绘图属性数据包括节点数组和连接对象数组,所述节点数组用于记录每个函数节点的属性信息,所述连接对象数组用于记录函数节点之间的连接边的属性信息,则所述根据所述绘图属性数据绘制树状调用图包括:
根据所述节点数组绘制所述函数节点;以及
根据所述连接对象数组绘制所述函数节点之间的连接边。
可选地,所述软件函数调用行为数据来自于在沙箱中运行的恶意软件。
可选地,还包括:将所述节点数组中的每个函数节点的函数名与敏感函数库进行对比,以判断该函数是否为敏感函数,并据此为每个函数节点添加一个相应的布尔属性;则在所述根据所述节点数组绘制函数节点的步骤中,采用不同颜色区分敏感函数和非敏感函数。
可选地,在所述根据所述节点数组绘制函数节点的步骤中,将所述函数节点绘制为圆角矩形,并在圆角矩形中绘制圆环图,以表征函数的参数个数和参数的带污点状况,并且,圆环个数表示参数个数,圆环的颜色表征参数的带污点状况。
可选地,在所述根据所述节点数组绘制函数节点的步骤中,还包括以下步骤中的至少一项:
通过在圆环中填充颜色所占的角度以表征带污点的调用次数在调用总次数中的占比情况;
通过圆环的模糊度表征函数调用的周期性。
可选地,还包括:判断所述连接对象数组中的每一条连接边是否存在污点传播路径,如果是,则为该连接边添加一个相应的布尔属性,则在所述根据所述连接对象数组绘制函数节点之间的连接边的步骤中,如果给定连接边存在污点传播路径,则在调用函数和被调用函数的两个参数对应的两个圆环的圆心之间绘制一条线段,该线段的颜色与圆环颜色一致。
可选地,所述函数节点之间的连接边的连线的粗细表征对应调用出现的次数。
可选地,还包括:对所述树状调用图进行简化,以获得简化后的树状调用图。
根据本公开的第二方面,提供一种软件函数调用行为数据的处理装置,包括:
数据获取单元,用于获取以序列化数据表征的软件函数调用行为数据;
格式转换单元,用于将所述软件函数调用行为数据从序列化数据转换为层次化结构数据;
模拟布局单元,用于在二维平面上基于所述层次化结构数据进行树形布局,以获得绘图属性数据;
图形绘制单元,用于根据所述绘图属性数据绘制树状调用图,其中,根据函数被调用的先后顺序将函数节点放置在所述树状调用图的不同层级上,并通过函数节点之间的连接线表征函数调用。
根据本公开的第三方面,提供一种计算设备,包括存储器和处理器,所述存储器还存储有可由所述处理器执行的计算机指令,所述计算机指令被执行时,实现上述任一项所述的处理方法。
根据本公开的第四方面,提供一种计算机可读介质,所述计算机可读介质存储有可由电子设备执行的计算机指令,所述计算机指令被执行时,实现上述任一项所述的处理方法。
本公开实施例基于层次树设计了一种软件函数调用行为数据的处理方法,根据函数被调用的先后将函数节点放置在树状调用图的不同层级上,并通过函数节点之间的连接线唯一表征对应的函数调用,树状层次结构能够有效地避免相互交错的调用节点和调用边,增强可读性,还能清晰地显示出完整的调用链路。与此同时,还在每个节点中展示函数的参数信息,绘制出带污点参数在函数调用过程中的传递情况,并突出敏感函数以吸引分析人员的关注,提高分析效率。因而,根据本公开实施例构建的树状调用图具有以下优点:(1)清晰地显示出软件中的函数调用行为,帮助安全人员追溯从根节点到叶子节点的完整函数调用链路;(2)显示每个函数的相关参数信息,展示出带污点参数的传递路径;(3)简化全局模式下的层次树,强调敏感函数的调用路径,弱化非污点传递路径,增加可读性;(4)配合可视化交互技术,帮助安全人员发现软件中的频繁调用、周期性调用等。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本公开实施例提供的软件函数调用行为数据的处理方法的流程图;
图2示出了图1中的步骤S12的一个具体实施例的流程图;
图3是本公开实施例提供的一种软件函数调用行为数据的处理装置的结构示意图;
图4是用于实施本公开实施例的计算设备的结构示意图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
本公开实施例涉及以下术语:
恶意软件(又称为恶意文件)是任何旨在损害或利用任何可编程设备、服务或网络的恶意软件的统称,包括webshell文件、二进制文件和恶意脚本等。网络攻击者通常使用恶意软件来窃取数据或破坏计算机系统。以webshell为例,它是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。然而webshell也会被网络攻击者用作后门程序,从而达到远程控制服务器,执行恶意操作的目的(如进行非法提权、数据盗窃、病毒传播等)。
敏感函数:容易造成数据完整性或保密性泄露的函数,如执行外部命令函数exec、泻出内存函数leak、更改进程优先级函数proc_nice等。在安全审计中,快速定位敏感函数,有助于帮助安全人员更快发现漏洞。
污点:污点分析作为信息流分析的一种实践技术,通过将程序中的某些外部输入数据或敏感数据标记为污点(表示已污染),继而跟踪污点标记随数据间依赖关系在程序中的传播,检查污点数据是否被传入了某些敏感函数等,以检测软件安全问题。
沙箱:沙箱是一个虚拟系统程序,允许用户在独立作业环境中运行浏览器或其他程序。在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。本说明书中的沙箱用于运行恶意软件,并获取软件的函数调用序列数据和污点传播数据。
图1是本公开实施例提供的恶意软件的函数调用行为的可视化方法的流程图。图中包括以下步骤。
步骤S11用于获取以序列化数据表征的软件函数调用行为数据,所述序列化数据由多个数据项组成,每个数据项表征一次函数调用。
对于步骤S11,将序列化数据表征为S={s1,s2,...,sn},则每个数据项si(1≤i≤n)采用6个单值属性和2个多值属性来表征对应的函数调用。单值属性包括:采用摘要算法计算得到的文件摘要(file_md5)、调用索引(index)、被调用函数(callee)及其调用者(caller)、参数个数(argc)和返回值(return),其中,通过文件摘要和调用索引,可以确定一个唯一的函数调用行为。多值属性包括被调用函数的参数情况(argv),且在软件函数调用行为数据来自于恶意软件时,多值属性还包括参数带污点状况(taint),多值属性可保存在长度为k的数组中,k与参数个数保持一致。例如,参数数组中的每个元素以[参数索引,形参,实参]的形式记录参数情况,污点数组中的每个元素都以整数序号的形式记录参数带污点状况,其中,整数序号表示对应位置上的污点标记类型,零值表示对应位置的参数没有被标记上。
表格1是作为样本的序列化数据的示例表。表格1中的三条数据样例是文件md5为“8d23f3d3f678d3e620b91c2115e1f714”的样本中的三条函数调用记录,被main调用的preg_match有2个参数,第1个参数的形参为“pattern”,实参为“~^(unsafe_raw)?$~”;第2个参数的形参为“subject”,实参为“unsafe_raw”,两个参数均不带有污点。被main调用的redirect,其参数带有130号类型的污点,被redirect调用的header,其参数带有与redirect同样类型的污点,说明存在一条从redirect到header的污点传播路径。
表格1沙箱样本数据示例表
步骤S12是将序列化数据转换为层次化结构数据。
参考表格1,基于步骤S11得到的序列化数据的“有序”体现在index字段,表示函数调用的先后次序;“有向”体现在函数调用行为中,caller字段为调用函数的名称,callee字段为被函数调用的名称。但是序列化数据无法有效地展示函数调用行为的先后次序和方向性,因此要将序列化数据转换为层次化结构数据,层次化结构数据具有层级性的特点,能直观地展示函数之间的调用和被调用关系。任意一个表征函数调用行为的层次化结构数据,如果有N个层级,则第1层级只有main函数,即程序的入口,该函数不会被调用,只存在调用其它函数的情况,即main函数成为层次化结构数据的根节点。第2层级至第N层级,例如如果main函数调用了a函数,a调用了b,b调用了c,那么c为第4层级的节点,而b为第3层级的节点,a为第2层级的节点。
为了更直观地理解层次化结构数据,下面从一个示例性的层次化结构数据截取如下部分。
从以上内容用户可以直观地看出,main函数调用函数zend_compile_file函数zend_compile_file和s,函数s的记录中调用了函数zend_fetch_func_arg_session。
对于步骤S12,图2示出了一个具体实施例的流程图。具体包括以下子步骤。
在子步骤S121中,遍历序列化数据,以得到各个包含在序列化数据中的周期性调用序列,并记录每个周期性调用序列的长度和周期数目,从而得到新的序列化数据,该新的序列化数据不仅包含原序列化数据,并且包含了隐含在序列化数据中的周期性调用序列的信息。
继续以上文中的序列化数据S为例。首先对序列化数据S按照index进行升序排序,并为每条记录增加两个新属性:周期序列长度和周期数目,将每条记录的周期序列长度和周期数目初始化为0,如此得到一个新的序列化数据S’={s’1,s’2,...,s’n}。然后,遍历S’,将每一条调用记录s’i中的调用函数和被调用函数记作一条调用边link1i,并将link1i(1≤i≤n)组成数组array。基于滑动窗口的思想,遍历array中的每一个调用边link1i(1≤i≤n),当查找到的[link1i+1,link1i+1+x]与[link1i-x,link1i]完全相等时,即认为出现了长度为x的周期性调用序列,根据找到的周期性调用序列,更新S’中相应记录的周期序列长度和周期数目。
在子步骤S121中,基于新的序列化数据,构建层次化结构数据。
具体地,首先构建初始化集合Edge_set,用于记录所有调用边对象。然后遍历上一子步骤得到的S’,将不同的调用边对象添加到Edge_set中,并记录每个调用边的总调用次数、相应的调用索引、被调用函数的参数个数、参数带污点状况(带污点的次数、调用索引、污点类型)等。再然后,以程序的入口main函数作为根节点,对Edge_set进行广度遍历,生成层次化结构数据Hierarchy_data。如,首先将main放置在最外层,由main直接调用的函数作为main函数的子节点,以此类推,完成递归。
步骤S13是在二维平面上基于层次化结构数据进行树形布局,以获得绘图属性数据,所述绘图属性数据用于决定在二维平面上绘制各个函数节点以及各个函数节点之间的连接边的方法。
具体来说,首先,生成一个节点数组Tree_node,用于记录各个函数节点的大小、间隔和位置等信息。在树形布局中,根据每个函数带有的参数个数与函数所在的层级,计算节点的大小、间隔与位置:将父子节点放置在上下相邻的位置,将兄弟节点放置到左右相邻的位置;并根据函数中参数的数量来控制函数节点之间的水平间隔(tree.separation),通过线性关系的比例尺为参数多的节点设置更大的间隔,避免在绘制时产生节点重叠现象,并且同时记录各个函数节点的双亲节点和孩子节点数组、节点的深度、函数节点所对应函数的名称、参数个数、参数带污点状况等信息。其中根节点所对应的main函数没有双亲节点、参数个数、参数带污点状况等信息,而叶子节点没有孩子节点的信息。
在一些实施例中,还包括:将节点数组Tree_node中每个函数节点的函数名与敏感函数库进行对比,判断该函数是否为敏感函数,并据此为每个函数节点添加一个相应的布尔属性。
然后根据节点数组Tree_node,生成一个表示从双亲节点到每一个孩子节点的连接对象数组Tree_link。其中每一个连接对象中记录双亲节点(即调用函数)、孩子节点(即被调用函数)。
在一些实施例中,还包括:判断Tree_link中的每一条连接边中是否存在污点传播路径。如果一条连接边中的被调用函数的参数与调用函数的参数中均存在污点,而且污点类型相同,则认为存在一条污点传播路径,并为该连接边添加一个相应的布尔属性。
步骤S14根据绘图属性数据绘制树状调用图。其中,根据函数被调用的先后将函数节点放置在树状调用图的不同层级上,并通过将相同函数节点的调用合并到同一连接线,以实现函数节点之间的连接线唯一表征对应的函数调用。
具体地,首先根据上一步骤得到的Tree_node数据,绘制函数节点。每一个函数节点都用圆角矩形表示,并将敏感函数对应的矩形填充为蓝色,以提醒安全人员关注。然后在圆角矩形中绘制圆环图,以表征函数的参数个数和参数的带污点状况。其中圆环个数表示参数个数,圆环的颜色表征参数的带污点状况。例如白色填充的圆环表示该参数不存在污点标记,而彩色填充的圆环表示该参数被污点标记了。示例性的不同的颜色映射不同类型的污点如下所示:
d3.scale.ordinal()
.domain(["130","132","129","134","135","131","133","136","137"])
.range(["#FFA500","#4682B4","#B22222","#8B008B","#FF00FF","#FFFF00","#9966FF","#996600","#CCFFFF"])。
此外,由于一个函数并非会在所有的相同调用中都出现污点标记,因此可利用饼图的思想,圆环中填充颜色所占的角度表征带污点的调用次数在调用总次数中的占比情况。例如,main函数对explode函数的调用出现了两次,index分别为60和61,污点字段分别为[0,134],[0,0]。说明只有在index为60的调用中,explode函数的第二个参数命中134号污点,因此为代表第二个参数的圆环填充颜色"#8B008B",填充角度为180度以表示带污点的调用次数在该调用总次数中的占比为50%,并添加交互功能方便用户查看详细情况。再有还可以使用圆环的模糊度表征函数调用的周期性,模糊度越高代表周期数目越大。
然后根据上一步骤得到的Tree_link数据,绘制圆角矩形之间的连接边,以表示调用关系。连接边的上层函数为调用函数,连接边的下层函数为被调用函数,连接边的粗细表征对应调用出现的次数。
最后根据Tree_link数据中对应的污点链路属性,绘制污点传播路径。如果被调用函数和调用函数的参数中存在污点传播路径,就在两个相应参数圆环的圆心中绘制一条线段,颜色与污点颜色保持一致。
在一些实施例中,当样本存在大量调用关系、涉及多个函数时,树状调用图可能会出现宽度非常大,可读性不高的问题。因此进一步可将树状调用图进行简化。具体来说,既可根据绘图属性数据绘制简化的树状调用图,也可在步骤S14的基础上通过隐藏图层等手段来获得简化的树状调用图。在获得简化的调用图之前,可制定简化规则,例如,由于对恶意软件进行检测的一种较快方法是搜索一些敏感函数并检查它们的参数等,所以可基于敏感函数与污点的层次树简化方法,在设计时弱化非污点调用路径,强调敏感函数等。
在一些实施例中,可向用户提供两种树图模式:“全景”模式和“简化”模式,“全景”模式展示所有函数之间的调用关系,而“简化”模式则只展示敏感函数节点与它们的祖先节点、带污点标记的函数节点与它们的祖先节点,以及这些节点之间的连接边,例如,如果在一条从根节点到叶子节点的完整调用链路中,存在敏感函数节点或者带污点参数的节点,就保留这条连接边。
图3是本公开实施例提供的一种软件函数调用行为数据的处理装置的结构示意图。该装置包括数据获取单元301、格式转换单元302、模拟布局单元303和图形绘制单元304。
数据获取单元301用于获取以序列化数据表征的软件函数调用行为数据。
格式转换单元302用于将软件函数调用行为数据从序列化数据转换为层次化结构数据。
模拟布局单元303用于在二维平面上基于层次化结构数据进行树形布局,以获得绘图属性数据。
图形绘制单元304用于根据绘图属性数据绘制树状调用图,并且,图形绘制单元304根据函数被调用的先后将函数节点放置在所述树状调用图的不同层级上,并合并相同函数调用的连接边,以实现通过函数节点之间的连接线唯一表征对应的函数调用。
关于该装置的细节实施例,可参考上文关于本公开实施例提供的一种软件函数调用行为数据的处理方法的相关描述,这里就不再重复。
综上,本公开实施例提供的软件函数调用行为数据的处理方法,根据函数被调用的先后将函数节点绘制在树形图的不同层级上,并将周期性调用序列绘制为树形调用图的相同连接边,并通过连接边的形状、颜色等等属性来展示周期性调用。与此同时,在树状调用图中的每个节点中绘制对应函数的参数信息,并且在树状调用图绘制带污点参数在函数调用过程中的传递情况。因而,基于上述实施例得到的树状调用图具有以下优点:(1)清晰地显示出软件的调用行为,帮助安全人员追溯从根节点到叶子节点的完整函数调用链路;(2)显示每个函数的相关参数信息,展示出带污点参数的传递路径;(3)简化全局模式下的层次树,强调敏感函数的调用路径,弱化非污点传递路径,增加可读性;(4)配合可视化交互技术,帮助安全人员发现软件中的频繁调用、周期性调用等。
图4是用于实施本公开实施例的计算设备的结构示意图。如图4所示,计算设备600以通用计算设备的形式表现。计算设备600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630。
其中,所述存储单元存储有程序代码,例如图1所示的方法实现的程序代码。所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行相应功能,例如处理单元601通过执行程序代码获得某个恶意软件的序列化数据并经过一系列处理后输出该恶意软件的树状调用图。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
计算设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该计算设备600交互的设备通信,和/或与使得该计算设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,计算设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与计算设备600的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例描述的方法。
根据本公开的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (12)
1.一种软件函数调用行为数据的处理方法,包括:
获取以序列化数据表征的软件函数调用行为数据;
将所述软件函数调用行为数据从序列化数据转换为层次化结构数据;
在二维平面上基于所述层次化结构数据进行树形布局,以获得绘图属性数据;以及
根据所述绘图属性数据绘制树状调用图,其中,根据函数被调用的先后顺序将函数节点放置在所述树状调用图的不同层级上,并通过函数节点之间的连接线唯一表征对应的函数调用。
2.根据权利要求1所述的处理方法,其中,所述绘图属性数据包括节点数组和连接对象数组,所述节点数组用于记录每个函数节点的属性信息,所述连接对象数组用于记录函数节点之间的连接边的属性信息,则所述根据所述绘图属性数据绘制树状调用图包括:
根据所述节点数组绘制所述函数节点;以及
根据所述连接对象数组绘制所述函数节点之间的连接边。
3.根据权利要求2所述的处理方法,其中,所述软件函数调用行为数据来自于在沙箱中运行的恶意软件。
4.根据权利要求3所述的处理方法,还包括:将所述节点数组中的每个函数节点的函数名与敏感函数库进行对比,以判断该函数是否为敏感函数,并据此为每个函数节点添加一个相应的布尔属性;则在所述根据所述节点数组绘制函数节点的步骤中,采用不同颜色区分敏感函数和非敏感函数。
5.根据权利要求3所述的处理方法,其中,在所述根据所述节点数组绘制函数节点的步骤中,将所述函数节点绘制为圆角矩形,并在圆角矩形中绘制圆环图,以表征函数的参数个数和参数的带污点状况,并且,圆环个数表示参数个数,圆环的颜色表征参数的带污点状况。
6.根据权利要求5所述的处理方法,其中,在所述根据所述节点数组绘制函数节点的步骤中,还包括以下步骤中的至少一项:
通过在圆环中填充颜色所占的角度以表征带污点的调用次数在调用总次数中的占比情况;
通过圆环的模糊度表征函数调用的周期性。
7.根据权利要求3所述的处理方法,还包括:判断所述连接对象数组中的每一条连接边是否存在污点传播路径,如果是,则为该连接边添加一个相应的布尔属性,则在所述根据所述连接对象数组绘制函数节点之间的连接边的步骤中,如果给定连接边存在污点传播路径,则在调用函数和被调用函数的两个参数对应的两个圆环的圆心之间绘制一条线段,该线段的颜色与圆环颜色一致。
8.根据权利要求2所述的处理方法,其中,所述函数节点之间的连接边的连线的粗细表征对应调用出现的次数。
9.根据权利要求1所述的处理方法,还包括:对所述树状调用图进行简化,以获得简化后的树状调用图。
10.一种软件函数调用行为数据的处理装置,包括:
数据获取单元,用于获取以序列化数据表征的软件函数调用行为数据;
格式转换单元,用于将所述软件函数调用行为数据从序列化数据转换为层次化结构数据;
模拟布局单元,用于在二维平面上基于所述层次化结构数据进行树形布局,以获得绘图属性数据;
图形绘制单元,用于根据所述绘图属性数据绘制树状调用图,其中,根据函数被调用的先后顺序将函数节点放置在所述树状调用图的不同层级上,并通过函数节点之间的连接线唯一表征对应的函数调用。
11.一种计算设备,包括存储器和处理器,所述存储器还存储有可由所述处理器执行的计算机指令,所述计算机指令被执行时,实现如权利要求1至9任一项所述的处理方法。
12.一种计算机可读介质,所述计算机可读介质存储有可由电子设备执行的计算机指令,所述计算机指令被执行时,实现如权利要求1至9任一项所述的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210201647.5A CN114637992A (zh) | 2022-03-03 | 2022-03-03 | 软件函数调用行为数据的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210201647.5A CN114637992A (zh) | 2022-03-03 | 2022-03-03 | 软件函数调用行为数据的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114637992A true CN114637992A (zh) | 2022-06-17 |
Family
ID=81947095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210201647.5A Pending CN114637992A (zh) | 2022-03-03 | 2022-03-03 | 软件函数调用行为数据的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114637992A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117235712A (zh) * | 2023-11-14 | 2023-12-15 | 北京网藤科技有限公司 | 一种沙箱检测勒索病毒的方法及系统 |
-
2022
- 2022-03-03 CN CN202210201647.5A patent/CN114637992A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117235712A (zh) * | 2023-11-14 | 2023-12-15 | 北京网藤科技有限公司 | 一种沙箱检测勒索病毒的方法及系统 |
CN117235712B (zh) * | 2023-11-14 | 2024-02-02 | 北京网藤科技有限公司 | 一种沙箱检测勒索病毒的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426723B (zh) | 使用释放后内存的检测方法、系统、设备及存储介质 | |
US20210149788A1 (en) | Software diagnosis using transparent decompilation | |
US9792443B1 (en) | Position analysis of source code vulnerabilities | |
Tonella | Using a concept lattice of decomposition slices for program understanding and impact analysis | |
US11947933B2 (en) | Contextual assistance and interactive documentation | |
Jensen et al. | Modeling the HTML DOM and browser API in static analysis of JavaScript web applications | |
US8850581B2 (en) | Identification of malware detection signature candidate code | |
US7849509B2 (en) | Detection of security vulnerabilities in computer programs | |
US10380349B2 (en) | Security analysis using relational abstraction of data structures | |
US11983094B2 (en) | Software diagnostic context selection and use | |
US11650905B2 (en) | Testing source code changes | |
US9507943B1 (en) | Analysis tool for data security | |
Karim et al. | An analysis of the mozilla jetpack extension framework | |
Thung et al. | To what extent could we detect field defects? An extended empirical study of false negatives in static bug-finding tools | |
Padmanabhuni et al. | Auditing buffer overflow vulnerabilities using hybrid static–dynamic analysis | |
Bergel et al. | Execution profiling blueprints | |
CN115659335A (zh) | 基于混合模糊测试的区块链智能合约漏洞检测方法及装置 | |
CN114637992A (zh) | 软件函数调用行为数据的处理方法及装置 | |
Perez et al. | Framing program comprehension as fault localization | |
Beksultanova et al. | Analysis tools for smart contract security | |
US9355355B2 (en) | Rule based automation | |
Yu et al. | State consistency checking for non-reentrant function based on taint assisted symbol execution | |
Tian et al. | Bbreglocator: A vulnerability detection system based on bounding box regression | |
US20240192837A1 (en) | Detecting keyboard accessibility issues in web applications | |
US11886648B2 (en) | Detecting keyboard accessibility issues in web applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |