After Rebasing the main program very high up in it's own imagebase.
How do I guarantee that the dll that gets loaded will load in 0x400000
dllImageBase = LoadLibrary("test.dll");
printf("imagebase = 0x%x", dllImageBase);
I always get 0x460000 instead of 0x400000
I need my dll first instruction to start from 0x401000, it used to start at 0x600000 before rebasing
Command for linker to rebase is
#pragma comment( linker, "/BASE:8000000")
So 0x400000 is actually free right now yet it doesn't use it by default.. so any way I can control it, where it should relocate. Some WIN32API maybe?
You are going to have to disable Address Space Layout Randomization to get the DLL loaded where you want it. A feature designed to stop you from what you are trying to do. /DYNAMICBASE linker option. Loading at 0x400000 worked when I tried it.