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

    第13章 PE文件格式

    书本上最开头,说到本章不仅会有PE文件格式的知识,还有进程、内存、DLL的相关内容。

    什么事pe文件:

    pe文件是指windows操作系统下使用的可执行文件格式。

    pe文件包括:

    种类 主扩展名
    可执行文件 EXE、SCR
    库系列 DLL、OCX、CPL、DRV
    驱动程序 SYS、VXD
    对象文件系列 OBJ
    注解:

    PE文件的基本结构:

    现在我们对上面的名词进行解释和补充:

    1.VA&RVA

    VA=进程虚拟内存的绝对地址。

    RVA(Relative Virtual Address)=相对虚拟地址,是指从某个基准位置(ImageBase)开始的相对位置。

    VA=RVA+ImageBase

    2 DOS头


    这是一个结构体,其中最重要的是两个:

    e_magic:DOS签名(4D 5A=>ascii“MZ”)

    e_lfanew:指示NT头的偏移

    所有PE文件在开始部分都会有DOS签名(“MZ”)

    3 NT头

    NT头第一个成员也是签名:50450000H(“PE”00)

    NT文件头中有四个重要的:

    1.Machine:

    每个CPU都有唯一的Machine码。

    2.NumberOfSections:

    用于指出文件中存在的节区数量。

    3.SizeOfIptionalHeader:

    用来指出IMAGE_OPTIONAL_HEADER32结构体的长度。

    4.Characteristics:

    用于标识文件的属性,文件是否是可运行的状态、是否是DLL文件等信息。

    NT可选头以下的较为重要:

    1.Magic:

    当位32结构体时,Magic为18B,当位64结构体时,Magic为20B.

    2.AddressOfRntryPoint:

    持有EP的RVA值,该值值出程序最先执行的代码起始地址。

    3.ImageBase:

    它指出文件优先装入地址。

    4.SectionAlignment,FileAlignment:

    PE 文件的Body部分划分为若干节区,用于存放不同类别的数据。

    5.SizeOfImage:

    PE文件加载到内存时,它制定了PE Image再虚拟内存中所占空间大小

    6.SizeOfHeader:

    用来指出整个PE头的大小。

    7.Subsystem:

    用来区分系统驱动文件和普通可执行文件。

    8.NumberOfTvaAndSizes:

    用来指定datadirectory

    9.DataDirectory:

    由IMAGE_DATA_DIRECTORY结构体组成的数组。

    4.节区头

    节选头中定义了各个节区的属性,比如我们前面提到的.code、.data、.res。

    5.RVA to RAW

    RAW = TVA - VirtualAddress + PointerToRawData

    6.IAT

    IAT就是导入表

    7.DLL

    动态链接库

  • 相关阅读:
    T-SQL查询语句
    数据库和表的管理
    数据库概念
    IRF2实验
    IFR2笔记
    校园网双网出口实验案例
    双机热备实验
    华为H3C(NAT)实验
    BGP(边界网关协议)实验
    Hybrid实验
  • 原文地址:https://www.cnblogs.com/lex-shoukaku/p/13306341.html
Copyright © 2011-2022 走看看