[发明专利]通过操作码随机化的安全有效
申请号: | 201110443529.7 | 申请日: | 2011-12-16 |
公开(公告)号: | CN102592082A | 公开(公告)日: | 2012-07-18 |
发明(设计)人: | J·C·斯普拉德林 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F21/00 | 分类号: | G06F21/00 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 黄嵩泉 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通过 操作 随机化 安全 | ||
技术领域
本发明涉及计算机安全,尤其涉及操作码的随机化。
背景技术
大多数计算机系统通过提供接收执行基本低级操作的一个或多个操作码的中央处理单元(CPU)来工作。一个示例是流行的英特尔x86体系结构,它提供用于移动数据的指令(例如,mov、push、pop)、对数字的数学运算的指令(例如,add、adc、sub、sbb、div、fdiv、imul)、逻辑运算的指令(例如,and、or、xor)、分支到不同执行路径的指令(例如,jmp、jne、jz、ret)、中断指令(例如int)等等。编译器通过编译、链接和汇编的过程将软件开发者用编程语言编写的人类可读的源代码转换成二进制操作码以产生可执行文件。在从用户接收到执行可执行文件的指令后,操作系统将二进制操作码提供给处理器,处理器执行由可执行文件表示的程序的指令。
现代程序利用一般涉及使CPU执行除了应用的作者原先想要的指令之外的指令。这可包括将新的二进制代码以操作码的形式插入到应用的进程中。通常,这通过超出缓冲器的长度(即,缓冲器溢出)来发生,这么做具有盖写函数的返回地址以使得该函数的退出导致控制流分支到被插入到缓冲器中的恶意代码。因为应用程序布局的可预测的本质,这些攻击主要以广泛的方式产生效果。如果每次程序运行时都将数据放在同一位置且用同一方法来处理数据,则攻击者能够可靠地确保同一攻击向量将在许多计算机系统上起作用。
这些攻击全部都以攻击者理解和预测系统行为的能力为基础。攻击者需要理解的最基本的行为就是机器指令代码集(即操作码)以及要执行什么指令以便获得所需行为。为什么许多类型的计算设备没有像个人计算机那样频繁地遭受黑客入侵的一个很大的因素就是它们使用不同的指令集。例如,许多移动电话使用ARM处理器或具有非x86指令集的其他处理器。涉及阻止恶意代码执行的大多数解决方案依赖于开发期间的阻止、对恶意代码的软件检测(例如,反病毒扫描)或管理进程状态的其他手段(例如,随机化堆布局和其他修改的存储器管理程序)。尽管这些方法取得了一些成功,但恶意代码执行仍然是一个重大的问题。
发明内容
本文描述了一种操作码模糊系统,其当应用存储在存储器中时改变操作系统或应用代码使用的操作码的值。应用被存储在存储器期间的时间段以及执行之前是最常见的注入恶意代码的时间。该系统在应用代码被加载时使应用代码经受转换过程,从而使得具有随机指令集的代码位于存储器中。如果新的和潜在的恶意代码被注入到进程中,它的指令集将无法匹配经转换的应用代码的指令集。随着执行应用代码的时间的临近,该系统使应用代码经受将应用代码转换回原始操作码的逆转换过程。被注入到进程中的任何恶意代码也将经受逆转换,这将检测到无效操作码,或者具有使恶意代码执行未知且可能无意义的指令集(可能造成CPU出错)的效果。由未结构化的操作码组成的代码在引起由操作系统捕捉的、终止进程的某种中断或陷阱之前,一般不会执行很长时间。因此,尽管恶意代码会引起可察觉的错误,但应用代码仍将很好地运行。
提供本发明内容以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
图1是示出在一个实施例中的操作码模糊系统的各组件的框图。
图2是示出在一个实施例中,在为了执行应用代码之前对其进行保持而将其从存储加载到模糊域中时,操作码模糊系统转换应用代码的处理的流程图。
图3是示出在一个实施例中,在应用代码执行时,操作码模糊系统将应用代码从模糊域逆转换到本机域的处理的流程图。
图4是示出在一个实施例中,在操作码模糊系统的操作期间,含有可执行代码的模块的三个阶段的框图。
图5是示出在一个实施例中的操作码模糊系统提供的保护以及保护在什么情况下可发生的框图。
具体实施方式
本文描述了一种当应用被存储在存储器中时改变操作系统或应用代码使用的操作码的值的操作码模糊系统。应用被存储在存储器期间的时间段以及在应用执行之前是最常见的注入恶意代码到该存储器中的时间。该操作码模糊系统在应用代码被加载时使应用代码经受转换过程,从而使得具有随机或伪随机指令集的代码位于存储器中。如果新的和潜在的恶意代码被注入到进程中,它的指令集将无法匹配经转换的应用代码的指令集。随着执行应用代码的时间的临近,该操作码模糊系统使应用代码经受将应用代码转换回原始操作码的逆转换过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110443529.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:安全帽佩戴不规范自动报警装置
- 下一篇:一种磁性纳针盒