简体   繁体   中英

Windows 64bit address space

I am developing a 64 bit application with a couple of dll's.

Coming from win 32, where the default base address of the loaded dll's was 0x10.000.000 and then they where moved, when conflicts arose.

John Robbins from Wintellect recommended to set the dll's with unique addresses, so the memory space use was the same on different runs.

He suggested in the book on debugging .net 2.0 applications that the base addresses should be guided by the first letter of the dll's name.

ac 0x60.000.000
df 0x61.000.000
gi 0x62.000.000
jl 0x63.000.000
mo 0x64.000.000
pr 0x65.000.000
su 0x66.000.000
vx 0x67.000.000
yz 0x68.000.000

I am thinking that has changed with 64 bit. (at least the addresses). has anyone found a better solution? (so the address from one run on another pc, can be mapped to mine?
- or a minidump made somewhere can be loaded by me.)

Since you move to 64 bit, my guess is that you're targeting Windows Vista or higher, since XP 64 bit was never that popular (and extended support ended).

With Windows Vista, address space randomization (ASLR) was introduced, which increases security, because guessing memory locations became harder.

ASLR will randomize the base address and is enabled with /DYNAMICBASE (MSDN) . Thus, there is no need to generate or calculate a base address yourself anymore.

As you said, rebasing could happen in 32 bit applications already. This and ASLR will not have an impact on debugging crash dumps. The debugger will be able to resolve the symbols.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM