基址重定位表
基址重定位表(BASE RELOCATION Table)
位于可选头最后一个成员的第6个元素
转到基址重定位表
将基址1000+424(低12位)得到1424,这个RVA就是在文件中的硬编码的地址
转到1424(位于第一个节区)
1424地址对应的值为010010C8
将010010C8-01000000(基址)=10C8
再将10C8+00D90000(实际加载地址)=00D910C8
得到程序硬编码的实际映射地址
这个地址(00D910C8)其实就是IAT在映射中的地址
基址重定位表在EXE文件中没什么影响(可以删除),因为EXE文件加载到内存中时,OS会为进程分配独立的4GB空间,不存在重定位
而DLL,SYS文件,必须有基址重定位表,因为DLL,SYS文件是加载到EXE进程中的,如果有多个DLL,SYS文件,则需要重定位