导出表位置在可选头成员:
0x60 _IMAGE_DATA_DIRECTORY DataDirectory[16];
有16个目录 每个目录占8个字节
第一个目录:导出表结构
IMAGE_DIRECTORY_ENTRY_EXPORT
struct _IMAGE_DATA_DIRECTORY {
0x00 DWORD VirtualAddress;
导出表的内存地址偏移,RAV
0x04 DWORD Size;
导出表的大小,没有意义,导出表有自己的方式约定它有多大
};
VirtualAddress;
导出表的内存地址偏移(RAV),根据这个值,去找真正的导出表在哪里.这个
VirtualAddress
是拉伸后的内存偏移,如果在文件中寻找 则需要把这个值转换成foa再去寻找。
(
之前的拉伸只是为了练习方便,
实际对文件的操作
,只需要一个文件缓冲区,用RVA转换成FOA,然后进行操作。对已经运行在内存中程序操作 则不需要转换,用模块地址+这个偏移即可
)
Size;