在 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"似乎是指"逻辑文件地址",意思是相对于可执行文件的开始的偏移。