zoukankan      html  css  js  c++  java
  • PE头里的东西更多。。。越看越恶心了,我都不想看了

    winnt.h

    中,定义的PE头结构体

    typedef struct _IMAGE_NT_HEADERS
    {
    DWORD Signature;//PE文件头标志:PE。在开始DOS header的偏移3CH(e_lfanew)处所指向的地址开始
    IMAGE_FILE_HEADER FileHeader;//PE文件物理分布的信息
    IMAGE_OPTIONAL_HEADER32 OptionalHeader;//PE文件逻辑分布的信息
    } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

    PE文件的物理分布信息,结构体

     
    typedef struct _IMAGE_FILE_HEADER
    {
    WORD Machine;//该文件运行所需要的CPU,对于Intel平台是14Ch
    WORD NumberOfSections;//文件的节数目
    DWORD TimeDateStamp;//文件创建日期和时间
    DWORD PointerToSymbolTable;//用于调试
    DWORD NumberOfSymbols;//符号表中符号个数
    WORD SizeOfOptionalHeader;//OptionalHeader 结构大小
    WORD Characteristics;//文件信息标记,区分文件是exe还是dll
    } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
    重要的 Characteristics值
    #define IMAGE_FILE_RELOCS_STRIPPED 0001h // 文件中是否存在重定位信息
    #define IMAGE_FILE_EXECUTABLE_IMAGE 0002h // 文件是可执行的
    #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0020h // 程序可以触及大于2G的地址
    #define IMAGE_FILE_BYTES_REVERSED_LO 0080h // 保留的机器类型低位
    #define IMAGE_FILE_32BIT_MACHINE 0100h // 32位机器
    #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0400h // 不可在可移动介质上运行
    #define IMAGE_FILE_NET_RUN_FROM_SWAP 0800h // 不可在网络上运行
    #define IMAGE_FILE_SYSTEM 1000h // 系统文件
    #define IMAGE_FILE_DLL 2000h // 文件是一个DLL
    #define IMAGE_FILE_UP_SYSTEM_ONLY 4000h // 只能在单处理器计算机上运行
    #define IMAGE_FILE_BYTES_REVERSED_HI 8000h //保留的机器类型高位

    PE文件的逻辑分布信息,结构体

    typedef struct _IMAGE_OPTIONAL_HEADER
    {
    WORD Magic;//标志字(总是010bh)
    BYTE MajorLinkerVersion;//连接器高版本号
    BYTE MinorLinkerVersion;//连接器低版本号
    DWORD SizeOfCode;//代码段大小
    DWORD SizeOfInitializedData;//已初始化数据块大小
    DWORD SizeOfUninitializedData;//未初始化数据块大小
    DWORD AddressOfEntryPoint;//PE装载器准备运行的PE文件的第一个指令的RVA,若要改变整个执行的流程,
    可以将该值指定到新的RVA,这样新RVA处的指令首先被执行。DWORD BaseOfCode;//代码段起始RVA
    DWORD BaseOfData;//数据段起始RVA
    DWORD ImageBase;//PE文件的装载地址
    DWORD SectionAlignment;//块对齐因子
    DWORD FileAlignment;//文件块对齐因子
    WORD MajorOperatingSystemVersion;//所需操作系统高位版本号
    WORD MinorOperatingSystemVersion;// 所需操作系统低位版本号
    WORD MajorImageVersion;//用户自定义高位版本号
    WORD MinorImageVersion;//用户自定义低位版本号
    WORD MajorSubsystemVersion;//win32子系统版本。若PE文件是专门为Win32设计的
    WORD MinorSubsystemVersion;//该子系统版本必定是4.0否则对话框不会有3维立体感
    DWORD Win32VersionValue;//保留值,系统没用到的,一般被作为是否感染的标志
    DWORD SizeOfImage;//内存中整个PE映像体的尺寸
    DWORD SizeOfHeaders;//所有头+节表的大小
    DWORD CheckSum;//校验和
    WORD Subsystem;//NT用来识别PE文件属于哪个子系统
    WORD DllCharacteristics;// 用来表示一个DLL映像是否为进程和线程的初始化及终止包含入口点的标记
    DWORD SizeOfStackReserve;//
    DWORD SizeOfStackCommit;//
    DWORD SizeOfHeapReserve;//
    DWORD SizeOfHeapCommit;//
    //堆栈大小 这些域控制要保留的地址空间数量,并且负责栈和默认堆的申请。在默认情况下,
    栈和堆都拥有1个页面的申请值以及16个页面的保留值
    DWORD LoaderFlags;// 告知装载器是否在装载时中止和调试,或者默认地正常运行
    DWORD NumberOfRvaAndSizes;// 该字段标识了接下来的DataDirectory数组个数。
    IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
    //IMAGE_DATA_DIRECTORY 结构数组。每个结构给出一个重要数据结构的RVA,比如引入地址表等
    }IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
     

  • 相关阅读:
    radio按钮组和label标签
    div布局
    bootstrap模态框使用
    bootstrap按钮组下拉菜单使用
    Bootstrap下拉菜单和导航栏的使用
    Bootstrap源码解读下拉菜单
    python中django学习2
    windows下配置桌面github
    状态模式--无尽加班何时休
    直接在安装了redis的Linux机器上操作redis数据存储类型--set类型
  • 原文地址:https://www.cnblogs.com/suanguade/p/4038271.html
Copyright © 2011-2022 走看看