zoukankan      html  css  js  c++  java
  • PE文件格式资源

    一、资源的树形结构

    二、有关资源的数据结构

    (1)

    IMAGE_RESOURCE_DIRECTORY struct

    +00h  Characteristics              dd

    +04h  TimeDateStamp            dd

    +08h  MajorVersion                dw

    +0ah  MinorVersion                dw

    +0ch  NumberOfNameEntry     dw             ;使用名字命名的资源条目数量

    +0eh  NumberOfIdEntry          dw             ;使用id命名的资源条目数量,

    IMAGE_RESOURCE_DIRECOTRY ends

    资源条目数量=NumberOfNameEntry + NumberOfIdEntry,即IMAGE_RESOURCE_DIRECTORY_ENTRY的数量

     (2)

    IMAGE_RESOURCE_DIRECTORY_ENTRY struct

    +00h  Name1                 dd            

    +04h  OffsetToData        dd            

    IMAGE_RESOURCE_DIRECTORY_ENTRY ends

    说明:

    Name1:位31为0,表示的id值,为1,表示的是指向名字IMAGE_RESOURCE_DIR_STRING_U的偏移指针,注意是相对资源首地址的偏移。

    OffsetToData:当为1、2级目录时,此时位31为1,指向下级目录IMAGE_RESOURCE_DIRECOTRY首地址,当为3级目录时,此时位31为0,指向  IMAGE_RESOURCE_DATA_ENTRY

    Name1和OffsetToData如果为偏移时,指的是相对资源首地址的偏移

    (3)

     IMAGE_RESOURCE_DIR_STRING_U struct

    +00h  Length              dw             ?      ;字符串的长度

    +02h  NameString         WCHAR      ?      ;UNICODE字符串,字对齐的、长度可变,由Length指明Unicode字符串的长度

    IMAGE_RESOURCE_DIR_STRING_U ends

    (4)

    IMAGE_RESOURCE_DATA_ENTRY struct

    +00h  OffsetToData                    dd             ;资源数据的RVA

    +04h  Size                                 dd            ;资源数据的长度

    +08h  CodePage                         dd          

    +0ch  Reserved                          dd

    IMAGE_RESOURCE_DATA_ENTRY ends

  • 相关阅读:
    持久层框架:MyBatis 3.2(2)
    持久层框架:MyBatis 3.2(1)
    循环结构(二)
    Android LayoutInflater详解
    为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
    Android Support v4、v7、v13的区别和应用场景
    Android的string-array数据源简单使用
    FragmentTabHost切换Fragment时避免重复加载UI
    Ubuntu 安装Chrome步骤
    慢慢来,让好习惯自然来
  • 原文地址:https://www.cnblogs.com/guanlaiy/p/2490091.html
Copyright © 2011-2022 走看看