Skip to content
Process Memory Map
Pascal
Branch: master
Clone or download

README.md

ProcessMemoryMap

Утилита предназначена для отображения карты памяти процесса.

Отображает следующие данные:

  • кучи процесса
  • данные по нитям, как то: стек, TEB, SEH фреймы и CallStack
  • информация по подгруженным PE файлам с разбивкой на секции, точки входа в каждый загруженный образ
  • данные из PEB
  • данные из KUSER_SHARED_DATA
  • встроенный x86/x64 дизассемблер (на базе DiStorm 3.3)

Предоставляет возможность поиска блока данных по памяти процесса.

  • Анализ блоков памяти на основе их контрольных сумм.
  • Выводит список экспортируемых функций.
  • Поддерживает отладочные MAP файлы. (влияет на список распознанных функций и выхлоп дизассемблера)
  • Отображает изменения в выделенных блоках памяти (alloc/realloc/free)

###Сборка проекта:

Для самостоятельной сборки потребуется:

Сборка осуществляется с использованием Delphi 10.1 Berlin в режиме "Win32/Release", при этом автоматически будет собрана и подключена (в виде ресурса) 64-битная версия данной утилиты. Под более старыми версиями Delphi работоспособность ProcessMemoryMap не проверялась.

Внешний вид:

1

Как и в оригинальной утилите от Марка Руссиновича, присутствует фильтрация по типам данных. В данном случае отображаются только те блоки памяти, которые содержат системные данные (KUSER_SHARED_DATA, PEB, etc...)

2

Данные всех поддерживаемых структур размаплены для их более удобного восприятия. К примеру, вот так выглядит отображение блока окружения 64 битного процесса.

3

А вот так выглядит IMAGE_DOS_HEADER

4

Если не известно что за структура мапится на текущий адрес памяти, то данные отобрадаются в RAW режиме. Например вот так выглядит код на точке входа kernel32.dll

5.1

Он же, но в виде дизассемблированного кода (переключение между видами в меню по правой клавише мышки "Show as disassembly" или по горячей клавише Ctrl+D):

5.2

  • Для нагрядности дизассемблерный выхлоп форматирован.
  • Код известных экспортируемых функций предваряется описанием.
  • Выхлоп форматируется дабы не мозолили глаза NOP и INT3 инструкции, выделяется окончание функций (RET/IRET/RETF).

5.3

Присутствует список всех импортируемых/экспортируемых функций (Ctrl+E). В него же добавляются данные из отладочного МАР файла (если присутствует - поддерживаются MAP файлы начиная с Delphi 2010 и выше) К нему добавлен поиск как по адресу, так и по имени функции (поиск по наименованию библиотеки не производится)

7

При наличии информации известные вызовы в дизассемблере коментируются. 7.1

Включая вызовы через таблицу импорта. 7.2

Ну и вот так выглядит список изменений в выделенных блоках с последней проверки (F5)

8

Ну и много много чего еще интересного.

You can’t perform that action at this time.