[发明专利]一种基于中间语言和污点分析的软件数据流分析方法有效
申请号: | 201811156016.6 | 申请日: | 2018-09-30 |
公开(公告)号: | CN109324971B | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 喻波;杨强;乐泰;唐勇;解炜;周旭;罗艳 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/56 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 周长清 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 中间 语言 污点 分析 软件 数据流 方法 | ||
1.一种基于中间语言和污点分析的软件数据流分析方法,其特征在于,步骤包括:
步骤S1:定义指令格式和表达式格式;统一描述中间语言的通用指令类型,构建了临时变量表达式、寄存器表达式和污点标记表达式,用于污点分析过程中的数据表示;
步骤S2:构建基于中间语言的污点传播规则,污点标记用taint_label表示;
步骤S3:基于中间语言的程序数据流动态跟踪分析流程;
步骤S4:当程序执行过程中,通过基于跟踪的污点信息来构建污点源与全局变量TG、局部变量TL、系统调用函数参数TF之间的数据流关系。
2.根据权利要求1所述的基于中间语言和污点分析的软件数据流分析方法,其特征在于,所述步骤S1包括为:
S101:中间语言通用指令格式表示;
算数指令和移位指令类:减法指令Sub、加法指令Add、逻辑右移指令Sar、逻辑左移指令Shl、或指令Or;
内存访问类:内存读指令Load和内存写指令Store;
寄存器操作类:写寄存器指令Put、读寄存器指令Get;
比较类:比较指令Cmp;
分支类:条件分支IF-THEN-ELSE指令;
数据数据位宽转换类:16位转32位指令16Uto32、8位转32位指令8Uto32、1位转32位1Uto32、32位转1位指令32to1;
用PC表示当前执行指令的地址;
步骤S102:污点信息记录表达式格式表示;
存储表达式记录表:用STOREREC表示,用于记录内存地址读写记录;
栈底指针记录表:用BPREC表示,用于在使用栈式函数调用代码分析中保存栈底指针,辅助进行函数调用过程中的传入参数和调用者接收参数的判定;BPREC是栈式结构,Peek表示取栈上的最后一个元素,Pop表示弹出栈上的最后一个元素,Push表示压入一个元素到该栈的最后;
栈顶指针记录表:用SPREC表示,用于在使用栈式函数调用代码分析中保存栈顶指针,辅助进行函数调用过程中的传入参数和传输参数的判定;SPREC也是栈式结构,Peek表示取栈上的最后一个元素,Pop表示弹出栈上的最后一个元素,Push表示压入一个元素到该栈的最后;
寄存器表达式:用REGREC表示,用于在污点跟踪过程中记录寄存器的读写,寄存器表达式记录表中对寄存器按照序号进行索引,该表中对一个寄存器只记录一个最新值;
临时变量表达式:用TMPREC表示,用于在污点跟踪过程中记录出内存读写和寄存器访问之外的其他临时性操作信息;
全局污点表:用GLOBALTAINTREC表示:用于在污点跟踪过程中记录全局的污点信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811156016.6/1.html,转载请声明来源钻瓜专利网。