zoukankan      html  css  js  c++  java
  • ASLR

    @author:dlive

    ASLR address space layout randomization

    微软从windows vista/windows server 2008(kernel version 6.0)开始采用ASLR技术,主要目的是为了防止缓冲区溢出

    ASLR技术会使PE文件每次加载到内存的起始地址随机变化,并且进程的栈和堆的起始地址也会随机改变。

    该技术需要操作系统和编译工具的双重支持(主要是操作系统的支持,编译工具主要作用是生成支持ASLR的PE格式)

    若不想使用ASLR功能,可以在VS编译的时候将“配置属性->链接器->高级->随机基址”的值修改为否即可

    下面对比ASLR.exe和ASLR_no.exe的PE信息的区别。(x86的可执行文件,两个exe编译时的区别仅为是否开启ASLR选项)

    PE信息对比

    .reloc节区

    ASLR.exe比ASLR_no.exe多了一个.reloc节区,这个节区在前面DLL的章节讲解过,其中存储了程序中的硬编码信息。

    IMAGE_FILE_HEADERCharacteristics

    ASLR.exe中Characteristics(0102) = IMAGE_FILE_EXECUTABLE_IMAGE(0002) | IMAGE_FILE_32BIT_MACHINE(0100)

    ASLR_no.exe中Characteristics(0103) = IMAGE_FILE_RELOCS_STRRIPED(0001) | IMAGE_FILE_EXECUTABLE_IMAGE(0002) | IMAGE_FILE_32BIT_MACHINE(0100)

    后者比前者多一个IMAGE_FILE_RELOCS_STRRIPED标志,该标志含义为:

    Relocation information was stripped from the file. The file must be loaded at its preferred base address. If the base address is not available, the loader reports an error.
    

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms680313(v=vs.85).aspx

    IMAGE_OPTIONAL_HEADERDllCharacteristics

    ASLR.exe比ASLR_no.exe的DllCharacteristics多了一个IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE标志

    该标志的含义为The DLL can be relocated at load time.

    删除PE文件的ASLR功能

    Tips: 如果一个要详细分析的文件应用了ASLR功能,分析前可以暂时将ASLR功能删除,然后再调试分析,由于文件总是被加载到相同的内存地址,分析起来会更简便

    删除ASLR功能的方法很简单,只需将IMAGE_OPTIONAL_HEADERDllCharacteristics中的IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE标志去掉即可

    即将PE中8140的数据改为8100即可

  • 相关阅读:
    奇数阶魔方问题
    《DSP using MATLAB》示例9.3
    《DSP using MATLAB》示例9.2
    《DSP using MATLAB》示例9.1
    找个目标很重要
    《DSP using MATLAB》示例Example 8.30
    《DSP using MATLAB》示例Example 8.29
    《DSP using MATLAB》示例Example 8.28
    《DSP using MATLAB》示例Example 8.27
    《DSP using MATLAB》示例Example 8.26
  • 原文地址:https://www.cnblogs.com/dliv3/p/6411814.html
Copyright © 2011-2022 走看看