"e_lfanew" PE 格式的 DOS 标头中是什么意思?



IMAGE_DOS_HEADER中的PE(Windows可执行式)格式中有一个称为e_lfanew的字段,它具有非常重要的作用,因为它指向了实际的PE标头数据。

我的问题是," e_lfanew"实际上代表什么?这是什么意思?太神秘了。

编辑:我不是问它的作用,我知道它的作用,我想知道e_lfanew中的字母实际上是什么,为什么给出该名称?

我的解释是,它是 l ogical f ile a a ddress新可执行头。

主要基于此P/Invoke C#image_dos_header结构的定义:

public Int32 e_lfanew;      // File address of new exe header

和@hans Passant的评论:

e_前缀有助于处理尚未将结构成员保留在其自己的符号表中的旧k& r编译器。

以及@Simon Kissane的后来评论:

IMAGE_DOS_HEADER内部有两个字段以e_lfa开头:

  • WORD e_lfarlc; // File address of relocation table
  • LONG e_lfanew; // File address of new exe header

" lfa"似乎是指"逻辑文件地址",意思是相对于可执行文件的开始的偏移。

最新更新