PE结构

PE : 头文件解析

    dos头:

            word  e_magin ;      // “MZ标记”用于判断是否为可执行文件

            ......

            D word  e_IFanew   //    PE头相当于文件的偏移地址,用于定位PE文件

            通过dos头去寻找PE开始的地方:你知道 E8 是啥不

            //我想你应该知道这是啥,不然 你就自己看着办吧

    NP头:  50  45 00 00 NP标记

        标准PE头:

                word    Machine   *                            程序运行的CUP型号       00为任何型号       01 4C   为386及以后型号   

                word    NumberOfSections      *        除去PE头以外的区段数,节表个数

                Dword    TimeDateStamp        *        时间戳  map文件 知道不,(加壳)

                Dword    PointerToStamp 

                Dword    NumberOfSymbols

                word    SizeOfSymbols            *         可选PE头  的大小,32位默认E0h,   64位默认F0h

                word    Characteristics            *         每个位有不同的含义,需要转换成二进制去对应 相应选项

        可选PE头:

                word    Magic          *                               说明文件类型是多少位的文件    10B为32位,20B为64位

                Byte     MajorLinkerVersion           

                Byte     MinorLinkerVersion    

                Dword    sizeOfCode        *                     所有的代码的和,必须是FileAlignment的整数倍 , 编译器填的,

                Dword    sizeOfInitializedData    *          初始化的数据大小    必须是FileAlignment的整数倍 , 编译器填的,

                Dword    sizeOfUninitializedData    *     未初始化的数据大小    必须是FileAlignment的整数倍 , 编译器填的,

                Dword    AddressOfEntryPoint        *      ImageBase +程序入口 = 真正程序入口点    OEP    183D7

                Dword    BaseOfCode        *                   代码开始的基址, 编译器填的,(程序入口与代码开始是不一样的)

                Dword    BaseOfDate         *                   数据开始的基址, 编译器填的,

        *       Dword    ImageBase        *                     内存镜像基址(内存中所有的数据是从哪里开始的) 400000

                Dword    SectionAlignment     *               内存对齐  notpade在内存中的大小为1000h      

                Dword    FileAlignment        *                  文件对齐   notpade在文件中的对齐大小为200h

                word    MajorOperatingSystemVersion   

                word    MinorOperatingSystemversion   

                word    MajorImageVersion  

                word    MinorImageVersion  

                word    MajorSubsystemVersion  

                word    MinorSubsystemVersion 

                Dword    win32VersionValue   

                Dword    SizeOfImage *文件拉伸后的大小,可以比实际的值大,他有一个实际分的值,但必须是内存对齐的整数倍

                Dword    SizeOfHeaders    *            所有头+节表的大小    文件对齐

                Dword    CheckSum     *      用来判断文件是否被修改,由系统检查    PE所有的数据两个字节的加,得到一个数

                word    Subsystem    

                word    DllCharacteristics   

                Dword    SizeOfStackReserve        *       堆栈的最大值

                Dword    SizeOfStackCommit        *       堆栈的实际值

                Dword    SizeOfHeapReserve        *        堆的最大值

                Dword    SizeOfHeapCommit        *        堆的实际提交值

                Dword    LoaderFlags   

                Dword    NumberOfRvaAndSizes     *     目录项数   16   他后面还有16个结构,每个有特别的含义,

 

节表

            首先需要找到节表的位置

            8字节   name

            dword    节表未对齐时的数据尺寸(文件对齐)

            dword    该节表在内存中的位置

            dword    文件中拉伸后的大小

w w      dword     在文件中的位置

            3*word         无用数据

            dword    节表属性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值