[发明专利]一种基于LLVM的抵御内存泄露的系统及方法有效
申请号: | 201911198838.5 | 申请日: | 2019-11-29 |
公开(公告)号: | CN111027059B | 公开(公告)日: | 2022-07-19 |
发明(设计)人: | 傅建明;金睿 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F21/55 | 分类号: | G06F21/55 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 严彦 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 llvm 抵御 内存 泄露 系统 方法 | ||
1.一种基于LLVM的抵御内存泄漏的系统,其特征在于:包括代码蜜罐装置和数据蜜罐装置,
所述代码蜜罐装置,用于抵御基于代码指针的内存泄露攻击,包括在LLVM源文件编译为IR层代码后,识别出跨函数的跳转指令,在指令前插入条件判断指令,真实端指向该跳转指令,而后再创建跳转指令指向的函数或代码片段的副本,在条件判断虚假端创建指向该副本的蜜罐跳转指令,最后将该副本转移到受监控或不可执行的蜜罐区域,该转移到蜜罐区域的副本称为蜜罐副本;
所述数据蜜罐装置,用于识别易造成代码位置泄露的指令,包括程序的返回地址指令、函数指针生成指令、虚函数指针生成指令和异常处理指针生成指令,在这些指令前后插入与指针或地址相应的蜜罐副本的生成指令。
2.根据权利要求1所述基于LLVM的抵御内存泄漏的系统,其特征在于:所述代码蜜罐装置包括以下模块,
敏感点识别模块,用于在LLVM源文件编译为IR层代码后,识别跨函数的跳转指令,并记录指令;
蜜罐条件判断模块,用于根据敏感点识别模块所得结果,在每个敏感点前插入条件判断语句,将判断语句的真实端指向敏感点,虚假端将用来构造蜜罐陷阱;
蜜罐陷阱模块,用于根据蜜罐条件判断模块所得结果,为敏感点指向的函数或代码片段创建副本,并将判断模块的虚假端存入指向该副本的代码指针;
蜜罐存储模块,用于根据蜜罐陷阱模块所得结果,将所有副本函数或代码片段转移到受到监控的或不可执行的区域。
3.根据权利要求1所述基于LLVM的抵御内存泄漏的系统,其特征在于:所述数据蜜罐装置包括以下模块,
蜜罐返回地址模块,用于在代码蜜罐装置运行后,识别程序的函数调用指令,并将代码蜜罐装置生成的对应的蜜罐函数调用指令的目的地址在函数调用指令前压入栈中;
蜜罐函数指针模块,用于在代码蜜罐装置运行后,识别程序函数指针生成指令,并将代码蜜罐装置生成的对应的蜜罐函数指针在该函数指针生成指令附近以与该函数指针生成指令相同的方式生成;
蜜罐虚函数指针模块,用于在代码蜜罐装置运行后,识别程序的虚函数指针生成指令,并将代码蜜罐装置生成的对应的蜜罐虚函数指针在该虚函数指针生成指令附近以与虚函数指针同样方式生成;
蜜罐异常处理指针模块,用于在代码蜜罐装置运行后,识别程序的异常处理指针生成指令,并将代码蜜罐装置生成的对应的蜜罐异常处理指针在该异常处理指针生成指令附近以与该异常处理指针同样方式生成。
4.一种基于LLVM的抵御内存泄漏的方法,其特征在于:包括代码蜜罐步骤和数据蜜罐步骤,
所述代码蜜罐步骤,用于缓解内存泄漏中的代码指针泄露,包括在LLVM将源文件编译成IR层代码后,识别出跨函数的跳转指令,在指令前插入条件判断指令,真实端指向该跳转指令,而后再创建跳转指令指向的函数或代码片段的副本,在条件判断虚假端创建指向该副本的蜜罐跳转指令,最后将该副本转移到受监控或不可执行的蜜罐区域;
所述数据蜜罐步骤,用于缓解内存泄漏中的数据指针泄露,包括在代码蜜罐步骤后,识别易造成代码位置泄露的指令,包括程序的返回地址指令、函数指针生成指令、虚函数指针生成指令和异常处理指针生成指令,在这些指令前后插入与指针或地址相应的蜜罐副本的生成指令。
5.根据权利要求4所述基于LLVM的抵御内存泄漏的方法,其特征在于:所述代码蜜罐步骤包括以下子步骤,
步骤1,将待保护的源代码作为LLVM的输入,编译为LLVM的IR层代码;
步骤2,识别IR层代码,标记跨函数的跳转指令;
步骤3,在跨函数跳转指令前插入条件判断指令,真实端指向跳转指令;
步骤4,制作跳转指令的目标函数或代码片段副本,将判断指令虚假端插入指向该副本的跳转指令;
步骤5,将副本存放入受监控或不可执行的蜜罐区域。
6.根据权利要求4所述基于LLVM的抵御内存泄漏的方法,其特征在于:所述数据蜜罐步骤包括以下子步骤,
步骤1,在代码蜜罐步骤对应的方法完成后,识别程序的返回地址指令、函数指针生成指令、虚函数指针生成指令、异常处理指针生成指令,并标记位置;
步骤2,在受到标记的位置处,提取指令的目标代码或片段,寻找对应的蜜罐副本;
步骤3,根据标记的类别创建指向对应蜜罐副本的指令,在标记位置前后插入。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911198838.5/1.html,转载请声明来源钻瓜专利网。