[发明专利]过程间静态程序分析信息提取方法、装置及设备有效
申请号: | 201711423522.2 | 申请日: | 2017-12-25 |
公开(公告)号: | CN108132799B | 公开(公告)日: | 2021-03-16 |
发明(设计)人: | 衷璐洁;莫培弘 | 申请(专利权)人: | 首都师范大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 宋扬;刘芳 |
地址: | 100048*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 过程 静态 程序 分析 信息 提取 方法 装置 设备 | ||
本发明实施例提供一种过程间静态程序分析信息提取方法、装置及设备,其中,该方法包括:遍历LLVM IR文件中的指令;基于br指令和ret指令,提取过程内程序分析信息;确定LLVM IR文件中的call指令是否是函数指针相关的call指令;其中,若不是,则从call指令中提取直接函数调用的信息;若是,则,根据call指令之前的store指令及load指令,提取call指令中函数指针的指向信息;在遍历结束后,基于提取到的过程内程序分析信息,以及所有直接函数调用的信息和函数指针的指向信息,生成过程间静态程序分析信息。从而解决了静态程序分析中函数指针指向信息获取不够准确的问题。
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种过程间静态程序分析信息提取方法、装置及设备。
背景技术
现代软件系统的复杂性越来越突出,程序的规模也越来越大,难以直观地了解程序的编码逻辑结构。过程间信息以及过程内信息能够反映软件系统中的程序编码逻辑,在对程序的理解和分析、软件的测试、调试和维护、编译优化、错误定位、程序错误(bug)查找、过程间数据流分析、回溯测试等软件工程领域中都有着广泛的应用,完整的过程间信息和过程内信息更好地辅助程序验证和程序调试,提高程序分析的质量。
现有技术中,Source Insight是一个项目向导的程序编辑器和代码浏览器,具有对引用树、类继承图和调用树等程序分析信息的可视化支持,并可以生成函数调用图。CodeViz是一个C源码静态分析工具,针对C程序生成可视化的函数调用图,通过给GCC打补丁,在编译源文件时dump出函数调用信息,再通过Perl脚本提取函数调用信息。Cflow是一个C源码程序静态分析工具,它可以产生前向和反向的两种函数调用图,直接对源码进行分析,生成一个C程序的函数调用信息的外部引用集合。CallTree是一个C源码静态调用树生成器,通过分析C源码,提取函数调用信息。这些方法和技术均不能获取函数指针指向的信息,存在函数调用信息获取不够完善的问题:Source Insight和CodeViz不能获取函数指针指向的信息;CallTree不能获取函数指针指向的真实信息;CodeViz、CallTree以及Cflow不能完善地处理库函数调用信息。
发明内容
本发明实施例提供一种过程间静态程序分析信息提取方法、装置及设备,用以解决静态程序分析中函数指针指向信息获取不够准确的问题。
本发明实施例第一方面提供一种过程间静态程序分析信息提取方法,该方法包括:
遍历LLVM IR文件中的指令;
基于所述LLVM IR文件中的br指令和ret指令,从所述LLVM IR文件中提取过程内程序分析信息;
确定所述LLVM IR文件中的call指令是否是函数指针相关的call指令;
其中,若不是,则从所述call指令中提取直接函数调用的信息;
若是,则,根据所述call指令之前的store指令及load指令,提取所述call指令中函数指针的指向信息;
在遍历结束后,基于提取到的过程内程序分析信息,以及所有直接函数调用的信息和函数指针的指向信息,生成过程间静态程序分析信息。
可选的,所述从所述call指令中提取直接函数调用的信息,包括:
将所述call指令中的函数的名称与预先存储的库函数名称进行匹配;
其中,若匹配,则提取所述call指令的库函数直接调用信息;
若不匹配,则提取所述call指令的一般函数直接调用信息,其中一般函数直接调用是指库函数以外的其他函数的直接调用。
可选的,所述根据所述call指令之前的store指令及load指令,提取所述call指令中函数指针的指向信息,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于首都师范大学,未经首都师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711423522.2/2.html,转载请声明来源钻瓜专利网。