Skip to content

delphiarchive/ProcessMemoryMap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Process Memory Map

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

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

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

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

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

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

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

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

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

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

###Обновления:

1.4.26 от 24.02.2023

  • расширен класс TDebugMap, добавлена поддержка номеров строк из МАР файла
  • расширен вывод дизассемблера, добавлены номера строк и имена модулей (при наличии информации из МАР файла)
  • добавлен пример использования TDebugMap при конвертации CallStack снятого при помощи Process Explorer
  • расширен список ProcessorFeatures в KUSER_SHARED_DATA
  • исправления в анализаторе хуков, добавлено детектирование NoReturn функций
  • изменен вывод перехвата в середине функции, отображается адрес начала и количество пропущенных байт.
  • к прогрессу загрузки подключены дополнительные модули с длительной инициализацией
  • добавлен вывод новых процессов в окне выбора процесса
  • добавлено выделение данных по горячей клавише ко всем дополнительным окнам (Select All)
  • оптимизировано сканирование контрольных Memory Map List (MML) файлов
  • при невозможности создания контрольного MML файла для процесса, подключается диалог выбора директории

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

###Внешний вид:

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

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

6

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

7

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

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

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

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

9

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

About

Process Memory Map

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Pascal 97.7%
  • C++ 1.6%
  • C 0.7%