Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pe_tree — Модуль Python для просмотра Portable Executable (PE) файлов в виде дерева с использованием pefile и PyQt5. Также может использоваться с IDA Pro и Rekall для дампа PE-файлов в памяти и восстановления импортов. | Kitploit
Инструменты/GitHubGitHub/blackberry/pe_tree
Криминалистика памятиАнализ уязвимостейОбратная инженерияОтладчикиФорензикаАнализ вредоносных программЦифровая криминалистикаАнализ Бинарных ФайловArchived
GitHubblackberry/pe_tree

pe_tree

Модуль Python для просмотра Portable Executable (PE) файлов в виде дерева с использованием pefile и PyQt5. Также может использоваться с IDA Pro и Rekall для дампа PE-файлов в памяти и восстановления импортов.

1.3k1734 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

PE Tree

PE Tree — это модуль Python для просмотра исполняемых файлов PE (Portable Executable) в древовидном виде с использованием pefile и PyQt5. Его также можно использовать с IDA Pro, Ghidra, Volatility, Rekall и minidump для просмотра и извлечения PE-файлов из памяти, а также для восстановления таблиц импорта.

Содержание

  1. Возможности
  2. Приложение
    • Требования
    • Возможности
    • Установка
      • Windows
      • Mac/Linux
      • Для разработчиков
    • Использование
    • Тёмная тема
  3. IDAPython
    • Требования
    • Возможности
    • Установка
      • С помощью setuptools
      • Установка вручную
      • Для разработчиков
    • Использование
    • Пример
      • Извлечение PE-файлов из памяти
  4. Rekall
    • Требования
    • Возможности
    • Установка
    • Использование
  5. Volatility
    • Требования
    • Возможности
    • Установка
    • Использование
  6. Ghidra
    • Требования
    • Возможности
    • Установка
    • Использование
  7. Minidump
    • Требования
    • Возможности
    • Установка
    • Использование
  8. Конфигурация
    • Обзор
    • Параметры
    • Расположение
    • Передача данных сторонним сервисам
  9. Устранение неполадок
  10. Участие в разработке
    • Документация для разработчиков
  11. Лицензия

Возможности

  • Автономное приложение с плагинами для:
    • IDA Pro
    • Ghidra
    • Volatility
    • Rekall
    • Minidump
    • Карвинг
  • Поддержка Windows, Linux и Mac
  • Парсинг PE-файлов и образов памяти из:
    • Файловой системы
    • ZIP-архивов (включая архивы с паролем)
    • Дампов памяти Windows (raw, EWF, vmem и др.)
    • Живой памяти Windows (с помощью rekall)
    • Windows Minidump
    • Базы данных IDA Pro
    • Базы данных Ghidra
    • Карвинга бинарных файлов
  • Радужная карта PE:
    • Предоставляет общий обзор структур PE, их размера и расположения в файле
    • Позволяет быстро визуально оценить и сравнить образцы PE
  • Отображение следующих заголовков PE в древовидном виде:
    • MZ‑заголовок
    • DOS‑заглушка
    • Rich‑заголовки
    • NT/File/Optional заголовки
    • Каталоги данных
    • Секции
    • Импорты
    • Экспорты
    • Отладочная информация
    • Конфигурация загрузки
    • TLS
    • Ресурсы
    • Информация о версии
    • Сертификаты
    • Наложение
  • Извлечение и сохранение данных из:
    • DOS‑заглушки
    • Секций
    • Ресурсов
    • Сертификатов
    • Наложения
    • Экспорт в CyberChef для дальнейшей обработки
  • Поиск в VirusTotal:
    • Хешей файлов
    • Пути PDB
    • Меток времени
    • Хеша/имени секции
    • Хеша/имени импорта
    • Имени экспорта
    • Хеша ресурса
    • Серийного номера сертификата
  • Извлечение загруженных образов PE из памяти:
    • Исправление указателей и размеров секций
    • Исправление заголовков PE:
      • Удаление ненужных указателей каталогов данных
      • Пересчёт контрольной суммы PE
      • Обновление точки входа
    • Восстановление таблиц импорта (IAT/IDT) несколькими методами:
      1. Использование существующих IAT/IDT
      2. Перестроение IDT на основе существующей IAT
      3. Перестроение IAT и IDT на основе дизассемблирования (с использованием IDA Pro, Ghidra или capstone)

Приложение

Автономное приложение PE Tree находит исполняемые файлы PE в файлах, папках и ZIP-архивах.

Автономное приложение PE Tree

Требования

  • Python 3.5+

