[发明专利]引擎保护方法和装置在审
申请号: | 201611259940.8 | 申请日: | 2016-12-30 |
公开(公告)号: | CN106815520A | 公开(公告)日: | 2017-06-09 |
发明(设计)人: | 王萌 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F12/02 |
代理公司: | 北京英创嘉友知识产权代理事务所(普通合伙)11447 | 代理人: | 魏嘉熹,南毅宁 |
地址: | 110179 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 引擎 保护 方法 装置 | ||
技术领域
本公开涉及网络安全领域,具体地,涉及一种引擎保护方法和装置。
背景技术
目前大部分浏览器引擎以及Java、Perl、Ruby、Flash等都使用了JIT编译(Just-In-Time Compilation)技术来提高代码执行效率。JIT编译技术在为可执行对象分配内存时会直接分配可预期的、具有可读写可执行(Read、Write、Exeute,RWX)权限的内存地址,这样违背了数据执行保护以及随机地址分配的保护措施,使得可执行对象执行时其引擎很容易受到缓冲区溢出、堆喷射等恶意攻击。因此,少数使用JIT编译技术的引擎采取了实时修改内存地址权限的方法对其进行保护,将分配给可执行对象的内存地址的写权限与可执行权限分开。但是这样又会使其处理周期过长,造成使用JIT编译技术的引擎效率降低。
发明内容
本公开的目的是提供一种引擎保护方法,该方法能够在一定程度上避免引擎在可执行对象执行时被非法恶意攻击。
为了实现上述目的,本公开提供一种引擎保护方法,该方法包括:
按照第一预设规则给可执行对象分配内存地址;
按照第二预设规则为所分配的内存地址设置保护区,其中所述保护区的权限为不可写。
可选的,所述按照第一预设规则给可执行对象分配内存地址包括:
根据默认内存地址分配规则给所述可执行对象分配内存地址。
可选的,所述按照第一预设规则给可执行对象分配内存地址包括:
获取为所述可执行对象申请内存的内存申请函数中的申请内存大小、申请内存地址和申请内存权限;
当所述申请内存地址为空且所述申请内存权限为可读写可执行权限时,对所述申请内存地址进行随机化处理以得到随机化内存地址;
根据所述随机化内存地址、所述申请内存大小和所述申请内存权限确定要分配给所述可执行对象的内存地址;
当所确定的内存地址属于系统内存地址时,返回所述对所述申请内存地址进行随机化处理以得到随机化内存地址的步骤;
当所确定的内存地址不属于系统内存地址时,将所确定的内存地址分配给所述可执行对象。
可选的,在所述获取为所述可执行对象申请内存的内存申请函数中的申请内存大小、申请内存地址和申请内存权限之后,所述按照第一预设规则给可执行对象分配内存地址还包括:
判断所述申请内存大小是否是2的幂次方;
当所述申请内存大小不是2的幂次方时,将所述申请内存大小增加至大于所述申请内存大小的最小的2的幂次方。
可选的,所述按照第二预设规则为所分配的内存地址设置保护区包括:
将所述保护区设置在从所分配的内存地址的首地址开始的预设大小的内存空间内;
将所分配的内存地址向后偏移,其中偏移的大小为所述预设大小。
本公开还提供一种引擎保护装置,该装置包括:
内存地址分配模块,用于按照第一预设规则给可执行对象分配内存地址;
保护区设置模块,用于按照第二预设规则为所分配的内存地址设置保护区,其中所述保护区的权限为不可写。
可选的,所述内存地址分配模块包括:
内存地址默认分配子模块,用于根据默认内存地址分配规则给所述可执行对象分配内存地址。
可选的,所述内存地址分配模块包括:
获取子模块,用于获取为所述可执行对象申请内存的内存申请函数中的申请内存大小、申请内存地址和申请内存权限;
内存地址随机化子模块,用于当所述申请内存地址为空且所述申请内存权限为可读写可执行权限时,对所述申请内存地址进行随机化处理以得到随机化内存地址;
内存地址确定子模块,用于根据所述随机化内存地址、所述申请内存大小和所述申请内存权限确定要分配给所述可执行对象的内存地址;
内存地址判断子模块,用于判断所述内存地址确定子模块所确定的内存地址是否属于系统内存地址,并当所确定的内存地址属于系统内存地址时,通知所述内存地址随机化子模块重新对所述申请内存地址进行随机化处理以得到随机化内存地址;
内存地址分配子模块,用于当所述内存地址判断子模块判断所确定的内存地址不属于系统内存地址时,将所确定的内存地址分配给所述可执行对象。
可选的,在所述获取子模块获取为所述可执行对象申请内存的内存申请函数中的申请内存大小、申请内存地址和申请内存权限之后,所述内存地址分配模块还包括:
申请内存大小判断子模块,用于判断所述申请内存大小是否是2的幂次方;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611259940.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种应用升级方法及终端
- 下一篇:一种样本关联性检测方法、系统及电子设备