Утилита предназначена для отображения карты памяти процесса.
Отображает следующие данные:
- кучи процесса
- данные по нитям, как то: стек, TEB, SEH фреймы и CallStack
- информация по подгруженным PE файлам с разбивкой на секции, точки входа в каждый загруженный образ, их структуры
- данные из PEB
- данные из KUSER_SHARED_DATA
- встроенный x86/x64 дизассемблер (на базе DiStorm)
Предоставляет возможность:
- анализа памяти на предмет установленных перехватчиков в таблицах импорта/экспорта/отложенного импорта
- анализа установленных перехватчиков в экспортируемых функциях, точках входа и TLS калбэках
- анализа блоков памяти на основе их контрольных сумм (например отображение изменений во взломанном ПО).
- поиска в памяти процесса.
Из дополнительных возможностей:
- выводит список экспортируемых функций.
- выводит список ресурсов.
- выводит стеки процесса (х86 + х64)
- поддерживает отладочные MAP файлы. (влияет на список распознанных функций и выхлоп дизассемблера)
- отображает изменения в выделенных блоках памяти (alloc/realloc/free)
- быстрая подсказка по известным блокам памяти
Для самостоятельной сборки потребуется:
- установленный пакет компонентов Virtual TreeView версии 8.0 и выше: https://github.com/JAM-Software/Virtual-TreeView
- установленный набор классов для работы с 2D графикой версии 4.9 и выше: https://github.com/AngusJohnson/Image32
- установленный набор классов для работы с ZIP архивами версии 1.0.9 и выше: https://github.com/AlexanderBagel/FWZip
- установленный пакет компонентов Hex View Project версии 2.0.16 и выше: https://github.com/AlexanderBagel/FWHexView
Сборка осуществляется с использованием Delphi 13.1 Florence в режиме "Win32/Release", при этом автоматически будет собрана и подключена (в виде ресурса) 64-битная версия данной утилиты. Под более старыми версиями Delphi работоспособность ProcessMemoryMap не проверялась и не гарантируется.
- MemoryMap Core - 1.4.40
- RawScanner Core - 1.2.29
- FWZip - 2.0.11
- Hex View Project - 2.0.16
- Distorm - 3.5.3
- Image32 library - 4.9
- вывод размапленой информации по директории resources
- вывод размапленой информации по директорям exceptions, security
- вывод размапленой информации по директории com+ в виде дерева
- вывод размапленой информации по директории debug
- поддержка отладочных PDB файлов
- перевод вывода системных структур на основе полученных данных из PDB
- полная поддержка DWARF 4 и 5 версий, поддержка типов STUB
- поддержка отладочной информации JclDebug (возможно в виде плагина)
- перевод Hex дампов и дизассемблера на FWHexView
1.7.53 от 16.08.2026
- Добавлен новый режим работы с окнами удаленного процесса
- Исправлена давняя ошибка работы с кучей в 64 битах
- Восстановлена корректная работа фильтров
- Исправлена ошибка с алигном при чтении версиооного стрима, которая могла привести к выходу за размеры стрима.
- Добавлены проверки чтения параметров процесса в TMemoryMap.AddPEBData ранее приводявшие к невозможности открытия процесса.
- Завершен режим работы с ресурсами, добавлено отображение групп иконок и курсоров, SVG и сохранение ресурса на диск
- Возвращена совместимость с Windows XP
- Иправлена проблема с DPI у VirtualStringTree контрола
1.6.52 от 28.07.2026
- Отключен забытый отладочный код в диалоге ресурсов
1.6.51 от 26.06.2026
- Исправлена критическая ошибка в GetDwarfUnitAtAddr, приводящая к "List index out of bounds"
Полный список обновлений в файле updates.txt
Как и в оригинальной утилите от Марка Руссиновича, присутствует фильтрация по типам данных. В данном случае отображаются только те блоки памяти, которые содержат системные данные (KUSER_SHARED_DATA, PEB, etc...)
Данные всех поддерживаемых структур размаплены для их более удобного восприятия. К примеру, вот так выглядит отображение блока окружения 64 битного процесса.
А вот так выглядит IMAGE_DOS_HEADER
Если не известно что за структура мапится на текущий адрес памяти, то данные отобрадаются в RAW режиме. Например вот так выглядит код на точке входа kernel32.dll
Он же, но в виде дизассемблированного кода (переключение между видами в меню по правой клавише мышки "Show as disassembly" или по горячей клавише Ctrl+D):
- Для нагрядности дизассемблерный выхлоп форматирован.
- Код известных экспортируемых функций предваряется описанием.
- Выхлоп форматируется дабы не мозолили глаза NOP и INT3 инструкции, выделяется окончание функций (RET/IRET/RETF).
Для быстрой навигации по известным структурам предсмотрено оглавление, доступное через меню View -> Show Known Data... или по горячей клавише F2
Присутствует список всех импортируемых/экспортируемых функций (Ctrl+E). В него же добавляются данные из отладочного МАР файла (если присутствует - поддерживаются MAP файлы Delphi/С++) К нему добавлен поиск как по адресу, так и по имени функции (поиск по наименованию библиотеки не производится)
При наличии информации известные вызовы в дизассемблере коментируются.

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

Присутствует модуль анализа процесса на предмет установленых перехватчиков фунций (F8)

Присутствует модуль деманглинга стека вызовов потоков включая 32 и 64 бита + 32SEH (F4)

Результаты поиска выводятся в отдельный диалог (Shift+F)

Присутствует модуль отображающий окна исследуемого процесса, с адресами оконных и классовых процедур и параметрами каждого окна (Ctrl+W).
Модуль отображающий ресурсы всех исполняемых файлов процесса распознает более 30 различных типов ресурсов (Ctrl+R) Присутствуют встроенные вьюверы текста, декодеры RC ресурсов, изображений, включая SVG и анимации (AVI/ANICURSOR), а также декодеры специфичных для Delphi/Lazarus ресурсов (DFM/LFM/DVCAL/PACKAGEINFO). Поддерживается сохранение ресурсов на диск, как с виде скомпилированного RES файла, так и ввиде декодированных данных.
Ну и много много чего еще интересного.










