• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 20
    • 下载费用:30 金币  

    76重庆时时彩开奖网: 引擎?;し椒ê妥爸?pdf

    关 键 词:
    引擎 ?;?方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201611259940.8

    申请日:

    2016.12.30

    公开号:

    CN106815520A

    公开日:

    2017.06.09

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 21/52申请日:20161230|||公开
    IPC分类号: G06F21/52(2013.01)I; G06F12/02 主分类号: G06F21/52
    申请人: 东软集团股份有限公司
    发明人: 王萌
    地址: 110179 辽宁省沈阳市浑南新区新秀街2号
    优先权:
    专利代理机构: 北京英创嘉友知识产权代理事务所(普通合伙) 11447 代理人: 魏嘉熹;南毅宁
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201611259940.8

    授权公告号:

    |||

    法律状态公告日:

    2017.07.04|||2017.06.09

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本公开涉及一种引擎?;し椒ê妥爸?,涉及网络安全领域,该方法包括按照第一预设规则给可执行对象分配内存地址;按照第二预设规则为所分配的内存地址设置?;で?,其中所述?;で娜ㄏ尬豢尚?,这样就能够在一定程度上能够避免其引擎在可执行对象执行时被非法恶意攻击。

    权利要求书

    1.一种引擎?;し椒?,其特征在于,该方法包括:
    按照第一预设规则给可执行对象分配内存地址;
    按照第二预设规则为所分配的内存地址设置?;で?,其中所述?;で娜ㄏ尬豢?br />写。
    2.根据权利要求1所述的方法,其特征在于,所述按照第一预设规则给可执行对象分配
    内存地址包括:
    根据默认内存地址分配规则给所述可执行对象分配内存地址。
    3.根据权利要求1所述的方法,其特征在于,所述按照第一预设规则给可执行对象分配
    内存地址包括:
    获取为所述可执行对象申请内存的内存申请函数中的申请内存大小、申请内存地址和
    申请内存权限;
    当所述申请内存地址为空且所述申请内存权限为可读写可执行权限时,对所述申请内
    存地址进行随机化处理以得到随机化内存地址;
    根据所述随机化内存地址、所述申请内存大小和所述申请内存权限确定要分配给所述
    可执行对象的内存地址;
    当所确定的内存地址属于系统内存地址时,返回所述对所述申请内存地址进行随机化
    处理以得到随机化内存地址的步骤;
    当所确定的内存地址不属于系统内存地址时,将所确定的内存地址分配给所述可执行
    对象。
    4.根据权利要求3所述的方法,其特征在于,在所述获取为所述可执行对象申请内存的
    内存申请函数中的申请内存大小、申请内存地址和申请内存权限之后,所述按照第一预设
    规则给可执行对象分配内存地址还包括:
    判断所述申请内存大小是否是2的幂次方;
    当所述申请内存大小不是2的幂次方时,将所述申请内存大小增加至大于所述申请内
    存大小的最小的2的幂次方。
    5.根据权利要求1至4中任一权利要求所述的方法,其特征在于,所述按照第二预设规
    则为所分配的内存地址设置?;でǎ?br />
    将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房嫉脑ど璐笮〉哪诖婵占淠?;
    将所分配的内存地址向后偏移,其中偏移的大小为所述预设大小。
    6.一种引擎?;ぷ爸?,其特征在于,该装置包括:
    内存地址分配???,用于按照第一预设规则给可执行对象分配内存地址;
    ?;で柚媚??,用于按照第二预设规则为所分配的内存地址设置?;で?,其中所述
    ?;で娜ㄏ尬豢尚?。
    7.根据权利要求6所述的装置,其特征在于,所述内存地址分配??榘ǎ?br />内存地址默认分配子???,用于根据默认内存地址分配规则给所述可执行对象分配内
    存地址。
    8.根据权利要求6所述的装置,其特征在于,所述内存地址分配??榘ǎ?br />获取子???,用于获取为所述可执行对象申请内存的内存申请函数中的申请内存大
    小、申请内存地址和申请内存权限;
    内存地址随机化子???,用于当所述申请内存地址为空且所述申请内存权限为可读写
    可执行权限时,对所述申请内存地址进行随机化处理以得到随机化内存地址;
    内存地址确定子???,用于根据所述随机化内存地址、所述申请内存大小和所述申请
    内存权限确定要分配给所述可执行对象的内存地址;
    内存地址判断子???,用于判断所述内存地址确定子??樗范ǖ哪诖娴刂肥欠袷粲?br />系统内存地址,并当所确定的内存地址属于系统内存地址时,通知所述内存地址随机化子
    ??橹匦露运錾昵肽诖娴刂方兴婊硪缘玫剿婊诖娴刂?;
    内存地址分配子???,用于当所述内存地址判断子??榕卸纤范ǖ哪诖娴刂凡皇粲?br />系统内存地址时,将所确定的内存地址分配给所述可执行对象。
    9.根据权利要求8所述的装置,其特征在于,在所述获取子??榛袢∥隹芍葱卸韵?br />申请内存的内存申请函数中的申请内存大小、申请内存地址和申请内存权限之后,所述内
    存地址分配??榛拱ǎ?br />
    申请内存大小判断子???,用于判断所述申请内存大小是否是2的幂次方;
    申请内存大小增加子???,用于当所述申请内存大小不是2的幂次方时,将所述申请内
    存大小增加至大于所述申请内存大小的最小的2的幂次方。
    10.根据权利要求6至9中任一权利要求所述的装置,其特征在于,所述?;で柚媚??br />包括:
    ?;で柚米幽??,用于将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房嫉脑?br />设大小的内存空间内;
    内存地址偏移子???,用于将所分配的内存地址向后偏移,其中偏移的大小为所述预
    设大小。

    说明书

    引擎?;し椒ê妥爸?/invention-title>

    技术领域

    本公开涉及网络安全领域,具体地,涉及一种引擎?;し椒ê妥爸?。

    背景技术

    目前大部分浏览器引擎以及Java、Perl、Ruby、Flash等都使用了JIT编译(Just-
    In-Time Compilation)技术来提高代码执行效率。JIT编译技术在为可执行对象分配内存
    时会直接分配可预期的、具有可读写可执行(Read、Write、Exeute,RWX)权限的内存地址,这
    样违背了数据执行?;ひ约八婊刂贩峙涞谋;ご胧?,使得可执行对象执行时其引擎很容
    易受到缓冲区溢出、堆喷射等恶意攻击。因此,少数使用JIT编译技术的引擎采取了实时修
    改内存地址权限的方法对其进行?;?,将分配给可执行对象的内存地址的写权限与可执行
    权限分开。但是这样又会使其处理周期过长,造成使用JIT编译技术的引擎效率降低。

    发明内容

    本公开的目的是提供一种引擎?;し椒?,该方法能够在一定程度上避免引擎在可
    执行对象执行时被非法恶意攻击。

    为了实现上述目的,本公开提供一种引擎?;し椒?,该方法包括:

    按照第一预设规则给可执行对象分配内存地址;

    按照第二预设规则为所分配的内存地址设置?;で?,其中所述?;で娜ㄏ尬?br />可写。

    可选的,所述按照第一预设规则给可执行对象分配内存地址包括:

    根据默认内存地址分配规则给所述可执行对象分配内存地址。

    可选的,所述按照第一预设规则给可执行对象分配内存地址包括:

    获取为所述可执行对象申请内存的内存申请函数中的申请内存大小、申请内存地
    址和申请内存权限;

    当所述申请内存地址为空且所述申请内存权限为可读写可执行权限时,对所述申
    请内存地址进行随机化处理以得到随机化内存地址;

    根据所述随机化内存地址、所述申请内存大小和所述申请内存权限确定要分配给
    所述可执行对象的内存地址;

    当所确定的内存地址属于系统内存地址时,返回所述对所述申请内存地址进行随
    机化处理以得到随机化内存地址的步骤;

    当所确定的内存地址不属于系统内存地址时,将所确定的内存地址分配给所述可
    执行对象。

    可选的,在所述获取为所述可执行对象申请内存的内存申请函数中的申请内存大
    小、申请内存地址和申请内存权限之后,所述按照第一预设规则给可执行对象分配内存地
    址还包括:

    判断所述申请内存大小是否是2的幂次方;

    当所述申请内存大小不是2的幂次方时,将所述申请内存大小增加至大于所述申
    请内存大小的最小的2的幂次方。

    可选的,所述按照第二预设规则为所分配的内存地址设置?;でǎ?br />

    将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房嫉脑ど璐笮〉哪诖婵占?br />内;

    将所分配的内存地址向后偏移,其中偏移的大小为所述预设大小。

    本公开还提供一种引擎?;ぷ爸?,该装置包括:

    内存地址分配???,用于按照第一预设规则给可执行对象分配内存地址;

    ?;で柚媚??,用于按照第二预设规则为所分配的内存地址设置?;で?,其中
    所述?;で娜ㄏ尬豢尚?。

    可选的,所述内存地址分配??榘ǎ?br />

    内存地址默认分配子???,用于根据默认内存地址分配规则给所述可执行对象分
    配内存地址。

    可选的,所述内存地址分配??榘ǎ?br />

    获取子???,用于获取为所述可执行对象申请内存的内存申请函数中的申请内存
    大小、申请内存地址和申请内存权限;

    内存地址随机化子???,用于当所述申请内存地址为空且所述申请内存权限为可
    读写可执行权限时,对所述申请内存地址进行随机化处理以得到随机化内存地址;

    内存地址确定子???,用于根据所述随机化内存地址、所述申请内存大小和所述
    申请内存权限确定要分配给所述可执行对象的内存地址;

    内存地址判断子???,用于判断所述内存地址确定子??樗范ǖ哪诖娴刂肥欠?br />属于系统内存地址,并当所确定的内存地址属于系统内存地址时,通知所述内存地址随机
    化子??橹匦露运錾昵肽诖娴刂方兴婊硪缘玫剿婊诖娴刂?;

    内存地址分配子???,用于当所述内存地址判断子??榕卸纤范ǖ哪诖娴刂凡?br />属于系统内存地址时,将所确定的内存地址分配给所述可执行对象。

    可选的,在所述获取子??榛袢∥隹芍葱卸韵笊昵肽诖娴哪诖嫔昵牒械?br />申请内存大小、申请内存地址和申请内存权限之后,所述内存地址分配??榛拱ǎ?br />

    申请内存大小判断子???,用于判断所述申请内存大小是否是2的幂次方;

    申请内存大小增加子???,用于当所述申请内存大小不是2的幂次方时,将所述申
    请内存大小增加至大于所述申请内存大小的最小的2的幂次方。

    可选的,所述?;で柚媚?榘ǎ?br />

    ?;で柚米幽??,用于将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房?br />的预设大小的内存空间内;

    内存地址偏移子???,用于将所分配的内存地址向后偏移,其中偏移的大小为所
    述预设大小。

    通过上述技术方案,先按照第一预设规则给可执行对象分配内存地址,然后按照
    第二预设规则为所分配的内存地址设置?;で?,其中所述?;で娜ㄏ尬豢尚?,这样就
    能够在一定程度上?;に瞿诖娴刂?,且避免其引擎在可执行对象执行时被非法恶意攻
    击。

    本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

    附图说明

    附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具
    体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

    图1是根据本公开一种实施方式的引擎?;し椒ǖ牧鞒掏?。

    图2是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?。

    图3是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?。

    图4是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?。

    图5是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?。

    图6是根据本公开一种实施方式的引擎?;ぷ爸玫氖疽饪蛲?。

    图7是根据本公开又一种实施方式的引擎?;ぷ爸弥械哪诖娴刂贩峙淠?榈氖疽?br />框图。

    图8是根据本公开又一种实施方式的引擎?;ぷ爸弥械哪诖娴刂贩峙淠?榈氖疽?br />框图。

    图9是根据本公开又一种实施方式的引擎?;ぷ爸弥械哪诖娴刂贩峙淠?榈氖疽?br />框图。

    图10是根据本公开一种实施方式的引擎?;ぷ爸弥械谋;で柚媚?榈氖疽饪?br />图。

    附图标记说明

    100引擎?;ぷ爸?10内存地址分配???br />

    20?;で柚媚??101内存地址默认分配子???br />

    102获取子???103内存地址随机化子???br />

    104内存地址确定子???105内存地址判断子???br />

    106内存地址分配子???107申请内存大小判断子???br />

    108申请内存大小增加子???201?;で柚米幽??br />

    202内存地址偏移子???br />

    具体实施方式

    以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描
    述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

    图1是根据本公开一种实施方式的引擎?;し椒ǖ牧鞒掏?,如图1所示,该方法包
    括步骤S101和步骤S102。

    在步骤S101中,按照第一预设规则给可执行对象分配内存地址。

    在步骤S102中,按照第二预设规则为所分配的内存地址设置?;で?,其中所述保
    护区的权限为不可写。

    所述?;で纳柚媚康氖俏吮;に瞿诖娴刂?,其?;さ姆椒唇霰;で?br />的权限设置为不可写。

    通过上述技术方案,当需要给可执行对象分配内存时,先按照第一预设规则给可
    执行对象分配内存地址,然后按照第二预设规则为所分配的内存地址设置?;で?,其中所
    述?;で娜ㄏ尬豢尚?,这样就能够在一定程度上?;に峙涞哪诖娴刂?,且避免其引
    擎在可执行对象执行时被非法恶意攻击。

    图2是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?,如图2所示,该方法
    包括图1中的步骤S102,还包括步骤S201。

    在步骤S201中,根据默认内存地址分配规则给所述可执行对象分配内存地址。

    上述步骤即为图1中步骤S101中所述的第一预设规则的其中一种。

    所述默认内存地址分配规则即按照现有技术中使用JIT编译技术的引擎为可执行
    对象分配内存地址的规则,本公开对所述默认内存地址分配规则不作限定。

    通过上述技术方案,先根据默认内存地址分配规则给所述可执行对象分配内存地
    址,然后按照第二预设规则为所分配的内存地址设置?;で?,其中所述?;で娜ㄏ尬?br />可写,这样提供了一种通过为所分配的内存地址设置?;で幢;ひ娌皇芊欠ǘ褚?br />攻击的方法。

    图3是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?,图3所示的方法是图
    1中步骤S101中所述的第一预设规则中的另外一种。如图3所示,该方法包括步骤S301至步
    骤S307。

    在步骤S301中,获取为所述可执行对象申请内存的内存申请函数中的申请内存大
    小、申请内存地址和申请内存权限。

    可执行对象申请内存时,会通过自己的内存申请函数来进行申请,所述内存申请
    函数中主要包括申请的内存大小,申请内存的首地址,以及所要申请的内存页的权限等参
    数信息。

    在步骤S302中,判断所述申请内存地址是否为空且所述申请内存权限是否为可读
    写可执行权限,如果是,则转至步骤S303,如果不是,则转至步骤S304。

    判断所述申请内存地址是否为空且所述申请内存权限是否为可读写可执行权限
    即为判断所述可执行对象申请的内存是否为有被非法恶意攻击的危险的内存。

    在步骤S303中,在申请内存地址为空且申请内存权限为可读写可执行权限时,对
    所述申请内存地址进行随机化处理以得到随机化内存地址,然后转至步骤S305。

    步骤S303的主要目的是只在申请内存地址为空且申请内存权限为RWX权限时对申
    请内存地址进行随机化,这样就不会过多的占用系统时间,不会影响引擎(例如,使用JIT编
    译技术的引擎)的运行效率。

    其中,所述对所述申请内存地址进行随机化处理可以通过利用George
    Marsaglia's MWC算法来进行随机化处理。George Marsaglia's MWC算法是一种利用异或
    与移位运算来产生高伪随机度的伪随机数生成算法,易于软件实现,而且在硬件上运行速
    度非???,因此对所述申请内存地址进行随机化处理的过程几乎不会影响到引擎的运行效
    率。

    在步骤S304中,根据所述申请内存大小、所述申请内存地址和所述申请内存权限
    给所述可执行对象分配内存地址。

    当判断所述申请内存地址不为空时,说明可执行对象的申请内存地址是具体的地
    址,针对这种申请内存地址,选择不对其进行随机化处理,而直接根据所述申请内存大小、
    所述申请内存地址和所述申请内存权限给所述可执行对象分配内存地址。

    当申请内存地址为空,但所述申请内存权限不为可读写可执行权限时,即所述可
    执行对象申请的内存地址不是RWX权限的内存地址时,也选择不对其进行随机化处理,而直
    接根据所述申请内存大小、所述申请内存地址和所述申请内存权限给所述可执行对象分配
    内存地址。因为当所述可执行对象的申请内存权限不是RWX权限时,所述引擎收到非法恶意
    攻击的危险程度相对并不高,在这种情况下就无需占用过多的系统时间对引擎进行?;?。

    在步骤S305中,根据所述随机化内存地址、所述申请内存大小和所述申请内存权
    限确定要分配给所述可执行对象的内存地址。

    所述确定要分配给所述可执行对象的内存地址的过程常用的方法是调用一个系
    统内存分配函数来完成。在windows系统下,所述系统内存分配函数可以是VitualAlloc函
    数,当然也可以是其他系统内存分配函数,例如直接调用Windows堆函数或者CRT堆函数等。
    对于不同的系统,调用的内存分配函数可以不一样。

    在步骤S306中,判断所确定的内存地址是否属于系统内存地址,如果否,则转至步
    骤S307,如果是,则转至步骤S303。

    在确定了要分配给所述可执行对象的内存地址之后,需要对所确定的内存地址进
    行是否属于系统内存地址的判断,这一步属于常规判断。如果属于系统内存地址,因为系统
    内存地址不可用,则返回步骤S303对所确定的内存地址进行再一次的随机化处理,直到判
    断所确定的内存地址不属于系统内存地址时,即此时所确定的内存地址属于用户可用地址
    空间,这时,再转至步骤S307。

    在步骤S307中,将所确定的内存地址分配给所述可执行对象。

    在判断所确定的内存地址属于用户可用地址空间后,就将所确定的内存地址通过
    赋值的过程真正分配给可执行对象。

    通过上述的技术方案,首先获取为所述可执行对象申请内存的内存申请函数中的
    申请内存大小、申请内存地址和申请内存权限,当所述申请内存地址为空且所述申请内存
    权限为可读写可执行权限时,对所述申请内存地址进行随机化处理以得到随机化内存地
    址,然后根据所述随机化内存地址、所述申请内存大小和所述申请内存权限确定要分配给
    所述可执行对象的内存地址,当所确定的内存地址属于系统内存地址时,返回所述对所述
    申请内存地址进行随机化处理以得到随机化内存地址的步骤,而当所确定的内存地址不属
    于系统内存地址时,就将所确定的内存地址分配给所述可执行对象,这样,如果攻击者想要
    在分配给可执行对象的内存地址上执行恶意代码,由于采取了以上的随机化处理,给可执
    行对象分配的内存地址是随机的,攻击者很难获取可执行对象的准确内存地址,这样,就能
    在一定程度上防止所述引擎被非法恶意攻击。

    以下是针对图3中的随机化处理方法的有效性评估。

    从表1中可以看出,没有使用本公开中的随机化处理方法时,使用JIT编译技术的
    引擎给可执行对象分配的是连续的相差0x10000字节的内存地址,因此攻击者能够猜测出
    可执行对象在内存中的准确位置。然而,使用本公开的随机化处理方法之后,所述引擎给可
    执行对象分配的地址是完全随机的,攻击者很难获取可执行对象在内存中的准确位置。

    表1



    图4是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?,是图1中步骤S101中
    所述的第一预设规则中的又一种。如图4所示,该方法在图3的步骤S301之后,还包括步骤
    S401和步骤S402,以及接下来的步骤S302至步骤S307。

    在步骤S401中,判断所述申请内存大小是否是2的幂次方,如果否,则转至步骤
    S402,如果是,则转至步骤S302。

    判断所述申请内存大小是否是2的幂次方的原因,一是通常情况下给可执行对象
    分配内存时,所述内存大小都是以2的幂的形式对齐的;二是2的幂的大小的内存空间适合
    硬件操作,有利用提高运行效率。

    在步骤S402中,将所述申请内存大小增加至大于所述申请内存大小的最小的2的
    幂次方。

    如果判断所述申请内存大小不是2的幂次方,则主动将所述申请内存大小增加至
    最接近原申请内存大小的2的幂次方,然后在进行内存分配工作。

    通过上述的技术方案,在所述获取为所述可执行对象申请内存的内存申请函数中
    的申请内存大小、申请内存地址和申请内存权限之后,先判断所述申请内存大小是否是2的
    幂次方,当所述申请内存大小不是2的幂次方时,将所述申请内存大小增加至大于所述申请
    内存大小的最小的2的幂次方,然后再进行后续的内存分配,这样,有利于提高引擎的运行
    效率。

    图5是根据本公开又一种实施方式的引擎?;し椒ǖ牧鞒掏?,如图5所示,该方法
    包括步骤S501和步骤S502。

    步骤S501,将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房嫉脑ど璐笮〉?br />内存空间内。

    所述?;で拇笮∠喽杂谒鏊峙涞哪诖娴刂反笮『苄?,例如,所述?;で?br />大小可以是8k。

    将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房嫉脑ど璐笮〉哪诖婵占?br />内时,?;で哪诖娴刂酚胨峙涞哪诖娴刂坊岢鱿种睾?,此时执行步骤S502。

    步骤S502,将所分配的内存地址向后偏移,其中偏移的大小为所述预设大小。

    在设置好?;で牡刂分?,为避免内存重合,将所分配的内存地址向后偏移所
    述?;で拇笮?,保证?;で哪诖娴刂酚胨峙涞哪诖娴谋;さ刂肥橇也恢睾系?。

    通过上述的技术方案,先将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂房?br />的预设大小的内存空间内,然后将所分配的内存地址向后偏移,其中偏移的大小为所述预
    设大小,这样就为可执行对象的内存地址空间设置了一个能够起到?;ぷ饔玫谋;で?,由
    于这个?;で牡刂酚肟芍葱卸韵蟮哪诖娴刂房占涫橇?,且所述?;で娜ㄏ奘遣豢?br />写,因此,当所述引擎受到非法恶意攻击例如缓冲区溢出等攻击时,就能够及时的反应报
    警,以使所述引擎终止程序的运行,从而起到?;に鲆娴墓δ?。

    本公开的发明人以JavaScript引擎V8、Tamarin以及Safari’s为例,编写了一系列
    的测试用例,用来测试使用本公开内容后引擎对于非法恶意攻击的防范效果。表中的JIT引
    擎即使用JIT编译技术的引擎。如表2所示,测试中的三个引擎对于测试用攻击样例的攻击,
    防范效果都是有效的。

    表2



    本公开的发明人还将本公开内容与使用JIT编译技术的引擎常用的安全防范措施
    进行了调研比较,结果如表3所示,从表3中可以看出,目前大多数使用JIT编译技术的引擎
    都没有使用本公开中的发明内容。

    表3



    其中,所述内存权限限定的方法,即在背景技术中提到的,少数使用JIT编译技术
    的引擎采取的实时修改内存地址权限的方法,将分配给可执行对象的内存地址的写权限与
    可执行权限分开,在最初为可执行对象分配内存地址时分配的是具有RWX权限的内存地址,
    并将权限修改为RW,在可执行对象即将执行时,将其内存地址的权限修改为RX,执行结束后
    再将其内存地址的权限修改为RW,这样处理非常消耗处理器周期,会降低引擎效率。

    另外,引擎JagerMonkey是实现了内存权限限定功能的,但是在默认情况下此功能
    未被开启,因此默认其不具有此功能。

    本公开的发明人还针对不同的使用JIT编译技术的引擎进行了10000次的内存分
    配操作,表4显示了在使用和不使用本公开内容的情况下的所用时间以及系统开销,如表4
    所示,使用本公开内容的引擎的系统开销在10%以内,这是在可以接受的范围内的;且所用
    时间的差距也在可以接收的范围内。

    表4





    图6是根据本公开一种实施方式的引擎?;ぷ爸?00的示意框图。如图6所示,该装
    置包括:

    内存地址分配???0,用于按照第一预设规则给可执行对象分配内存地址;

    ?;で柚媚??0,用于按照第二预设规则为所分配的内存地址设置?;で?,其
    中所述?;で娜ㄏ尬豢尚?。

    通过上述技术方案,当可执行对象申请内存时,内存地址分配???0先按照第一
    预设规则给可执行对象分配内存地址,然后?;で柚媚??0按照第二预设规则为所分配
    的内存地址设置?;で?,其中所述?;で娜ㄏ尬豢尚?,这样就能够在一定程度上?;?br />所述内存地址,且避免其引擎在可执行对象执行时被非法恶意攻击。

    图7是根据本公开又一种实施方式的引擎?;ぷ爸?00中的内存地址分配???0
    的示意框图。如图7所示,所述内存地址分配???0包括:

    内存地址默认分配子???01,用于根据默认内存地址分配规则给所述可执行对
    象分配内存地址。

    通过上述技术方案,内存地址默认分配子???01先根据默认内存地址分配规则
    给所述可执行对象分配内存地址,然后?;で柚媚??0再按照第二预设规则为所分配的
    内存地址设置?;で?,其中所述?;で娜ㄏ尬豢尚?,这样提供了一种通过为所分配的
    内存地址设置?;で幢;ひ娌皇芊欠ǘ褚夤セ鞯姆椒?。

    图8是根据本公开又一种实施方式的引擎?;ぷ爸?00中的内存地址分配???0
    的示意框图。如图8所示,所述内存地址分配???0包括:

    获取子???02,用于获取为所述可执行对象申请内存的内存申请函数中的申请
    内存大小、申请内存地址和申请内存权限;

    内存地址随机化子???03,用于当所述申请内存地址为空且所述申请内存权限
    为可读写可执行权限时,对所述申请内存地址进行随机化处理以得到随机化内存地址;

    内存地址确定子???04,用于根据所述随机化内存地址、所述申请内存大小和所
    述申请内存权限确定要分配给所述可执行对象的内存地址;

    内存地址判断子???05,用于判断所述内存地址确定子??樗范ǖ哪诖娴刂?br />是否属于系统内存地址,并当所确定的内存地址属于系统内存地址时,通知所述内存地址
    随机化子??橹匦露运錾昵肽诖娴刂方兴婊硪缘玫剿婊诖娴刂?;

    内存地址分配子???06,用于当所述内存地址判断子???05判断所确定的内存
    地址不属于系统内存地址时,将所确定的内存地址分配给所述可执行对象。

    通过上述的技术方案,首先获取子???02获取为所述可执行对象申请内存的内
    存申请函数中的申请内存大小、申请内存地址和申请内存权限,内存地址随机化子???03
    在当所述申请内存地址为空且所述申请内存权限为可读写可执行权限时,对所述申请内存
    地址进行随机化处理以得到随机化内存地址,然后内存地址确定子???04根据所述随机
    化内存地址、所述申请内存大小和所述申请内存权限确定要分配给所述可执行对象的内存
    地址,内存地址判断子???05在当所确定的内存地址属于系统内存地址时,返回所述对所
    述申请内存地址进行随机化处理以得到随机化内存地址的步骤,而内存地址分配子???br />106在当所确定的内存地址不属于系统内存地址时,将所确定的内存地址分配给所述可执
    行对象,这样,如果攻击者想要在分配给可执行对象的内存地址上执行恶意代码,由于采取
    了以上的随机化处理,给可执行对象分配的内存地址是随机的,攻击者很难获取可执行对
    象的准确内存地址,这样,就能在一定程度上防止所述引擎被非法恶意攻击。

    图9是根据本公开又一种实施方式的引擎?;ぷ爸?00中的内存地址分配???0
    的示意框图。如图9所示,在获取子???02获取为所述可执行对象申请内存的内存申请函
    数中的申请内存大小、申请内存地址和申请内存权限之后,所述内存地址分配???0还包
    括:

    申请内存大小判断子???07,用于判断所述申请内存大小是否是2的幂次方;

    申请内存大小增加子???08,用于当所述申请内存大小不是2的幂次方时,将所
    述申请内存大小增加至大于所述申请内存大小的最小的2的幂次方。

    通过上述的技术方案,在获取子???02获取为所述可执行对象申请内存的内存
    申请函数中的申请内存大小、申请内存地址和申请内存权限之后,申请内存大小判断子模
    块107判断所述申请内存大小是否是2的幂次方,申请内存大小增加子???08在当所述申
    请内存大小不是2的幂次方时,将所述申请内存大小增加至大于所述申请内存大小的最小
    的2的幂次方,然后再进行后续的内存分配,这样,有利于提高引擎的运行效率。

    图10是根据本公开一种实施方式的引擎?;ぷ爸?00中的?;で柚媚??0的示
    意框图。如图10所示,所述?;で柚媚??0包括:

    ?;で柚米幽??01,用于将所述?;で柚迷诖铀峙涞哪诖娴刂返氖椎刂?br />开始的预设大小的内存空间内;

    内存地址偏移子???02,用于将所分配的内存地址向后偏移,其中偏移的大小为
    所述预设大小。

    通过上述的技术方案,?;で柚米幽??01先将所述?;で柚迷诖铀峙涞?br />内存地址的首地址开始的预设大小的内存空间内,然后内存地址偏移子???02将所分配
    的内存地址向后偏移,其中偏移的大小为所述预设大小,这样就为可执行对象的内存地址
    空间设置了一个能够起到?;ぷ饔玫谋;で?,由于这个?;で牡刂酚肟芍葱卸韵蟮哪诖?br />地址空间是连续的,且所述?;で娜ㄏ奘遣豢尚?,因此,当所述引擎受到非法恶意攻击例
    如缓冲区溢出等攻击时,就能够及时的反应报警,以使所述引擎终止程序的运行,从而起到
    ?;に鲆娴墓δ?。

    以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实
    施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简
    单变型,这些简单变型均属于本公开的?;し段?。

    另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛
    盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可
    能的组合方式不再另行说明。

    此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本
    公开的思想,其同样应当视为本公开所公开的内容。

    关于本文
    本文标题:引擎?;し椒ê妥爸?pdf
    链接地址://www.4mum.com.cn/p-6021101.html

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 广东时时开奖软件 江苏时时11选5 天天pk10计划软件 手机 后二组选稳赚杀号技巧 体育彩票投注截止时间 江苏时时走势图表 极速pk10免费稳赚技巧方案 极速赛车怎么追6码公式 快三大小单双计划 pk10极速赛车官网开奖 pk10计划软件5码手机版 江苏快三计划软件免费苹果版 龙虎押注方法 北京pk10稳赚心得技巧 小加拿大pc28幸运在线预测 大乐透19107预测