2016-11-10 9 views
0

Я разрабатываю 64-битное приложение с несколькими DLL-файлами.Windows 64-разрядное адресное пространство

Исходя из выигрыша 32, где базовый адрес по умолчанию загруженной dll был 0x10.000.000, а затем они перемещались, когда возникали конфликты.

John Robbins от Wintellect рекомендовал установить DLL с уникальными адресами, поэтому использование памяти было одинаковым на разных прогонах.

Он предложил в книге по отладке приложений .net 2.0, что базовые адреса должны руководствоваться первой буквой имени dll.

ас 0x60.000.000
ДФ 0x61.000.000
ги 0x62.000.000
JL 0x63.000.000
мо 0x64.000.000
пр 0x65.000.000
су 0x66.000.000
ъх 0x67.000.000
yz 0x68.000.000

Я думаю, что это изменилось с 64 бит. (по крайней мере, адреса). Кто-нибудь нашел лучшее решение? (так что адрес от одного запуска на другом компьютере, может быть сопоставлен с моим
-. Или минидампа сделал где-то может быть загружена мной)

+0

Введение ASLR аннулирует старые аргументы в отношении базовых адресов, поскольку (1) ASLR изменяет ваш базовый адрес в случайном порядке; вы редко загружаетесь на свой номинальный базовый адрес и (2) вместе с ASLR вышли более эффективным алгоритмом перемещения, поэтому стоимость переустановки DLL очень низкая, TL; DR: это руководство больше не применяется, как только вы ASLR. –

ответ

2

Поскольку вы двигаетесь до 64 бит, я думаю, что вы» re для Windows Vista или выше, поскольку XP 64 бит никогда не был таким популярным (и расширенная поддержка закончилась).

С Windows Vista была введена рандомизация адресного пространства (ASLR), что повышает безопасность, поскольку угадывание мест памяти стало сложнее.

ASLR будет рандомизировать базовый адрес и разрешен с помощью /DYNAMICBASE (MSDN). Таким образом, больше не нужно генерировать или вычислять базовый адрес.

Как вы сказали, перезагрузка может произойти уже в 32-битных приложениях. Это и ASLR не повлияют на отладки аварийных дампов. Отладчик сможет разрешить символы.

+0

ОК, спасибо, я посмотрю в/DynamicBase – kfn

 Смежные вопросы

  • Нет связанных вопросов^_^