代码之家  ›  专栏  ›  技术社区  ›  Roger Costello

Windows可执行文件的数据目录项和节头项有什么区别?

  •  0
  • Roger Costello  · 技术社区  · 6 年前

    我有一个Windows可执行文件 .exe 文件。我偷看了一下文件,发现了 Data Directory. 其中有一个 Thread Local Storage . 该条目指定:

    RVA (Relative Virtual Address) of the data: 10000
    Size of the data: 24
    

    我在可执行文件中找到了Section表,它包含一个名为 .tls

    Pointer to the raw data: A400
    Size of the raw data: 512
    

    可执行文件的这两个部分有什么区别?它们似乎都在谈论线程本地存储,但它们指向不同的位置并指定不同的大小。

    这只是一个例子。下面是另一个例子:在 Data Directory 是一个 Import Directory Section Table 是一个 Section Header 命名 .idata

    还有其他的例子。

    表格中的条目有什么区别 数据目录 entries 在里面 the Section Table ?

    0 回复  |  直到 6 年前
        1
  •  0
  •   J. Stone    5 年前

    EXE通常在ram中加载到adres 0c00400000或更高版本

    exe也是从节构建的,当加载到ram时,这些节通常与4096对齐(在不同的ram页中),而在磁盘上的exe文件中,它们通常与512对齐(以节省空间)

    例如,ram中的0x00401007 adres,rva中的0x1007,文件中的0x207。。。PE格式一些信息作为RVA提供,一些作为集合文件。。。该节中包含的数据的大小也可以表示为未对齐(比如177)和对齐(比如512),这是相同的大小,但是一个对齐,一个不对齐。。