But I don't see how it's related to the default base address chosen by linkers being 0x00400000. It's just a field in the PE header and can be easily changed.
Tool is now deprecated because ALSR and reason that all apps/libraries should be relocable runtime.
Sure you need to (unless it's some kind of a base independent code like a well-written shellcode). I was just saying that 0x00400000 isn't hard-coded in the x86 architecture or in Windows and it can be set to anything (aligned to 0x10000 boundary).
(This, by the way, as a full time IT guy for 6+ years bc of bad Windows software makes me continuously feel the opposite; I did not even open a Hotmail/Live account until I was forced to try and report a bug with MSFT Connect, which requires it.)
On a serious note MSFT Connect is basically a ghost town. There are so many well documented and easily reproducible issues logged on Connect that languish there for months and months with no-one paying attention. I logged a fairly crippling issue with IIS7, complete with steps to repro, and it was ignored.
The only way to get any kind of support is to pay for a PSS incident. If the root cause does lie firmly in MS's backyard they do at least refund your money. I even got a knowledge base article written up about one of my PSS logged issues :)
(ex-Gold Partner IT guy here)
Also, as the article mentions, other OSes like WinNT are capable of mapping executables within the first 1mb. Virtual memory and paging can hide the BIOS area away. I think your statement about "original 32bit operating systems" is inaccurate. The limitations given in win95 appears to be mostly due to win3.x legacy backwards compability.
In fact, the main article explains everything accurately. Your summary is more confusing than helping.