Как выглядит карта памяти процесса Windows? - PullRequest
14 голосов
/ 15 апреля 2011

Это может быть повторяющийся вопрос. Я хотел бы знать, как карта памяти процесса Windows выглядит? Я ищу детали. Пожалуйста, предоставьте ссылки на блоги, статьи и другую соответствующую литературу.

1 Ответ

10 голосов
/ 16 апреля 2011

Мне всегда нравится видеть вещи, а не просто читать теорию.Согласно этой записи в блоге , получается, что если вы открываете программу с помощью windbg, даже если она не запущена, она все равно отображается в адресном пространстве, как если бы она была.Таким образом, ваше окно разборки в переносном смысле (не гарантирует загрузки вашего кода по этим точным адресам) показывает вам, что находится по этим адресам в терминах кода:

WinDbg working

Конечно, вы можетеНе гарантируйте эти адреса благодаря ASLR, но он дает вам представление / заставляет задуматься: адреса памяти также являются просто кодом.Код и память хранятся в том же (виртуальном) пространстве, что и в архитектуре Von Neumann , которую реализует большинство современных компьютеров.К сожалению, так как нет стека, кучи и т. Д., Вы не можете перемещаться и смотреть на них.

В этом блоге от Microsoft представлен обзор высокого уровня виртуального адресного пространства.Как видите, половина из них зарезервирована для использования операционной системой, а другую половину вы можете заполнить всем, что у вас есть (код, malloc вызовы, распределение стека и т. Д.).

С точки зрения того, как адресное пространство работает на стороне пользователя, эта диаграмма помогла мне понять это.Он связан в этом вопросе , который предоставляет ряд приличных ссылок на различные возможные карты.Помните, однако, что расположение в памяти будет отличаться с точки зрения частей.

Важно помнить, что все это, программа, данные, стек, куча, содержимое ядра, представляет собой одну большую последовательную последовательность адресов памяти, хотя они могут или не могут фактически преобразовываться в реальные адреса памяти.

Пока вы занимаетесь этим, вас также может интересовать, как исполняемый файл отображается на диске. В этой статье и в этой статье, в частности , представлен некоторый углубленный анализ формата файла PE.В последней статье также есть небольшая диаграмма, показывающая примерно, как данные mmap'd.

...