• 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、同理可以算出第三个、第四个、第五个。。。

  • 相关阅读:
    Angular 路由的参数传递
    Angular 指令的属性和事件绑定
    Angular 组件的双向绑定
    Angular 组件视图封装模式
    Angular 组件生命周期的顺序
    简谈 Angular 动态绑定样式的几种方法
    Angular 表单快速入门
    如何在 Angular CLI 创建的项目中自定义 webpack 配置
    bootstrap图标菜单按钮组件
    vue指令
  • 原文地址:https://www.cnblogs.com/maplewan/p/3231343.html
Copyright © 2020-2023  润新知