Возможности

  • Сканирование файлов и папок на наличие PE‑файлов
  • Извлечение PE‑файлов из ZIP‑архивов (включая архивы с паролем infected)
  • Карвинг PE‑файлов из бинарных файлов
  • Двойной клик по VA/RVA для дизассемблирования с помощью capstone
  • Шестнадцатеричный дамп данных

Установка

Через pip (рекомендуется)

Установите напрямую из GitHub, используя свежее виртуальное окружение и pip:

Windows
root@kitploit:~
> virtualenv env
> env\Scripts\activate
> pip install --upgrade pip
> pip install git+https://github.com/blackberry/pe_tree.git
Mac/Linux
root@kitploit:~
$ python3 -m venv env
$ source ./env/bin/activate
$ pip install --upgrade pip
$ pip install git+https://github.com/blackberry/pe_tree.git

Для разработчиков

Клонируйте репозиторий Git и настройте окружение для разработки:

Windows
root@kitploit:~
> git clone https://github.com/blackberry/pe_tree.git
> cd pe_tree
> virtualenv env
> env\Scripts\activate
> pip install -e .
Mac/Linux
root@kitploit:~
$ git clone https://github.com/blackberry/pe_tree.git
$ cd pe_tree
$ python3 -m venv env
$ source ./env/bin/activate
$ pip install -e .

Использование

Запустите PE Tree для сканирования файлов, папок и ZIP‑архивов на наличие исполняемых файлов PE:

root@kitploit:~
$ pe-tree -h
usage: pe-tree [-h] [filenames [filenames ...]]

PE-Tree

positional arguments:
  filenames   Path(s) to file/folder/zip

optional arguments:
  -h, --help  show this help message and exit

Запустите PE Tree для карвинга исполняемых файлов PE из бинарного файла:

root@kitploit:~
$ pe-tree-carve -h
usage: pe-tree-carve [-h] filename

PE-Tree (Carve)

positional arguments:
  filename    Path to file to carve

optional arguments:
  -h, --help  show this help message and exit

Тёмная тема

Тёмную тему можно включить, установив QDarkStyle:

root@kitploit:~
$ pip install qdarkstyle

IDAPython

Плагин PE Tree для IDAPython находит исполняемые файлы PE в базах данных IDA.

Плагин PE Tree для IDAPython

Требования

  • IDA Pro 7.0+ с Python 2.7
  • IDA Pro 7.4+ с Python 2.7 или 3.5+

Возможности

  • Удобная навигация по структурам PE‑файла
  • Двойной клик по адресу памяти в PE Tree для просмотра в IDA‑view или hex‑view
  • Поиск образов PE в памяти в IDB с возможностью:
    • Восстановления импортов (IAT + IDT)
    • Извлечения восстановленных PE‑файлов
    • Автоматического комментирования структур PE в IDB
    • Автоматической маркировки смещений IAT в IDB

Установка

Для установки и запуска в качестве плагина IDAPython можно использовать setuptools или установить вручную.

С помощью setuptools

  1. Скачайте pe_tree и установите для глобального интерпретатора Python, используемого IDA:

    root@kitploit:~
    $ git clone https://github.com/blackberry/pe_tree.git
    $ cd pe_tree
    $ python setup.py develop --ida
    
  2. Скопируйте pe_tree_ida.py в папку плагинов IDA

Установка вручную

  1. Скачайте pe_tree и установите зависимости для глобального интерпретатора Python, используемого IDA:

    root@kitploit:~
    $ git clone https://github.com/blackberry/pe_tree.git
    $ cd pe_tree
    $ pip install -r requirements.txt
    
  2. Скопируйте pe_tree_ida.py и содержимое ./pe_tree/ в папку плагинов IDA

Для разработчиков

Чтобы не устанавливать плагин, а просто запустить его как скрипт в IDA, сначала установите зависимости пакета pe_tree для глобальной установки Python:

root@kitploit:~
$ pip install -r requirements.txt

Затем запустите pe_tree_ida.py в IDA:

File -> Script file... -> pe_tree_ida.py -> Open

Папка плагинов IDA

ОСПапка плагинов
Windows%ProgramFiles%\IDA Pro 7.X\plugins
Linux/opt/ida-7.X/plugins
Mac~/.idapro/plugins

Использование

  1. Запустите IDA Pro и дизассемблируйте PE‑файл (для лучших результатов всегда выбирайте Manual Load и Load Resources!)

  2. Загрузите плагин PE Tree:

    Edit -> Plugins -> PE Tree

Пример

Извлечение PE‑файлов из памяти

