zoukankan      html  css  js  c++  java
  • IMAGE_SECTION_HEADER

    typedef struct _IMAGE_SECTION_HEADER {
           BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
        union {
               DWORD PhysicalAddress;//不用关心,始终是NULL
               DWORD VirtualSize; //指出实际的、被使用的区块的大小(也就是区块的数据没有对齐处理的实际大小)16H个
        }     Misc;
         DWORD VirtualAddress; //该块装载到内存中的RVA
         DWORD SizeOfRawData;  //该块在磁盘文件中所占的大小
         DWORD PointerToRawData;//该块在磁盘文件中的偏移
         DWORD PointerToRelocations;//在EXE文件中无意义
         DWORD PointerToLinenumbers;
         WORD NumberOfRelocations;//由pointerToRelocations指向的重定位的数目
         WORD NumberOfLinenumbers;
         DWORD Characteristics; //块属性
    };
    
    BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; 8个字节大小
    .text  2E74657874000000 直接输入不用管大端小端序
    .rdata 2E72646174610000 直接输入不用管大端小端序
    .data  264617461000000  直接输入不用管大端小端序
    
    DWORD VirtualSize 
    .text  一种方法是填入默认的 1000H对齐  一种是直接指定大小00000016H
    .rdata 一种方法是填入默认的 1000H对齐 一种是直接指定大小00000052H
    .data  一种方法是填入默认的 1000H对齐 一种是直接指定大小0000000BH =HELLO WORLD 11个字节
    
    DWORD VirtualAddress; //该块装载到内存中的RVA:
    我们知道整个PE结构映射到内存中因为内存对齐为1000H大小,那么.text跟着PE结构 那么值就是
    .text  00001000H
    .rdata 00002000H
    .data  00003000H
    
    DWORD SizeOfRawData;  //该块在磁盘文件中所占的大小:
    因为映射到内存中的区块对齐默认是200H  所以这个值是 00000200H
    
    DWORD PointerToRawData;//该块在磁盘文件中的偏移:
    因为PE结构大小是220H 但是因为区块对齐所以要400H大小来装载PE结构,所以
    .text  00000400H 开始
    .rdata 00000600H 开始
    .data  00000800H 开始
    
    DWORD   Characteristics;   各二进制位表示的意义如下:
    
    .text   20000060H 直接输入不用管大端小端序
    
    .rdata  40000040H 直接输入不用管大端小端序
    
    .data   C0000040H 直接输入不用管大端小端序
    
    bit 5 (IMAGE_SCN_CNT_CODE),置1,节内包含可执行代码。 
       
    bit 6 (IMAGE_SCN_CNT_INITIALIZED_DATA)置1,节内包含的数据在执行前是确的。 
            
    bit 7 (IMAGE_SCN_CNT_UNINITIALIZED_DATA) 置1,本节包含未初始化的数据,执行前即将被初始化为0。一般是BSS.  
       
    bit 9 (IMAGE_SCN_LNK_INFO) 置1,节内不包含映象数据除了注释,描述或者其他文档外,是一个目标文件的一部分,可能是针对链接器的信息。比如哪个库被需要。 
         
    bit 11 (IMAGE_SCN_LNK_REMOVE) 置1,在可执行文件链接后,作为文件一部分的数被清除。
        
    bit 12 (IMAGE_SCN_LNK_COMDAT) 置1,节包含公共块数据,是某个顺序的打包的数。 
         
    bit 15 (IMAGE_SCN_MEM_FARDATA) 置1,不确定。  
        
    bit 17 (IMAGE_SCN_MEM_PURGEABLE) 置1,节的数据是可清除的。
          
    bit 18 (IMAGE_SCN_MEM_LOCKED) 置1,节不可以在内存内移动。
    
    bit 19 (IMAGE_SCN_MEM_PRELOAD)置1, 节必须在执行开始前调入。
          
    Bits 20 to 23指定对齐。一般是库文件的对象对齐。  
       
    bit 24 (IMAGE_SCN_LNK_NRELOC_OVFL) 置1, 节包含扩展的重定位。 
         
    bit 25 (IMAGE_SCN_MEM_DISCARDABLE) 置1,进程开始后节的数据不再要。
          
    bit 26 (IMAGE_SCN_MEM_NOT_CACHED) 置1,节的 数据不得缓存。
          
    bit 27 (IMAGE_SCN_MEM_NOT_PAGED) 置1,节的 数据不得交换出去。
          
    bit 28 (IMAGE_SCN_MEM_SHARED) 置1,节的数据在所有映象例程内共享,如DLL的初始化数据。 
         
    bit 29 (IMAGE_SCN_MEM_EXECUTE) 置1,进程得到“执行”访问节内存。
          
    bit 30 (IMAGE_SCN_MEM_READ) 置1,进程得到“读出”访问节内存。
          
    bit 31 (IMAGE_SCN_MEM_WRITE)置1,进程得到“写入”访问节内存。
  • 相关阅读:
    Python 3基础教程1-环境安装和运行环境
    Python+Selenium框架设计篇之-什么是POM
    CS/BS架构的特点
    HTTP 方法:GET 对比 POST
    apt的通讯信道是如何发现的?
    安全运维到运营
    僵尸网络是如何控制你的电脑的?
    了解资产,减少网络攻击面的威胁
    ISC安全大会感受
    mysql 在忘记密码不能登录情况下的设置方法
  • 原文地址:https://www.cnblogs.com/IMyLife/p/4826090.html
Copyright © 2011-2022 走看看