我的stub是从dll中注入到宿主程序的。当然stub重定位是按照宿主的imagebase进行重定位的,当宿主程序重新启动不是按原先imagebase加载时,程序是运行不起来的。
解决办法就是 修改IMAGE_OPTIONAL_HEADER ,DllCharacteristics字段
代码如下:
PIMAGE_NT_HEADERS pNt=peTool.GetNTheaderPt();
pNt->OptionalHeader.DllCharacteristics &= ~IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE;//去掉这个属性就OK,禁止它的随机基质加载