zoukankan      html  css  js  c++  java
  • PE结构学习笔记(四)

    Chinese:

    这个篇幅将通过一个具体实例来从16进制文本中找到区块表

    1、首先用一个16进制编辑器(UltraEdit, WinHex etc..)打开一个可执行文件(exe)

    2、在00000200h找到PE Header,+04h的偏移地址是File Header,+14h的地址记录了IMAGE_OPTIONAL_HEADER32结构的大小

    3、+18h是OptionalHeader,OptionalHeader的地址加上SizeOfOptionalHeader即为区块表的地址:00000218h + E0h = 000002F8h

    4、区块表结构如下:

    typedef struct IMAGE_SECTION_HEADER
    
    {
    
    BYTE Name[IMAGE_SIZEOF_SHORT_NAME];  //节表名称,如".text", IMAGE_SIZEOF_SHORT_NAME=4
    
    union
    
    {
    
    DWORD PhysicalAddress;  //物理地址
    
    DWORD VirtualSize;  //真实长度
    
    } Misc;
    
    DWORD VirtualAddress;  //节区的RVA地址
    
    DWORD SizeOfRawData;  //在文件中对齐后的尺寸
    
    DWORD PointerToRawData;  //在文件中的偏移量
    
    DWORD PointerToRelocations;  //在obj文件中使用,重定位的偏移
    
    DWORD PointerToLinenumbers;  //行号表的偏移(供调试使用地)
    
    WORD NumberOfRelocations;  //在ojb文件中使用,重定位项数目
    
    WORD NumberOfLinenumbers;  //行号表中行号的属木
    
    DWORD Characteristics;  //节属性 如可读、可写、可执行等
    
    } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

    可以算出每个区块表的结构占40个字节,专成16进制就是28h,也就是说第二个区块表的地址是0x000002F8h + 28h = 0x00000320h

    5、同理可以算出第三个、第四个、第五个。。。

  • 相关阅读:
    有关需求规格说明
    软件导论第五周作业-------简单小结
    初用sqlite3.exe
    软件开发与模型
    Difference **面向过程(或者叫结构化)分析方法**面向对象分析方法
    当下互联网创业公司采用增量模型的原因
    第七周作业
    第六周作业
    第五周作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/maplewan/p/3231343.html
Copyright © 2011-2022 走看看