我最近对反射代码注入及其“老兄”过程的镂空产生了兴趣。在这两种情况下,可执行映像都被加载到主机进程的地址空间中,而且我一直在听到,一旦将加载的可执行文件复制到主机进程的地址空间中,通常有必要“重新设置”。如果我错了,请纠正我,但是加载的映像中与其在主机进程的地址空间中的实际位置有关的值需要反映(不是双关语),是吗?
我听说这需要解析重定位目录和一些值,例如PE(可执行)文件的PE Optional Header中的ImageBase值,但是我不确定解析重定位目录是做什么的,也不确定如何做我也不确定在加载的可执行文件中需要修改哪些特定值以对其进行重新设置。
所以我知道我们为什么要重新设置基准,我只是想概述一下在将可执行文件反射性地加载到主机进程的地址空间中后,完全重新编制可执行文件的过程。