Ниже приведены основные шаги для извлечения упакованного PE‑файла (например, MPRESS или UPX) и восстановления импортов (при условии, что базовый адрес образа/точка входа достаточно стандартны):

  1. Запустите IDA Pro и дизассемблируйте упакованный PE‑файл MPRESS или UPX (выберите Manual Load и Load Resources)

  2. Выберите отладчик (Windows или Bochs) и запускайте до достижения OEP (обычно 0x00401000, но не всегда!)

  3. На этом этапе можно сделать снимок памяти (сохранив все сегменты) и сохранить IDB для дальнейшей работы

  4. Убедитесь, что IDA нашла весь код:

    Options -> General -> Analysis -> Reanalyze program

  5. Откройте плагин PE Tree для IDAPython, щёлкните правой кнопкой мыши на правой панели и выберите:

    Add PE -> Search IDB

    Это просканирует IDB на наличие заголовков MZ/PE и отобразит найденные модули.

  6. Щёлкните правой кнопкой мыши на HEADER-0x00400000 (или соответствующем имени модуля) и выберите Dump...

  7. Укажите AddressOfEntryPoint (обычно 0x1000, но опять же, не всегда!)

  8. Убедитесь, что выбран Rebuild IDT/IAT

  9. Извлеките!

Будет создан новый исполняемый файл, использующий данные распакованных секций, полученные из памяти/IDB. При этом к PE‑файлу будет добавлена новая секция с именем .pe_tree, содержащая восстановленные IAT, таблицу имён подсказок и IDT (очень похожа на секцию .idata). Если сегмент памяти точки входа был помечен как доступный для записи во время выполнения (например, через VirtualProtect), то атрибуты секции точки входа также будут помечены как доступные для записи. Наконец, каталоги данных BASERELOC, BOUND_IMPORT и SECURITY помечаются как нулевые, а контрольная сумма OPTIONAL_HEADER пересчитывается (если указано).

Используя описанный подход, можно извлечь множество PE‑файлов из памяти, которые были распакованы, инжектированы, загружены рефлективно или hollowed и т.д.

Rekall

Плагин PE Tree для Rekall находит исполняемые файлы PE в дампах памяти Windows.

Плагин PE Tree для Rekall

Требования

  • Python 3+

Возможности

  • Работа с дампом памяти Windows или с живой системой
  • Просмотр, извлечение и восстановление PE‑модулей из:
    • Активных процессов и DLL
    • Загруженных драйверов режима ядра

Установка

  1. Установите Rekall с GitHub.
  2. Установите автономное приложение PE Tree (см. Установка) в том же виртуальном окружении.

Использование

Запустите Rekall для просмотра активных процессов, DLL и драйверов на живой системе:

root@kitploit:~
$ rekall --live Memory
[1] Live (Memory) 00:00:00> run -i pe_tree_rekall.py

Либо запустите Rekall/PE Tree с существующим дампом памяти:

root@kitploit:~
$rekall -f memory.vmem
[1] memory.vmem 00:00:00> run -i pe_tree_rekall.py

Volatility

Плагин PE Tree для Volatility находит исполняемые файлы PE в дампах памяти Windows.

Плагин PE Tree для Volatility

Требования

  • Python 3.5+

Возможности

  • Работа с дампом памяти Windows
  • Просмотр, извлечение и восстановление PE‑модулей из:
    • Активных процессов и DLL
    • Загруженных драйверов режима ядра

Установка

  1. Установите Volatility3 с GitHub.
  2. Установите автономное приложение PE Tree (см. Установка) в том же виртуальном окружении.

Использование

root@kitploit:~
$ pe-tree-vol -h
usage: pe-tree-vol [-h] filename

PE-Tree (Volatility)

positional arguments:
  filename    Path to memory dump

optional arguments:
  -h, --help  show this help message and exit

Ghidra

Плагин PE Tree для Ghidra находит исполняемые файлы PE в базах данных Ghidra.

Плагин PE Tree для Ghidra

Требования

  • Python 3.5+
  • Ghidra Bridge

Возможности

  • Удобная навигация по структурам PE‑файла
  • Двойной клик по адресу памяти в PE Tree для просмотра в дизассемблере/hex‑view Ghidra
  • Восстановление импортов (IAT + IDT)
  • Извлечение восстановленных PE‑файлов

Установка

  1. Установите PE Tree (см. Установка)
  2. Установите Ghidra Bridge

Использование

  1. Запустите сервер Ghidra Bridge
  2. Запустите плагин PE Tree для Ghidra
root@kitploit:~
$ pe-tree-ghidra -h
usage: pe-tree-ghidra [-h] [--server SERVER] [--port PORT]

PE-Tree (Ghidra)

