[发明专利]二进制程序内存腐烂攻击的实时检测系统无效
| 申请号: | 200910026449.4 | 申请日: | 2009-04-23 |
| 公开(公告)号: | CN101539976A | 公开(公告)日: | 2009-09-23 |
| 发明(设计)人: | 茅兵;谢立;王磊;陈平 | 申请(专利权)人: | 南京大学 |
| 主分类号: | G06F21/22 | 分类号: | G06F21/22 |
| 代理公司: | 南京苏高专利商标事务所(普通合伙) | 代理人: | 柏尚春 |
| 地址: | 210093江苏省南京市*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 二进制 程序 内存 腐烂 攻击 实时 检测 系统 | ||
1.一种二进制程序内存腐烂攻击的实时检测系统,其特征在于,包括以下部分:代码转换单元(20)、程序内部数据染色单元(21)、程序运行时监控单元(22)以及攻击检测单元(23);
所述代码转换单元(20)用于将二进制级别的代码转换成Valgrind中间代码形式VEX;
所述程序内部数据染色单元(21)包括指针类型数据识别部分(211)和指针类型数据染色部分(212),用于根据程序运行时执行到的VEX指令,并扫描和查找VEX指令,当识别出是指针类型的数据时,对指针类型的数据染色;
所述程序运行时监控单元(22)用于对静态指针和动态指针数据进行识别,并对静态指针和动态指针以及静态指针和动态指针对应的内存区域染上相同的颜色;
所述攻击检测单元(23)用于截获外部输入数据的操作,对外来的输入数据进行染色,并在程序的执行过程中,动态的对外来的数据进行监控,并进行颜色的动态传播;
所述二进制程序内存腐烂攻击的实时检测包括以下步骤:
步骤S100,在Valgrind生成的中间代码VEX中查找操作码Add32;
步骤S200,如果存在操作码Add32,则跳到步骤S300;否则跳至步骤S600;
步骤S300,在VEX中,查找在操作码Add32后的操作码;
步骤S400,如果操作码Add32后的为操作码STle,则跳至步骤S500;否则跳至步骤S600;
步骤S500,用指针类型数据染色部分(212)对程序内部的指针类型的数据染色;
所述步骤S500包括以下步骤:
步骤S501,如果指针为静态指针,则跳至步骤S502;否则跳至步骤S503;
步骤S502,将在操作码STle中的地址取出,并将该地址处的变量染色;
步骤S503,截获malloc()族函数以及非系统函数调用;
步骤S504,对动态分配的指针类型的数据进行染色;
步骤S600,程序运行时监控;
所述步骤S600程序运行时监控由程序运行时监控单元(22)进行,包括以下步骤:
步骤S601,如果是数据输入函数scanf()族函数,则跳至步骤S602;否则跳至步骤S603;
步骤S602,将外来输入函数的数据染色;
步骤S603,在VEX中间代码中,查找是否存在传播指令,如果存在传播指令,则跳至步骤S604;否则跳至步骤S700;
步骤S604,动态的进行颜色的传播;
步骤S700,进行攻击检测;
所述步骤S700进行攻击检测由所述攻击检测单元(23)进行,包括以下步骤:
步骤S701,在VEX中间代码中查找操作指令LOAD,如果存在操作指令LOAD,则跳至步骤S702;否则跳至步骤S800;
步骤S702,提取出指针的颜色;
步骤S703,检测指针是否被污染,如果指针被污染,则跳至步骤S706;否则跳至步骤S704;
步骤S704,提取出指针要访问的内存区域的颜色;
步骤S705,对步骤S702中提取的指针颜色以及步骤S704中提取的指针要访问内存的颜色进行比对,如果两者颜色相同,跳至步骤S800;否则跳至步骤S706;
步骤S706,检测到内存腐烂攻击;
步骤S800,没有检测到攻击,程序继续运行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910026449.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种汽车稳定性控制实车试验系统
- 下一篇:一种耙吸船耙臂吊缆摆角检测装置





