[发明专利]一种基于中间语言分析的控制流完整性保护方法及系统有效
申请号: | 201711236825.3 | 申请日: | 2017-11-30 |
公开(公告)号: | CN107908955B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 金海;羌卫中;王世振 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F21/55;G06F8/41;G06F8/53 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 廖盈春;李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 中间 语言 分析 控制 完整性 保护 方法 系统 | ||
1.一种基于中间语言分析的控制流完整性保护方法,其特征在于,包括:
将源代码翻译成LLVM中间语言;
将二进制程序反汇编成LLVM中间语言,LLVM中间语言生成的二进制程序被执行时的跳转信息对应基于LLVM中间语言分析生成的控制流;
基于LLVM中间语言中函数的信息,生成调用点哈希值和被调用点的哈希值,所述调用点的哈希值和所述被调用点的哈希值相同;所述LLVM中间语言指的是来自源代码或二进制程序的LLVM中间语言;
将LLVM中间语言汇编为汇编代码,并将调用点哈希值和被调用点的哈希值插入汇编代码,生成可执行程序,所述调用点哈希值和被调用点的哈希值用于在所述可执行程序运行时检查其是否受到攻击;
当所述可执行程序受到攻击时,所述调用点哈希值和被调用点的哈希值将不匹配,所述控制流不完整,停止运行所述可执行程序。
2.根据权利要求1所述的基于中间语言分析的控制流完整性保护方法,其特征在于,所述将源代码翻译成LLVM中间语言,包括:
确定组成源代码的字符流,并将所述字符流组织成词素序列,对于每个词素产生对应的词法单元作为输出,所述词法单元的第一分量对应该词素的抽象符号,所述词法单元的第二分量指向符号表中关于这个词法单元的条目,所述符号表用于存放第一个分量相关的信息;
使用各个词法单元的第一个分量来创建树形的中间表示,所述树形的中间表示给出了所有词法单元的语法结构:抽象语法树;
使用抽象语法树和符号表中的信息来检查源代码是否和源代码所使用的编程语言定义的语义一致,若一致,则基于抽象语法树和符号表中信息生成LLVM中间语言。
3.根据权利要求1所述的基于中间语言分析的控制流完整性保护方法,其特征在于,所述将二进制程序反汇编成LLVM中间语言,包括:
反汇编二进制程序并生成控制流图CFG文件;
将CFG文件转化为LLVM中间语言。
4.根据权利要求1所述的基于中间语言分析的控制流完整性保护方法,其特征在于,LLVM中间语言中函数的信息包括:函数名、参数列表、函数返回类型和函数所属库。
5.一种基于中间语言分析的控制流完整性保护系统,其特征在于,包括:
源代码翻译模块,用于将源代码翻译成LLVM中间语言;
二进制反汇编模块,用于将二进制程序反汇编成LLVM中间语言,LLVM中间语言生成的二进制程序被执行时的跳转信息对应基于LLVM中间语言分析生成的控制流;
函数类型哈希值生成模块,用于基于LLVM中间语言中函数的信息,生成调用点哈希值和被调用点的哈希值,所述调用点的哈希值和所述被调用点的哈希值相同;所述LLVM中间语言指的是来自源代码或二进制程序的LLVM中间语言;
函数类型检查部署模块,用于将LLVM中间语言汇编为汇编代码,并将调用点哈希值和被调用点的哈希值插入汇编代码,生成可执行程序,所述调用点哈希值和被调用点的哈希值用于在所述可执行程序运行时检查其是否受到攻击;当所述可执行程序受到攻击时,所述调用点哈希值和被调用点的哈希值不匹配,所述控制流不完整,停止运行所述可执行程序。
6.根据权利要求5所述的基于中间语言分析的控制流完整性保护系统,其特征在于,所述源代码翻译模块,用于确定组成源代码的字符流,并将所述字符流组织成词素序列,对于每个词素产生对应的词法单元作为输出,所述词法单元的第一分量对应该词素的抽象符号,所述词法单元的第二分量指向符号表中关于这个词法单元的条目,所述符号表用于存放第一个分量相关的信息;使用各个词法单元的第一个分量来创建树形的中间表示,所述树形的中间表示给出了所有词法单元的语法结构:抽象语法树;使用抽象语法树和符号表中的信息来检查源代码是否和源代码所使用的编程语言定义的语义一致,若一致,则基于抽象语法树和符号表中信息生成LLVM中间语言。
7.根据权利要求5所述的基于中间语言分析的控制流完整性保护系统,其特征在于,所述二进制反汇编模块用于反汇编二进制程序并生成控制流图CFG文件;将CFG文件转化为LLVM中间语言。
8.根据权利要求5所述的基于中间语言分析的控制流完整性保护系统,其特征在于,LLVM中间语言中函数的信息包括:函数名、参数列表、函数返回类型和函数所属库。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711236825.3/1.html,转载请声明来源钻瓜专利网。