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

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

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

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

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

Категории

Все категории
Loading categories
decomp2dbg — Плагин для внедрения интерактивных символов в ваш отладчик из вашего декомпилятора. | Kitploit
Инструменты/GitHubGitHub/mahaloz/decomp2dbg
Статический анализДинамический анализ (песочница)Обратная инженерияОтладчикиАнализ Бинарных ФайловЭксплуатация Бинарных Файлов
GitHubmahaloz/decomp2dbg

decomp2dbg

Плагин для внедрения интерактивных символов в ваш отладчик из вашего декомпилятора.

Репозиторий
812481 месяц назадПроверено Kitploit

Популярное

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

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

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

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

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

decomp2dbg

Реверс-инжиниринг включает как статический (дизассемблер), так и динамический (отладчик) анализ, однако мы часто используем эти виды анализа без обмена знаниями между ними. В случае реверса статических бинарных файлов переключение контекста между ассемблером отладчика и символами, восстановленными в декомпиляторе, может быть неэффективным.

decomp2dbg стремится сократить разрыв переключения контекста между декомпилятором и отладчиком, представляя универсальный API для синхронизации символов из декомпилятора в отладчик. По сути, давая реверс-инженеру возможности его отладчика с символами и строками декомпиляции, которые он восстанавливает в декомпиляторе.

decomp2dbg

Интересуетесь, как decomp2dbg выглядит на практике? Посмотрите записанный доклад на CactusCon 2023, где демонстрируется отладка удаленного arm32 бинарного файла с x64 машины с использованием символов Ghidra.

Для активной помощи присоединяйтесь к Discord BinSync ниже, где мы отвечаем на вопросы по decomp2dbg:

Discord

Поддерживаемые платформы

Декомпиляторы

  • IDA Pro (>= 9.0): Демо с GEF
  • Binary Ninja (>= 2.4): Демо с GEF
  • Ghidra (>= 12): Демо с GEF
  • angr-management (>= 9.0)

Отладчики

  • gdb
    • GEF
    • pwndbg
    • vanilla

Установка

Установка через pip, затем использование встроенного установщика для декомпиляторов:

root@kitploit:~
pip3 install decomp2dbg && decomp2dbg --install 

Это откроет подсказку, где вас попросят ввести путь к вашему декомпилятору и отладчику по выбору. Для Ghidra вам нужно запустить в режиме PyGhidra и включить плагин (d2d_client.py), как показано здесь. Если вы установили декомпиляторную часть через Binja Plugin Manager, вам все равно нужно установить отладчикную часть с помощью вышеуказанного. Примечание: вы должны установить decomp2dbg в то же окружение Python, что и ваш декомпилятор и отладчик.

Примечание: Возможно, потребуется разрешить входящие соединения на порт 3662 (или используемый вами порт), чтобы decomp2dbg мог подключиться к декомпилятору. Если вы устанавливаете decomp2dbg с GEF или pwndbg, важно, чтобы в вашем ~/.gdbinit файл d2d.py был подключен после GEF или pwndbg.

Ручная установка

Пропустите это, если вам удалось использовать вышеуказанную установку без ошибок. Если вы не можете использовать вышеуказанный встроенный скрипт (установка для декомпилятора на Windows без WSL), следуйте шагам ниже:

Если вам нужна только декомпиляторная часть, скопируйте соответствующий плагин декомпилятора в папку плагинов декомпилятора. Вот как это сделать в IDA:

Сначала клонируйте репозиторий:

root@kitploit:~
git clone https://github.com/mahaloz/decomp2dbg.git

Установка:

root@kitploit:~
pip install .

Скопируйте файл сервера:

root@kitploit:~
cp ./decomp2dbg/d2d_server.py /path/to/ida/plugins/

Если вам также нужно установить часть для gdb, используйте строку ниже:

root@kitploit:~
cp ./decomp2dbg/d2d_client.py ~/.d2d.py && echo "source ~/.d2d.py" >> ~/.gdbinit

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

