Windows DLL Rebase 0x10000000 and Beyond

Windows DLL Rebase

If you create a windows dll with Visual Studio it sets the Base address of 0x10000000. When you perform a Windows DLL Rebase you are basically setting another memory address.

Why the need to Windows DLL Rebase, why not leave it at 0x10000000. Well dll files are loaded into memory according to their base, and 2 DLL Files cannot be loaded into the same base address. When Windows Notices a duplicated base address it will load find a empty base and load it there.

This may sound fine, but the problem occurs when you are luging around large multi megabit dlls. It really compramises the applications load time. The end user then thinks the application is crap because it loads so slowly. Just something to remember for future purposes.

This can also be a pain in the arse for any programmer trying to debug the app, as a bluescreen will create an error and dump file that refelcts a non-permament or non-existant base address.

Windows DLL Rebase Solution

Well I've not written an article on how to perform a Windows DLL Rebase, just the concept and why you need not do this. Now that you understand what and why check out this article at the CodeProject.com Need for Rebasing a DLL