optional arguments:
  -h, --help       show this help message and exit
  --server SERVER  Ghidra bridge server IP (default: 127.0.0.1)
  --port PORT      Ghidra bridge server port (default: 4768)

Minidump

Плагин PE Tree для Minidump находит исполняемые файлы PE в Windows Minidump.

Плагин PE Tree для Minidump

Требования

  • Python 3.6+
  • minidump

Возможности

  • Просмотр, извлечение и восстановление PE‑модулей из файла Windows Minidump (.dmp)

Установка

  1. Установите PE Tree (см. Установка)
  2. Установите minidump (pip install minidump)

Использование

root@kitploit:~
$ pe-tree-minidump -h
usage: pe-tree-minidump [-h] filename

PE-Tree (Minidump)

positional arguments:
  filename    Path to .dmp file

optional arguments:
  -h, --help  show this help message and exit

Конфигурация

Обзор

Конфигурация хранится в INI‑файле и по умолчанию имеет следующие значения:

root@kitploit:~
[config]
debug = False
fonts = Consolas,Monospace,Courier
passwords = ,infected
virustotal_url = https://www.virustotal.com/gui/search
cyberchef_url = https://gchq.github.io/CyberChef

Параметры

Расположение

Передача данных сторонним сервисам

Следующая информация будет передана сторонним веб‑приложениям (в зависимости от конфигурации) при соблюдении указанных условий:

VirusTotal

Если в конфигурации указан URL VirusTotal, то метаданные, такие как хеши файлов, метки времени и т.д., будут отправлены в VirusTotal для обработки, когда пользователь щёлкает по выделенным ссылкам или выбирает "VirusTotal search" в контекстном меню.

CyberChef

Если в конфигурации указан URL CyberChef, то любые данные файла будут закодированы в base64 и отправлены в CyberChef для обработки, когда пользователь выбирает "CyberChef" в контекстном меню.

Устранение неполадок

AttributeError: module 'pip' has no attribute 'main'

или

PyQt5 не устанавливается в Linux

Попробуйте обновить pip до версии 20.0+:

root@kitploit:~
$ pip install --upgrade pip

ModuleNotFoundError: No module named 'PyQt5.sip'

Попробуйте удалить и переустановить PyQt5 следующим образом:

root@kitploit:~
pip uninstall PyQt5
pip uninstall PyQt5-sip
pip install PyQt5 PyQt5-sip

Отсутствуют импорты после извлечения

Убедитесь, что IDA нашла и дизассемблировала весь код:

Options -> General -> Analysis -> Reanalyze program

После этого попробуйте снова извлечь/восстановить импорты.

Участие в разработке

Пожалуйста, не стесняйтесь участвовать! Проблемы и pull request'ы приветствуются.

Документация для разработчиков

Для сборки документации из исходников с помощью Sphinx:

root@kitploit:~
$ pip install sphinx
$ sphinx-apidoc -o ./doc/source/ .
$ sphinx-build -b html ./doc/source ./doc/build -E

Чтобы просмотреть документацию, откройте в веб‑браузере файл ./doc/build/index.html.

Авторы

Tom Bonner - tombonner - @thomas_bonner

Лицензия

PE Tree распространяется под лицензией Apache. Подробнее см. LICENSE.

Скачать инструмент
РазделПараметрТипОписание
configdebugbooleanВыводит результат pefile.dump()
configfontsstringРазделённый запятыми список имён шрифтов для интерфейса
configpasswordsstringРазделённый запятыми список паролей ZIP‑файлов
configvirustotal_urlstringURL поиска VirusTotal
configcyberchef_urlstringURL CyberChef
ТипОСПуть
ПриложениеWindows%TEMP%\pe_tree.ini
ПриложениеLinux/Mac/tmp/pe_tree.ini
IDAPythonWindows%APPDATA%\HexRays\IDA Pro\pe_tree.ini
IDAPythonLinux/Mac~/.idapro/pe_tree.ini
RekallWindows%TEMP%\pe_tree_rekall.ini
RekallLinux/Mac/tmp/pe_tree_rekall.ini
VolatilityWindows%TEMP%\pe_tree_volatility.ini
VolatilityLinux/Mac/tmp/pe_tree_volatility.ini
GhidraWindows%TEMP%\pe_tree_ghidra.ini
GhidraLinux/Mac/tmp/pe_tree_ghidra.ini
MinidumpWindows%TEMP%\pe_tree_minidump.ini
MinidumpLinux/Mac/tmp/pe_tree_minidump.ini
CarveWindows%TEMP%\pe_tree_carve.ini
CarveLinux/Mac/tmp/pe_tree_carve.ini