Сначала запустите сервер декомпиляции в вашем декомпиляторе. Возможно, вы захотите подождать, пока ваш декомпилятор завершит обычный анализ, прежде чем запускать его. После обычного анализа это можно сделать с помощью горячей клавиши Ctrl-Shift-D или выбрав вкладку decomp2dbg: configure в соответствующей вкладке плагинов. После запуска сервера вы должны увидеть сообщение в вашем декомпиляторе:

root@kitploit:~
[+] Starting XMLRPC server: localhost:3662
[+] Registered decompilation server!

Затем в вашем отладчике выполните:

root@kitploit:~
decompiler connect <decompiler_name>

Если вы запускаете декомпилятор на виртуальной машине или другом компьютере, вы можете дополнительно указать хост и порт для подключения. Вот пример:

root@kitploit:~
decompiler connect ida --host 10.211.55.2 --port 3662

Вы можете узнать, как использовать все команды, запустив команду декомпилятора с флагом --help.

Первое подключение может занять до 30 секунд для регистрации в зависимости от количества глобальных переменных в бинарном файле. Если всё в порядке, вы должны увидеть:

root@kitploit:~
[+] Connected to decompiler!

Если вы используете decomp2dbg для библиотеки, то есть основной бинарный файл, к которому подключился ваш отладчик, не является бинарным файлом, для которого вы хотите получить исходный код, тогда вам следует взглянуть на раздел Расширенное использование - Общие библиотеки readme.

Просмотр декомпиляции

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

Функции и глобальные переменные

Функции и глобальные переменные из вашей декомпиляции теперь отображаются в вашем GDB как обычные символы уровня исходного кода. Это означает, что обычные команды GDB, такие как печать и просмотр, работают нативно:

root@kitploit:~
b sub_46340
x/10i sub_46340
root@kitploit:~
p dword_267A2C 
x dword_267A2C

Локальные переменные стека, регистровые переменные, аргументы функций

Некоторые переменные, хранящиеся локально в функции, являются стековыми переменными. Для переменных, которые можно отобразить в стек или регистры, мы импортируем их как удобные переменные. Вы можете просмотреть их содержимое как обычную удобную переменную GDB:

root@kitploit:~
p $v4

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

root@kitploit:~
x $v4

Это также работает с аргументами функций, если применимо (результат может отличаться):

root@kitploit:~
p $a1

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

Расширенное использование

Общие библиотеки

Когда вы хотите отобразить декомпиляцию (и символы) для участка памяти, который не является основным бинарным файлом, например при отладке общей библиотеки, вам нужно выполнить несколько дополнительных шагов. В настоящее время d2d поддерживает только одно подключение декомпилятора за раз, это означает, что если у вас в данный момент подключен какой-либо декомпилятор, не относящийся к библиотеке, вам нужно отключить его.

После выполнения обычной настройки, чтобы ваш декомпилятор запускал сервер d2d для вашей общей библиотеки, вам нужно вручную указать базовый адрес этой библиотеки и её конечный адрес:

root@kitploit:~
decompiler connect ida --base-addr-start 0x00007ffff7452000 --base-addr-end 0x00007ffff766d000

Чтобы узнать базовый адрес, по которому ваша библиотека загружена в память, рекомендуется использовать что-то вроде команды vmmap из GEF для поиска имени библиотеки в пространстве памяти. После подключения с этим вручную заданным адресом символы будут работать как в обычном d2d. Декомпиляция будет выводиться на экран только тогда, когда вы находитесь в диапазоне этого адресного пространства.

Возможности

  • Автообновляемый просмотр контекста декомпиляции
  • Автосинхронизация имен функций
  • Возможность установки точек останова/просмотра символов
  • Автосинхронизация имен стековых переменных
  • Автосинхронизация структур
  • Создание DWARF онлайн
  • Синхронизация типов функций
  • Поддержка lldb
  • Поддержка windbg
Скачать инструмент