So while the EXEs of most x86 OS:es including Windows appear very different from .COMs or OBJs they are still actually x86 machinecode (despite beeing called portable in the case of windows) if you exclude header information?

Does Windows replace any part of the EXEs contents when it's loaded into memory (such as memory addresses) with current conditions (where the app is loaded, where DLLs are loaded)?