[发明专利]一种面向动态分析的源代码插桩改进方法有效
| 申请号: | 202010539967.2 | 申请日: | 2020-06-15 |
| 公开(公告)号: | CN111736846B | 公开(公告)日: | 2021-06-22 |
| 发明(设计)人: | 陈哲;王冲;孙小祥 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 施昊 |
| 地址: | 210016 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 面向 动态 分析 源代码 改进 方法 | ||
本发明公开了一种面向动态分析的源代码插桩改进方法,包括对多文件项目、无长度数组和匿名结构体的源代码插桩方法,并通过编译、执行插桩后的程序实现对程序执行过程的动态分析。相比于现有技术,本发明能够克服常规源代码插桩方法在对多文件项目和复杂语法结构进行插桩时存在的问题,从而实现对源代码的正确插桩,并通过编译、执行插桩后的程序实现对程序执行过程的动态分析,提高软件的可靠性和安全性。
技术领域
本发明属于计算机软件领域,特别涉及了一种源代码插桩改进方法。
背景技术
随着信息科技的发展,计算机软件逐渐渗透到人类生活的方方面面,如交通出行、教育、医疗、航空、航天、国防等领域,而软件故障所造成的后果也越来越不容忽视。尤其对于安全关键软件,一个小的软件错误就可能带来不可估量的损失,甚至导致致命的后果。例如:Mydoom病毒的传播导致了大量个人数据的泄露,并造成了380亿美元的损失,而该病毒的传播仅仅是利用系统bug在操作系统中开了一个后门实现的,即让未经授权的用户可以访问别人的个人数据;阿丽亚娜5号的发射失败造成了近85亿美元的损失,而导致失败的原因仅仅是系统软件试图将一个64位的数字塞入16位的空间而产生的溢出。因此,人们越来越多地关注和重视软件的可靠性和安全性。
由于C语言接近底层硬件、运行速度快、执行效率高、可移植性强,一些对性能要求较高的软件系统,如底层的操作系统、嵌入式软件以及复杂的计算软件等,都采用C语言编写。但是,由于C语言本身可以直接对内存操作,且没有对访问内存等操作进行安全检查,导致使用C语言编写的程序可能出现较为严重的内存安全错误。常见的内存安全错误有空间内存错误如缓冲区溢出、越界访问等,以及时间内存错误如空指针解引用等。这些错误容易导致程序失效或崩溃,或者被人利用进行网络攻击。对于一些安全性极高的医疗、航空、航天、国防等系统,一个小的软件错误可能会给人的生命和财产安全带来严重的危害,因此对于C程序内存安全性的检测是非常重要的。
动态分析是对C程序内存安全性进行检测的主流方法之一。基于指针的动态分析方法的主要思想是:为指针变量创建一个指针元数据,用来记录该指针变量所指向内存块的下界、上界和有效状态等信息;当指针变量赋值或者作为函数参数传递时,更新这个指针变量的指针元数据;在指针变量解引用时,根据指针元数据记录的信息来检测是否存在内存错误,例如被访问的内存块是否在下界和上界之间、是否处于有效状态等。
为了在运行时实现对C程序内存安全性的动态分析,要求首先在编译时对C程序的代码进行插桩,即插入用于运行时检测的代码段。常见的插桩方法包括对程序的中间代码或二进制代码进行插桩。但是这些插桩方法会导致插桩后的代码无法被优化,程序的运行效率较低。这些插桩方法还会导致优化敏感,也就是说,当编译优化等级过高时,可能无法正确检测到程序中的内存错误。
源代码插桩可以很好地解决以上中间代码插桩和二进制代码插桩中存在的问题。但是,由于C程序项目通常由多个源文件组成,且每个源文件使用不同的编译选项、具有不同的依赖关系,经常导致插桩后的源代码无法被正确编译或者无法被正确运行。此外,C语言中一些复杂的语法结构也经常被不正确地处理,导致插桩错误。因此,需要对常规的源代码插桩方法进行改进。
发明内容
为了解决上述背景技术提到的技术问题,本发明提出了一种面向动态分析的源代码插桩改进方法。
为了实现上述技术目的,本发明的技术方案为:
一种面向动态分析的源代码插桩改进方法,包括对多文件项目、无长度数组和匿名结构体的源代码插桩方法,并通过编译、执行插桩后的程序实现对程序执行过程的动态分析;对多文件项目的源代码插桩方法包括如下步骤:
(1)构造编译数据库,编译数据库为文件或数据库记录的形式,记录了编译器对每个源文件进行编译所使用的编译命令,其中包含了编译所需的全部要素,包括每个源文件对应的执行编译命令的工作目录路径、源文件的相对路径和编译选项;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010539967.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种烘焙用智能化节能发酵房
- 下一篇:竞速游戏的信息控制方法、装置和电子设备





