“PE文件格式”1.9版 完整译文(附注释)(2)
2007-01-14 20:15:21 来源:WEB开发网TIS文件规定:
IMPORTFLAGS(输入标志)
TIME/DATESTAMP(时间/日期戳)
MAJORVERSION-MINORVERSION(主版本号-小版本号)
NAMERVA(名字的RVA)
IMPORTLOOKUPTABLERVA(输入查询表的RVA)
IMPORTADDRESSTABLERVA(输入地址表的RVA)
而别处使用的对应结构是:
OriginalFirstThunk(原始第一个换长)
TimeDateStamp(时间日期戳)
ForwarderChain(中转链)
Name(名字)
FirstThunk(第一个换长)
最后一个关于输入目录的需要细讲的就是所谓的“新式”绑定(在参考书目[3]中讲述),它也可以由“绑定”工具来处理。当使用这种方式时,“时间日期戳”的所有位被置为1,并且没有中转链;此时所有输入符号的地址都将被补正,而不管它们是不是中转的。尽管如此,你还是需要知道DLL的版本,并且你还是需要将序数符号从中转符号中区分开来。为了达到这个目的,IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT(绑定输入目录项)目录被创建了。就我所见,它将不被放在节中,而是被放在头中,处于节头之后第一节之前。(咳,这不是我的发明,我只是讲述它而已!)
这个目录告诉你,每一个已使用的DLL文件的中转输出是从哪些别的DLL文件中来的。
结构是IMAGE_BOUND_IMPORT_DESCRIPTOR(绑定输入描述结构)形式的,包括(按这个顺序):
一个32位数字,“时间戳”。
一个16位数字,“OffsetModuleName(模块名字偏移量)”,是从目录开头到以0结尾的DLL文件名的偏移量;
一个16位数字,“NumberOfModuleForwarderRefs(模块中转参考的数字)”,给出这个DLL文件为它的中转使用的DLL文件数。
更多精彩
赞助商链接