zoukankan      html  css  js  c++  java
  • 逆向工程核心原理——第四十一章

    ASLR

    ASLR(地址空间布局随机化),针对缓冲区溢出的保护机制,微软从内核6开始使用的保护机制。

    我们写两个个简单的程序,一个打开ASLR,一个关闭ASLR,进行比较。

    ASLR.cpp

    #include<studio.h>
    
    void main()
    {
    	printf("ASLR test program...
    ");
    }
    

    随机地址打开

    我们得到两个exe文件ASLR和ASL_onR:


    (想打ASLR_on的,截图的时候才发现打错位了)

    用OD打开后找到main函数,会发现代码地址和栈地址不相同:

    然后我们查看两个文件的节区信息


    我们可以看到,打开基址随机的exe文件,多出来了一个节区(.reloc)

    这个节区,对于普通的exe文件来讲,是可有可无的(但对于DLL文件来说,是必须的),此节区的作用是为重定位提供参考,因为DLL文件总是需要重定位,对DLL文件来讲是必须的。

    对于拥有.reloc字节的exe文件来说,在其NT头IMAGE_FILE_HEADERCharacteristics属性中会比没有.reloc字节的exe文件多出来一个IMAGE_FILE_RELOCS_STRIPPED(1)标志:

  • 相关阅读:
    六大设计原则之依赖倒置原则
    六大设计原则之里氏替换原则
    六大设计原则之单一设计原则
    六、Spring之DI的Bean的作用域
    五、spring之DI循环依赖
    四、spring之DI
    十二 NIO和IO
    十一 Pipe
    十 DatagramChannel
    九 ServerSocketChannel
  • 原文地址:https://www.cnblogs.com/lex-shoukaku/p/13921393.html
Copyright © 2011-2022 走看看