PE 结构解析

取之网络,还于网络,请大家多多指点,多数都是在网上看到的,手抄不易,多谢!

PE文件是什么?
PE(Protable Execute) 是Windows下可执行的文件,常见有DLL(动态库)Exe(可直接运行的程序)OCX(络,还于网络,请大家多多指点,多数都是在网上看到的,手抄不易,多谢!
PE文件是什么?PE(Protable Execute) 是Windows下可执行的文件,常见有DLL(动态库)Exe(可直接运行的程序)OCX(组件)SYS(驱动程序)等…,一个文件是否是PE文件与其扩展名无关,PE可以是任何扩展名。
PE文件的结构一般来说 分为起始位置DOS头,DOS块,NT头节表,及具体的节。

先来看ODS头结构:

typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
    USHORT e_magic;                     // Magic number
    USHORT e_cblp;                      // Bytes on last page of file
    USHORT e_cp;                        // Pages in file
    USHORT e_crlc;                      // Relocations
    USHORT e_cparhdr;                   // Size of header in paragraphs
    USHORT e_minalloc;                  // Minimum extra paragraphs needed
    USHORT e_maxalloc;                  // Maximum extra paragraphs needed
    USHORT e_ss;                        // Initial (relative) SS value
    USHORT e_sp;                        // Initial SP value
    USHORT e_csum;                      // Checksum
    USHORT e_ip;                        // Initial IP value
    USHORT e_cs;                        // Initial (relative) CS value
    USHORT e_lfarlc;                    // File address of relocation table
    USHORT e_ovno;                      // Overlay number
    USHORT e_res[4];                    // Reserved words
    USHORT e_oemid;                     // OEM identifier (for e_oeminfo)
    USHORT e_oeminfo;                   // OEM information; e_oemid specific
    USHORT e_res2[10];                  // Reserved words
    LONG   e_lfanew;                    // File address of new exe header
  } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

DOS头是用来兼容MS-DOS操作系统的,及指明NT的位置 目前DOS头只用到USHORT e_magic; //'MZ’头标识 和LONG e_lfanew; //定义到NT头的位置,跳过DOS和DOS块之间找到NT头。_IMAGE_DOS_HEADER结构体有64字节

DOS块 省略…

NT 头(PE头)先来看一下结构体

typedef struct _IMAGE_NT_HEADERS {
    ULONG Signature;
    IMAGE_FILE_HEADER FileHeader;//PE文件头
    IMAGE_OPTIONAL_HEADER32 OptionalHeader;//PE可选头(其实是必不可少的头)
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

ULONG Signature;//类似DOS头的标识,以十六进制查看为字母’PE’

看一下IMAGE_FILE_HEADER 结构体:

typedef struct _IMAGE_FILE_HEADER {
    USHORT  Machine;//该文件运行的平台
    USHORT  NumberOfSections;
    ULONG   TimeDateStamp;
    ULONG   PointerToSymbolTable;
    ULONG   NumberOfSymbols;
    USHORT  SizeOfOptionalHeader;
    USHORT  Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

不想写了 By

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值