Chinaunix首页 | 论坛 | 博客
  • 博客访问: 434451
  • 博文数量: 99
  • 博客积分: 65
  • 博客等级: 民兵
  • 技术积分: 1012
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 16:30
个人简介

linux kernel 工程师

文章分类

全部博文(99)

文章存档

2018年(5)

2017年(12)

2016年(27)

2015年(10)

2014年(43)

2012年(2)

我的朋友

分类: LINUX

2015-12-29 15:03:29

paxtest里面对于main的测试可以反映这一点:
Main executable randomisation (ET_EXEC)  : No randomisation
Main executable randomisation (PIE)      : 27 quality bits (guessed)
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------

对于start_code的位置,我们来看load_elf_binary,
其实start_code的位置取决于程序是可执行程序,还是动态共享的程序,这一点与heap类似。
如和heap中所述:

    /*  PAX_DELTA_MMAP_LEN=27, load_bias 的bit12~38为随机产生 */
                load_bias = (pax_get_random_long() & ((1UL << PAX_DELTA_MMAP_LEN) - 1)) << PAGE_SHIFT;

    loc->elf_ex.e_entry += load_bias;
    elf_bss += load_bias;
    elf_brk += load_bias;
    start_code += load_bias;
    end_code += load_bias;
    start_data += load_bias;
    end_data += load_bias;

所以,当load_bias==0时, start_code不包含随机数
当load_bias!=0时, start_code包含随机数的位数为12~38bit,也就是说存在27bits的随机数。
阅读(674) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~