Process Memory Map

Я программист, а то что я еще и реверсер — ну… так совпало. И как любому из людей занимающимся реверсом мне всегда не хватает функционала отладчика. Постоянно приходится допиливать под конкретную задачу какие-то утилитарные вещи и однажды…
Однажды я решил — хватит, каждый раз пилить новое достаточно утомительно, а что если взять и объединить все наработки в один инструмент и пользоваться именно им!
Это будет скорее рекламный пост -, но не спешите минусовать, возможности утилиты, о которой пойдет речь, а называется она Process Memory Map, весьма обширны, и возможно вам понравится :)

Итак — что это такое? Она похожа на всем известный инструмент от Марка Руссиновича VMMap (которая кстати частично основана на коде Джефри Рихтера), её задача проанализировать сторонний процесс и вытащить из него максимум данных, о которых она знает.

0d7b89e3e9cd80c78c6d3994c770e62c.png

А знает она весьма много, для начала она умеет работать с кучей системных структур и размапливать их. Давайте просто перечислю по порядку.

  1. KUSER_SHARED_DATA — здесь сидит куча системной информации, опорные данные для GetTickCount, флаги процессора, флаги отладочной типа KdDebuggerEnabled и много всего интересного.

    16fab45a27212c67f6d9e4382c6f33ea.png
  2. Списки загрузчика — если вам встречалась антиотладка, мешающая аттачу отладчика к процессу посредством манипуляции списками (через сброс линков), PMM их покажет

    ad5e879c8638b5d538e5f760a0cf57fc.png
  3. Естественно она знает о PEB, причем отобразит как 32 битный PEB так и 64 битный

    8aaa65a666474fd14a5d76ad7788126c.png
  4. Она знает о структуре ApiSet таблиц используемых для редиректа библиотек из таблиц импорта исполняемых фалов

    b59b77ec2451affa9d51567575f40921.png
  5. PROCESS ACTIVATION CONTEXT — тоже умеет

    0145be6793c9ab880fd811fd729d45c6.png
  6. Параметры процесса — легко

    04350f097e17a5011ac24b71b47ba5e8.png
  7. Конечно же TEB

    09072d28aafbfc78cfa2c45910129fdb.png

Впрочем если перечислять все типы структур — это будет слишком объемная статья. По хоткею F2 PMM предоставит быстрый доступ ко всей требуемой информации о которой она знает на текущий момент.

4a3281494e73991f3212c60daae56cd0.png

Конечно же основным режимом работы является работа с образами исполняемых файлов, они целиком размаплены и можно увидеть всю их структуру с секциями директориями, заголовками и прочим — причем с учетом актуального состояния в памяти.
Знает о структуре таблиц импорта экспорта, TLS и всем что может потребоваться реверсеру.

057f5a30685ef4b29ae4cfa7bb620906.png

Безусловно — дизассемблер в наличии, причем есть два движка работы с отладочной информацией (один под MAP и второй под работу с COFF/DWARF2–3). Вот так выглядит точка входа при подключенной отладочной.

5845efcc5932ffc0113ecd079c8e6cee.png

Конечно есть актуальный список экспорта всех загруженных в процесс библиотек, куда сразу подтягиваются данные из отладочной. К диалогу подключен быстрый поиск.

cfe078655310044294ca0e36f8f1866d.png

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

8c7412fcc7ee27bae5378f218c89212d.png

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

caaa3213e71ea477072c76d349608365.png

Ну и конечно присутствует вывод детального CallStack всех потоков приложения (F4), включая 64 битный стек Wow64 подсистемы для 32 битных приложений и их список SEH фреймов. Стеки развернуты с учетом отладочной информации (если она присутствует).

c38007c80eea8c4a62d1344bc1af08e5.png

Утилита постоянно дорабатывается, люди, которые ей пользуются постоянно присылают новые идею по внедрению нового функционала. Собственно и этот рекламный пост был сделан именно с этой целью — найти новых пользователей которые помогут развитию функционала новыми идеями.
Конечно же это полный опенсорс, т.е. — даром :)
https://github.com/AlexanderBagel/ProcessMemoryMap

Планов по развитию еще очень много (тот же PDB еще не подключен, планируется реализовать чтение сразу в RAW формате).

Есть конечно в ней и недочеты — например прямо сейчас снимая скриншоты к статье обнаружил что отвалилось обработка Forward функций в сканере хуков, но это все чинится (но после НГ).

Кстати всех с наступающим!

© Habrahabr.ru