我试图更好地理解PE格式,并且想知道PE文件中的节与数据目录之间的关系是什么。打开PE文件时,我注意到它们经常重叠,但是我不清楚它们为什么或如何关联,而且Microsoft的官方PE文件格式规范似乎并没有使它变得更清晰。
我知道部分标题的名称值可以更改,因此不能保证对特定块的引用,因此应依赖这些数据目录在文件中查找特定块。
在我打开的一个示例PE文件中,我注意到.text节具有与Import Address Table数据目录头相同的偏移量,尽管IAT大小被列为8,而.text节的大小为6804。相比之下,资源数据目录头声明其起始于16384,长度为1568-精确地与.rsrc节的条目相符。后者对我有意义,而前者则没有。
那么,节与数据目录的不同目的是什么?为什么这两个概念都存在,又为什么有时它们重叠,而这似乎对他们没有意义呢?