0x00 作用
绑定导入表是为了加快程序的加载程序,因为正常PE加载的时候,要去检查导入表并将相关的DLL映射到进程空间地址,并将导入表的FirstThunk指向的数组填入函数的真实地址,这一步需要花费很多时间,绑定导入表就是为了解决此环节的问题,绑定导入表中保存了导入函数的真实地址,PE加载的时候系统会检测是否有绑定导入表,就会直接将函数地址写入FirstThunk。
但是绑定导入表的生效,有两个前提条件:
1.程序初始化时,导入的DLL都加载到了首选基址中
2.程序执行了绑定导入操作以后,导入DLL中引用的符号位置一直没有变化
俩个条件有一个不符合的话,就不可以绑定,
0x01 结构
数据目录表( DataDirectory )的第12个成员
它包含了可以让加载器判断绑定的地址是否合法的信息。描述它的数据结构是IMAGE_BOUND_IMPORT_DESCRIPTOR,目录表就是这种结构的数组,每一项都对应一个被绑定过的DLL。
typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
DWORD TimeDateStamp;
WORD OffsetModuleName;
WO