Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

AlexanderBagel/ProcessMemoryMap

Open more actions menu

Repository files navigation

Process Memory Map

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

1

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

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

Предоставляет возможность:

  • анализа памяти на предмет установленных перехватчиков в таблицах импорта/экспорта/отложенного импорта
  • анализа установленных перехватчиков в экспортируемых функциях, точках входа и TLS калбэках
  • анализа блоков памяти на основе их контрольных сумм (например отображение изменений во взломанном ПО).
  • поиска в памяти процесса.

Из дополнительных возможностей:

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

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

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

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

Внутренние версии фреймворков:

  • MemoryMap Core - 1.4.39
  • RawScanner Core - 1.2.28
  • FWZip - 2.0.10
  • Distorm - 3.5.3

RoadMap (с предположительными версиями):

  • 1.6.?? вывод размапленой информации по директории resources
  • 1.7 вывод размапленой информации по директорям exceptions, security
  • 1.8 вывод размапленой информации по директории com+ в виде дерева
  • 1.9 вывод размапленой информации по директории debug
  • 1.10 поддержка отладочных PDB файлов
  • 1.10 перевод вывода системных структур на основе полученных данных из PDB
  • 1.?? полная поддержка DWARF 4 и 5 версий, поддержка типов STUB
  • 1.?? поддержка отладочной информации JclDebug (возможно в виде плагина)
  • 2.00 перевод Hex дампов и дизассемблера на FWHexView

Обновления:

1.6.51 от 26.06.2026

  • Исправлена критическая ошибка в GetDwarfUnitAtAddr, приводящая к "List index out of bounds"

1.6.50 от 15.06.2026

  • Добавлен поиск ссылок на указаный адрес
  • Добавлен поиск по маске
  • Сохранение результатов поиска в файл

1.6.49 от 04.06.2026

  • Добавлен механизм отката патчей в удаленном процессе

1.6.48 от 30.05.2026

  • Исправлены некоторые мемлики и опечатки в коде.
  • Добавлен отсутствующий флаг PAGE_EXECUTE_WRITECOPY при детектировании возможности чтения из страницы при поиске.

Полный список обновлений в файле updates.txt

Скриншоты:

Как и в оригинальной утилите от Марка Руссиновича, присутствует фильтрация по типам данных. В данном случае отображаются только те блоки памяти, которые содержат системные данные (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

Для быстрой навигации по известным структурам предсмотрено оглавление, доступное через меню View -> Show Known Data... или по горячей клавише F2

6

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

7

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

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

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

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

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

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

11

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

About

Process Memory Map

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.