Хотя я в настоящее время интересуюсь адресным пространством Internet Explorer, я бы не ответил на общий ответ. Вопрос в том, как я могу вычислить адресное пространство (а по адресному пространству - это минимальный и максимальный адрес в памяти - скорректируйте меня, если я ошибаюсь) процесса windows. На самом деле это пространство фиксированное или разнообразное? Также я узнаю виртуальное или физическое адресное пространство, и если тот, который я получаю, является визуальным, является ли это сопоставление одинаковым для каждого экземпляра IE i open? У меня есть отладчик (ollydbg, чтобы быть конкретным), и я полагаю, я мог бы получить некоторую информацию от него, но я не могу указать, что и как. Пожалуйста, несите мою нехватку знаний, спасибо.Internet Explorer Адресное пространство
ответ
Как прокомментировали wj32, приложения пользовательского режима имеют дело только с виртуальной памятью. Все они имеют одинаковое виртуальное адресное пространство, размер которого обычно составляет около 2 ГБ (может быть настроен в противном случае, общий для серверов БД). Точные адреса можно получить, используя GetSystemInfo
. Например, в моей системе, это то, что я получаю:
Python 2.6.3
>>> import win32api
>>> win32api.GetSystemInfo()
(0, 4096, 65536, 2147418111, 3L, 2, 586, 65536, (6, 5898))
3-й и 4-й привел значения указывают/макс адреса памяти мин, так что с точки зрения пользовательского режима все процессы получают 65536-2147418111 в их адрес пространство, примерно 2 ГБ. Однако я не думаю, что эта информация вам очень поможет. Если вы ищете страницы с определенными атрибутами в адресном пространстве процесса, вы можете использовать VirtualQueryEx
(как снова прокомментировал wj32). Поведение VirtualQueryEx
позволяет вам называть его несколько раз, начиная с адреса процесса и увеличивать его в соответствии с предыдущим результатом вызова и получать полное представление о целевом пространстве памяти процесса.
Yonilevy правильный. Приложение в режиме пользователя может видеть только виртуальную память. Таким образом, все приложения имеют единое адресное пространство. OS и MMU (блок управления памятью) преобразуют адрес виртуальной памяти в физический адрес. Если физический адрес не кэшируется в физической памяти, он будет извлекаться с жесткого диска.
В общем, все приложения в операционных системах Windows работают с виртуальной памятью. Виртуальная память - это особенность, которая сильно зависит от аппаратной поддержки со стороны процессора. Как только эта функция будет включена, процессор будет обрабатывать все обращения к памяти посредством преобразования адресов в соответствии с информацией в таблицах страниц, определенных ядром. Но, с другой стороны, мы можем утверждать, что все приложения в Windows работают с физической памятью, потому что процессор может выполнять код и обрабатывать данные только в том случае, если они находятся в ОЗУ, также называемой физической памятью.
Виртуальная память - это всего лишь функция, которая позволяет осуществлять манипулирование файлами по переводу адреса памяти. Приложение режима ядра отличается от приложения режима пользователя только тем, что приложение режима ядра имеет доступ к таблицам страниц, и этим может влиять на перевод адреса доступа к памяти в адрес естественной физической памяти. Напротив, приложение режима пользователя не имеет этих прав, поскольку оно сломает всю надежность и надежность системы.
Согласно проекту Windows, все процессы приложения (в том числе Internet Explorer), одну и ту же адресное пространство макета, где:
- Некоторые небольшая часть малых виртуальных адресов зарезервирован для ловли NULL указатель разыменования. Попытка доступа к этому региону приведет к ошибке нарушения доступа.
- Некоторая огромная часть высоких адресов зарезервирована для кода режима ядра. Этот регион недоступен из приложения режима пользователя и используется всеми процессами в системе.
- Часть в середине, предназначенная для кода приложения и данных.И каждый процесс в системе имеет свой собственный макет того региона, который неявно использует свою собственную физическую память.
Если небольшая часть в начале выглядит как постоянный размер 64 КБ. Граница между приложением и ядром части адресного пространства может находиться в двух местах. Первая - широко распространенная граница по умолчанию, которая назначает 2Gb адресов в верхней части адресного пространства для ядра. Но ядро Windows можно запустить с помощью специального параметра, который уменьшает размер части ядра адресного пространства до 1 ГБ. Этот конфигуратор ядра обычно используется на серверах, которые запускают базы данных, потому что приложение bdatabase хочет иметь как можно большую площадь адресного пространства из-за причин производительности.
Макет части приложения адресного пространства процесса кажется относительно стабильным. Он может слегка меняться в зависимости от конфигурации приложения и приложений. Это справедливо для всех систем Windows вплоть до Vista. Начиная с Windows Vista Microsoft применяет ASLR (рандомизация макета адресного пространства). Цель этой функции состоит в том, чтобы сломать описанное выше сходство адресного пространства всех процессов, выполняющих одно и то же приложение. Эта функция применяется в силу соображений безопасности.
Чтобы использовать макет память процесса уже упоминался другими ребятами WinAPI системных вызовов:
GetSystemInfo()
- Для того, чтобы получить информацию о прикладной части границ адресных пространств.VirtualQueryEx()
- Получить общую информацию о расположении адресного пространства.- Другие функции WinAPI для получения более подробной информации об областях адресного пространства в зависимости от его типов. Посмотрите в MSDN для .
- 1. Обработать виртуальное адресное пространство и адресное пространство ядра? Как?
- 2. Адресное пространство @AsyncWebService WebLogic
- 3. PThreads Адресное пространство
- 4. Объясните адресное пространство Linux?
- 5. Только Internet Explorer показывает 1px нежелательное пространство
- 6. Windows 64-разрядное адресное пространство
- 7. Адресное пространство системных DLL-адресов
- 8. Виртуальное адресное пространство в окнах
- 9. Адресное пространство, независимое представление объектов
- 10. Общее адресное пространство в Cython
- 11. ARM linux: адресное пространство процесса
- 12. адресное пространство Библиотека или процесс
- 13. несколько потоков виртуальное адресное пространство?
- 14. sed - адресное пространство между "{" и "},"
- 15. Адресное пространство для шифрования XML
- 16. , что адресное пространство макета рандомизации
- 17. определить адресность, зная адресное пространство
- 18. Расширение границы Internet Explorer
- 19. Как удалить дополнительное пространство после индекса 2 в Internet Explorer
- 20. Большое свободное пространство после содержимого skrollr - Internet Explorer 8
- 21. Возврат каретки вызывает визуальное пространство в Internet Explorer 8
- 22. internet explorer 7 css problem
- 23. адресное пространство процесса и виртуальной памяти
- 24. Как ЦП знает адресное пространство PCI
- 25. Как изменить адресное пространство докеревого моста (подсеть)?
- 26. Адресное пространство OPC может быть загружено динамически?
- 27. линкеры, абсолютные ссылки и адресное пространство процессов
- 28. Адресное пространство в городе Go (lang)?
- 29. Виртуальное адресное пространство против виртуальной памяти
- 30. адресное пространство переменных, изменяющихся в программе c
Я подозреваю, что вы не задаете вопрос, который действительно хотите задать. Зачем вам нужен минимальный и максимальный адрес пользователя? Вы можете сделать это легко, вызвав GetSystemInfo, но чего вы пытаетесь достичь? Кроме того, что вы подразумеваете под «физической памятью»? Программы с пользовательским режимом напрямую не связаны с физической памятью. – wj32
Причина, по которой я не хочу этого делать, заключается в том, что я хочу построить некоторую информацию по адресному пространству. Я не знал, что программы с пользовательским режимом имеют дело только с виртуальной памятью. То, что я действительно хочу получить, - это границы адресного пространства проводника Windows (например, 0x222ef до 0xffffff) для установки границ моей оси, а также того, что эти адреса соответствуют тем же сегментам памяти, что и для моих измерений имея в виду. – laertis
В любом случае столбец «Адрес» панели «Карта памяти», в то время как я отлаживаю (с помощью ollydbg), отвечаю на мой вопрос? – laertis