Process Memory Map
Pascal
Clone or download
AlexanderBagel README update
README update
Latest commit e9b4079 Mar 7, 2017
Permalink
Failed to load latest commit information.
MemoryMap 1.0.0 a12 Mar 7, 2017
distorm 1.0.0 alpha 10 May 27, 2016
doc 1.0.0 a3 Oct 16, 2015
img README update Mar 7, 2017
.gitignore Правка мемлика от диалогов Oct 28, 2013
LICENSE Initial commit Sep 16, 2013
ProcessMM.dpr 1.0.0 a 11.2 Mar 4, 2017
ProcessMM.dproj 1.0.0 a 11.2 Mar 4, 2017
ProcessMM.dsk 1.0.0 a12 Mar 7, 2017
ProcessMM.otares 1.0.0 a1 Nov 8, 2013
ProcessMM.res 1.0.0 a11 Mar 2, 2017
ProcessMM.stat 1.0.0 a12 Mar 7, 2017
ProcessMM_Icon.ico 1.0.0 a2 Nov 14, 2013
ProcessMM_Icon1.ico 1.0.0 a2 Nov 14, 2013
README.md README update Mar 7, 2017
cpu_view.ico 1.0.0 a2 Nov 14, 2013
distorm_lib32.RES 1.0.0 alpha 10 May 27, 2016
distorm_lib32.rc 1.0.0 alpha 10 May 27, 2016
distorm_lib64.RES 1.0.0 alpha 10 May 27, 2016
distorm_lib64.rc 1.0.0 alpha 10 May 27, 2016
uAbout.dfm 1.0.0 a12.1 Mar 7, 2017
uAbout.pas 1.0.0 a 11.2 Mar 4, 2017
uComparator.dfm 1.0.0 a1 Nov 8, 2013
uComparator.pas 1.0.0 a2 Nov 14, 2013
uDisplayUtils.pas 1.0.0 a2 Nov 14, 2013
uDump.pas 1.0.0 a 11.2 Mar 4, 2017
uDumpDisplayUtils.pas 1.0.0 a12 Mar 7, 2017
uExportList.dfm 1.0.0 a12 Mar 7, 2017
uExportList.pas 1.0.0 a12 Mar 7, 2017
uFindData.dfm 1.0.0 a1 Nov 8, 2013
uFindData.pas 1.0.0 a 11.2 Mar 4, 2017
uIPC.pas 1.0.0 a2 Nov 14, 2013
uMemoryMapListInfo.dfm 1.0.0 a11 Mar 2, 2017
uMemoryMapListInfo.pas 1.0.0 a12 Mar 7, 2017
uMemoryMapListInfoSettings.dfm 1.0.0 alpha 8 May 19, 2016
uMemoryMapListInfoSettings.pas 1.0.0 alpha 8 May 19, 2016
uProcessMM.dfm 1.0.0 alpha 8 May 19, 2016
uProcessMM.pas 1.0.0 a 11.2 Mar 4, 2017
uProcessReconnect.pas 1.0.0 a 11.2 Mar 4, 2017
uProgress.dfm 1.0.0 a2 Nov 14, 2013
uProgress.pas 1.0.0 a2 Nov 14, 2013
uRegionProperties.dfm 1.0.0 a11 Mar 2, 2017
uRegionProperties.pas 1.0.0 a 11.2 Mar 4, 2017
uSelectAddress.dfm 1.0.0 alpha 7 Mar 4, 2016
uSelectAddress.pas 1.0.0 a11 Mar 2, 2017
uSelectProcess.dfm 1.0.0 a 11.2 Mar 4, 2017
uSelectProcess.pas 1.0.0 a 11.2 Mar 4, 2017
uSettings.dfm 1.0.0 a 11.2 Mar 4, 2017
uSettings.pas 1.0.0 a 11.2 Mar 4, 2017
uUtils.pas 1.0.0 a12.1 Mar 7, 2017
win64debug.rc 1.0.0 a1 Nov 8, 2013
win64release.RES 1.0.0 a12 Mar 7, 2017
win64release.rc 1.0.0 a1 Nov 8, 2013

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

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