CN103942145B - 一种基于配对资源管理函数的自适应挖掘和分析方法 - Google Patents
一种基于配对资源管理函数的自适应挖掘和分析方法 Download PDFInfo
- Publication number
- CN103942145B CN103942145B CN201410150754.5A CN201410150754A CN103942145B CN 103942145 B CN103942145 B CN 103942145B CN 201410150754 A CN201410150754 A CN 201410150754A CN 103942145 B CN103942145 B CN 103942145B
- Authority
- CN
- China
- Prior art keywords
- function
- pairing
- processing path
- abnormality processing
- source code
- 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.)
- Active
Links
Abstract
本发明提供一种基于配对资源管理函数的自适应挖掘和分析方法,包括:S1:分离出源码使用接口函数;S2:根据控制流信息对接口函数按照正常执行和异常处理路径进行归类;S3:统计正常执行和异常处理路径中接口函数成对出现的频度;S4:根据所设定阈值过滤低频次不可信的配对函数;S5:根据过滤后的配对函数检测源码中的使用违例。本发明能够自动从源码中挖掘配对函数,并根据配对函数对源码进行检测。
Description
技术领域
本发明涉及计算机领域,具体涉及一种基于配对资源管理函数的自适应挖掘和分析方法。
背景技术
在计算机大型软件系统中,存在大量的函数使用规则,其中一大类即为两个函数针对同一资源执行相反的功能,在本方法中,称之为配对函数。由于大型软件文档的缺失,分工开发的人员众多等原因,使得该类软件中存在大量的违例和配对函数的使用相关。
配对函数作用在同一类资源上,并执行相关的功能,一般是接口提供者已经实现,一对配对函数中,一个完成资源的申请,另一个完成资源的释放,但是使用者仅关心功能的实现,可能对接口使用和规范不熟练,在异常处理中,对申请的资源没有及时释放,从而造成内核泄露、死锁等问题。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供一种基于配对资源管理函数的自适应挖掘和分析方法,能够自动从源码中挖掘配对函数,并根据配对函数对源码进行检测。
(二)技术方案
为了达到以上目的,本发明通过以下技术方案予以实现:
一种基于配对资源管理函数的自适应挖掘和分析方法,该方法包括:
S1:分离出源码使用接口函数;
S2:根据控制流信息对接口函数按照正常执行和异常处理路径进行归类;
S3:统计正常执行和异常处理路径中接口函数成对出现的频度;
S4:根据所设定阈值过滤低频次不可信的配对函数;
S5:根据配对函数检测源码中的使用违例。
优选地,所述源码使用接口函数包括:大型操作系统软件中提供给驱动程序使用的内核扩展函数接口,以及大型软件分层设计实现中为上层提供的资源管理接口。
优选地,步骤S2具体包括:根据函数返回值进行错误判定,发生错误时,调用的函数均为异常处理路径中的函数,而执行成功的函数则处于正常执行路径中。
优选地,步骤S3具体包括:对于正常执行路径和异常处理路径中的任意两个函数,若其函数参数存在关联性,统计成对出现的次数。
优选地,步骤S4具体包括:根据所设定的阈值对成对的函数进行过滤,低于或等于所设定阈值的函数被忽略,高于所设定阈值的函数被保留,并判定为配对函数。
优选地,步骤S5具体包括:根据挖掘和统计分析后所得的配对函数,对源码中的执行路径进行扫描,若正常路径中调用了配对函数之一,则检查在执行路径上的异常处理路径是否调用了对应的配对的另一个函数。
优选地,所述根据函数返回值进行错误判定,具体包括:若调用的接口函数返回相关的错误或者读取到输入的异常数据,则中断后续的执行。
优选地,所述参数存在关联性,具体包括:当两个函数作用于同一具体资源上时,两个函数参数和返回值存在关联性;在规范命名的大型软件中,两者函数名字存在关联性。
优选地,所述所设定的阈值具体包括频度参数、系统默认值以及根据统计结果计算的平均值。
优选地,任一所述配对函数包含两个函数,其中一个在正常执行路径中,另一个出现在与之对应的异常处理路径中,且两者执行相反的功能或操作。
优选地,所述输入的异常数据具体包括:外部环境、硬件或用户输入的异常数据,或者输入的数据进行运算后产生的异常数据。
(三)有益效果
本发明至少有如下有益效果:
本发明提供了一种基于配对资源管理函数的自适应挖掘和分析方法,能够自动地挖掘接口函数中的配对函数,并对源码进行规范检查,因此对接口函数的使用规范有着重要意义。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1为本发明实施例的一种基于配对资源管理函数的自适应挖掘和分析方法的流程图;
图2为本发明实施例的一个具体的挖掘和分析源码示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
如图1所示,本发明实施例提供了一种基于配对资源管理函数的自适应挖掘和分析方法,该方法包括如下步骤:
S1:分离出源码使用接口函数;
S2:根据控制流信息对接口函数按照正常执行和异常处理路径进行归类;
S3:统计正常执行和异常处理路径中接口函数成对出现的频度;
S4:根据阈值过滤低频次不可信的配对函数;
S5:根据过滤后的配对函数检测源码中的使用违例。
优选地,所述源码使用接口函数包括:大型操作系统软件中提供给驱动程序使用的内核扩展函数接口,以及大型软件分层设计实现中为上层提供的资源管理接口。
优选地,步骤S2具体包括:根据函数返回值进行错误判定,发生错误时,调用的函数均为异常处理路径中的函数,而执行成功的函数则处于正常执行路径中。
优选地,步骤S3具体包括:对于正常执行路径和异常处理路径中的任意两个函数,若其函数参数存在关联性,统计成对出现的次数。
优选地,步骤S4具体包括:根据所设定的阈值对成对的函数进行过滤,低于或等于所设定阈值的函数被忽略,高于所设定阈值的函数被保留,并判定为配对函数。
优选地,步骤S5具体包括:根据挖掘和统计分析后所得的配对函数,对源码中的执行路径进行扫描,若正常路径中调用了配对函数之一,则检查在执行路径上的异常处理路径是否调用了对应的配对的另一个函数。
优选地,所述根据函数返回值进行错误判定,具体包括:若调用的接口函数返回相关的错误或者读取到输入的异常数据,则中断后续的执行。
优选地,所述参数存在关联性,具体包括:当两个函数作用于同一具体资源上时,两个函数参数和返回值存在关联性;在规范命名的大型软件中,两者函数名字存在关联性。
优选地,所述所设定的阈值具体包括频度、系统默认值以及根据统计结果计算的平均值。
优选地,任一所述配对函数包含两个函数,其中一个在正常执行路径中,另一个出现在与之对应的异常处理路径中,且两者执行相反的功能或操作。
优选地,所述输入的异常数据具体包括:外部环境、硬件或用户输入的异常数据,或者输入的数据进行运算后产生的异常数据。
本发明实施例提供了一种基于配对资源管理函数的自适应挖掘和分析方法,能够自动地挖掘接口函数中的配对函数,并对源码进行规范检查,从而使得因此对接口函数的使用规范有着重要意义。
实施例2:
如图2所示,为本发明另一实施例提供的一种基于配对资源管理函数的自适应挖掘和分析方法,在该实施例中将结合操作系统的设备驱动源码,根据所述的挖掘和分析方法对该款驱动的检测过程进行具体阐述。
步骤101:分离出函数cp_init_one调用的函数,包括:alloc_etherdev、pci_enable_device、pci_set_mwi、pci_disable_device和free_netdev。
步骤102:根据控制流信息对接口函数按照正常执行和异常处理路径进行归类。由于存在多条可能的执行路径,为了简单,选择多条执行路径中的一条,其中包括正常执行和异常处理两类操作。如图2所示,在1889行出现错误,此时alloc_etherdev和pci_enable_device执行成功,位于正常执行路径中,并转入异常执行路径,包括pci_disable_device和free_netdev两个函数。
步骤103:针对操作系统的所有源码执行上述分析,统计(pci_enable_device,pci_disable_device)、(pci_enable_device,free_netdev)等的出现频度,由于前者在函数名字、参数等各个方面均符合配对迹象,以此类推(alloc_etherdev,free_netdev)。最终可以得出两对配对函数:(pci_enable_device,pci_disable_device)和(alloc_etherdev,free_netdev),这两对配对函数分别作用在同类资源上,前者完成设备激活和去激活,后者完成内存申请和释放。
步骤104:再次扫描所有的源码,若存在一个函数执行成功pci_enable_device,在其后续的错误处理路径中没有调用pci_disable_device,则视为找到一个使用违例。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种基于配对资源管理函数的自适应挖掘和分析方法,其特征在于,该方法包括:
S1:分离出源码使用接口函数;
S2:根据控制流信息对接口函数按照正常执行和异常处理路径进行归类;
S3:统计正常执行和异常处理路径中接口函数成对出现的频度;
S4:根据所设定阈值过滤低频次不可信的配对函数;
S5:根据过滤后的配对函数检测源码中的使用违例;
步骤S3具体包括:对于正常执行路径和异常处理路径中的任意两个函数,若其参数存在关联性,统计成对出现的次数;所述参数存在关联性,具体包括:当两个函数作用于同一具体资源上时,两个函数参数和返回值存在关联性;在规范命名的大型软件中,两者函数名字存在关联性;
其中,任一所述配对函数包含两个函数,其中一个在正常执行路径中,另一个出现在与之对应的异常处理路径中,且两者执行相反的功能或操作;
步骤S5具体包括:根据挖掘和统计分析后所得的配对函数,对源码中的执行路径进行扫描,若正常路径中调用了配对函数之一,则检查在执行路径上的异常处理路径是否调用了对应的配对的另一个函数;若存在一个函数执行成功,在其后续的异常处理路径中没有调用对应的配对的另一个函数,则视为找到一个使用违例。
2.根据权利要求1所述的方法,其特征在于,所述源码使用接口函数包括:大型操作系统软件中提供给驱动程序使用的内核扩展函数接口,以及大型软件分层设计实现中为上层提供的资源管理接口。
3.根据权利要求1所述的方法,其特征在于,步骤S2具体包括:根据函数返回值进行错误判定,发生错误时,调用的函数均为异常处理路径中的函数,而执行成功的函数则处于正常执行路径中。
4.根据权利要求1所述的方法,其特征在于,步骤S4具体包括:根据所设定的阈值对成对的函数进行过滤,低于或等于所设定阈值的函数被忽略,高于所设定阈值的函数被保留,并判定为配对函数。
5.根据权利要求3所述的方法,其特征在于,所述根据函数返回值进行错误判定,具体包括:若调用的接口函数返回相关的错误或者读取到输入的异常数据,则中断后续的执行。
6.根据权利要求4所述的方法,其特征在于,所述所设定的阈值具体包括频度、系统默认值以及根据统计结果计算的平均值。
7.根据权利要求5所述的方法,其特征在于,所述输入的异常数据具体包括:外部环境、硬件或用户输入的异常数据,或者输入的数据进行运算后产生的异常数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410150754.5A CN103942145B (zh) | 2014-04-15 | 2014-04-15 | 一种基于配对资源管理函数的自适应挖掘和分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410150754.5A CN103942145B (zh) | 2014-04-15 | 2014-04-15 | 一种基于配对资源管理函数的自适应挖掘和分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942145A CN103942145A (zh) | 2014-07-23 |
CN103942145B true CN103942145B (zh) | 2016-08-17 |
Family
ID=51189818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410150754.5A Active CN103942145B (zh) | 2014-04-15 | 2014-04-15 | 一种基于配对资源管理函数的自适应挖掘和分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103942145B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032918B (zh) * | 2018-05-31 | 2021-06-18 | 长安大学 | 一种基于异常任务函数轨迹的感知节点程序异常诊断方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605921A (zh) * | 2013-10-28 | 2014-02-26 | 清华大学 | 内核扩展安全访问方法及装置 |
CN102799520B (zh) * | 2012-06-27 | 2016-03-23 | 清华大学 | 用于源代码配对的静态检查方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7120901B2 (en) * | 2001-10-26 | 2006-10-10 | International Business Machines Corporation | Method and system for tracing and displaying execution of nested functions |
-
2014
- 2014-04-15 CN CN201410150754.5A patent/CN103942145B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799520B (zh) * | 2012-06-27 | 2016-03-23 | 清华大学 | 用于源代码配对的静态检查方法及装置 |
CN103605921A (zh) * | 2013-10-28 | 2014-02-26 | 清华大学 | 内核扩展安全访问方法及装置 |
Non-Patent Citations (1)
Title |
---|
面向驱动配置的自动日志插入方法研究;刘虎球 等;《计算机学报》;20131031;第36卷(第10期);第1982-1992页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103942145A (zh) | 2014-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036866B2 (en) | Systems and methods for optimizing control flow graphs for functional safety using fault tree analysis | |
US10320622B2 (en) | Policy declarations for cloud management system | |
CN102930206B (zh) | 病毒文件的聚类划分处理方法和装置 | |
CN107506663A (zh) | 基于可信bmc的服务器安全启动方法 | |
CN107590070B (zh) | 一种业务流程调试方法及装置 | |
CN105551550A (zh) | 一种核电厂智能化事故处理规程操作方法和系统 | |
CN110457029B (zh) | 一种基于scade基础算法块的逻辑组态图符配置方法 | |
CN105676808B (zh) | 一种工业控制系统逻辑断点调试功能的实现方法 | |
CN106354406A (zh) | 一种双屏手机控制方法及装置 | |
CN104391754B (zh) | 一种任务异常的处理方法及装置 | |
CN110866255A (zh) | 一种智能合约漏洞检测方法 | |
CN104252594A (zh) | 病毒检测方法和装置 | |
CN102156834A (zh) | 实现进程防杀的方法 | |
CN103942145B (zh) | 一种基于配对资源管理函数的自适应挖掘和分析方法 | |
CN105892994A (zh) | 一种移动机器人任务规划与执行异常情况处理方法及装置 | |
CN105718793A (zh) | 基于修改沙箱环境防止恶意代码识别沙箱的方法及系统 | |
EP3786800B1 (en) | Method and system for generating model driven applications using artificial intelligence | |
Fernández et al. | Visual modelling of complex systems: Towards an abstract machine for PORGY | |
CN106845235A (zh) | 一种基于机器学习方法的安卓平台回调函数检测方法 | |
CN106294137A (zh) | 一种linux用户态自旋锁死锁检测方法及系统 | |
CN103353930A (zh) | 一种防范感染式病毒感染的方法和装置 | |
CN102982282B (zh) | 程序漏洞的检测系统和方法 | |
CN109033821A (zh) | 一种栈溢出攻击防护系统及方法 | |
CN104346542B (zh) | 基于二进制程序的漏洞挖掘方法及装置 | |
WO2020027956A1 (en) | Listen mode for application operation whitelisting mechanisms |
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 |