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

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

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

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

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

Категории

Все категории
Loading categories
IDA-Ghidra-bridge — TCP JSON-серверы-мосты для IDA Pro и Ghidra, предоставляющие декомпиляцию, перекрёстные ссылки, символы, таблицы виртуальных методов, RTTI и патчинг памяти внешним скриптам и автоматизированным конвейерам. | Kitploit
Инструменты/GitHubGitHub/oscarsantanaarias/ida-ghidra-bridge
Статический анализАнализ КодаДинамический анализ кода (DAST)Обратная инженерияСкриптинг и автоматизацияОтладчикиУтилиты и фреймворкиАнализ Бинарных ФайловОбратная Разработка с Помощью ИИ
GitHuboscarsantanaarias/ida-ghidra-bridge

IDA-Ghidra-bridge

TCP JSON-серверы-мосты для IDA Pro и Ghidra, предоставляющие декомпиляцию, перекрёстные ссылки, символы, таблицы виртуальных методов, RTTI и патчинг памяти внешним скриптам и автоматизированным конвейерам.

Репозиторий
4137 дней назадЕщё не проверено

Популярное

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

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

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

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

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

IDA-Ghidra-bridge

Легковесные TCP JSON мостовые серверы для IDA Pro и Ghidra, предоставляющие доступ к рабочим процессам обратной разработки через простой сокетный протокол.

Позволяет внешним инструментам, CLI-скриптам, Python-утилитам и автоматизированным конвейерам запрашивать декомпиляцию, перекрёстные ссылки, символы, виртуальные таблицы, RTTI, структуры и патчить память без ручного взаимодействия с GUI.


Архитектура и жизненный цикл

1. Динамическое связывание портов и поддержка нескольких экземпляров

При работе над крупными проектами обратной разработки с несколькими одновременно открытыми бинарными файлами (например, игровой клиент, лаунчер, DLL-прокси и заглушки одновременно):

  • Серверы не падают, если порт уже занят.
  • Сервер начинает сканирование с BASE_PORT = 5073 и автоматически проверяет последовательные порты (5073, 5074, 5075, 5076...) до нахождения свободного.
  • Каждое окно IDA или Ghidra привязывается к своему порту независимо, без конфликтов.

2. Горячая перезагрузка и чистое повторное выполнение

В IDA Pro интерпретатор Python остаётся активным между несколькими запусками скриптов:

  • ID_Server.py регистрирует работающий дескриптор сервера в builtins._ida_bridge_prev.
  • Если вы повторно запускаете или перезагружаете скрипт в том же экземпляре IDA, он автоматически вызывает stop() для предыдущего экземпляра и присоединяет его поток (join(3.0)), чисто освобождая порт перед запуском нового сервера.
  • Вы никогда не получите Address already in use или осиротевшие потоки от повторного запуска скрипта.

3. Корректное завершение работы

  • Через сокет: Отправьте QUIT, STOP, EXIT или SHUTDOWN через соединение. Сервер подтверждает с {"ok": true, "shutdown": true} и немедленно закрывается.
  • В IDA Pro: Вызовите ida_bridge_stop() напрямую из IDA Python CLI или просто закройте IDA (потоки-демоны завершаются автоматически).
  • В Ghidra: Нажмите красную кнопку Cancel в Script Manager Ghidra (is_cancelled() проверяется каждую 1с через таймаут сокета) или отправьте QUIT.

Установка и настройка

IDA Pro

  1. Откройте целевую базу данных (.idb / .i64) в IDA Pro.
  2. В IDA Python CLI (или через File -> Script file... / Alt+F7) выполните:
    import ID_Server
    
  3. Сервер начинает прослушивание на 127.0.0.1:5073 (или следующем доступном порту).
  4. Чтобы остановить сервер вручную:
    ida_bridge_stop()
    

Ghidra

  1. Откройте целевую программу в Ghidra CodeBrowser.
  2. В Script Manager (Window -> Script Manager) добавьте папку, содержащую Ghidra_Server.py, или запустите его напрямую в интерпретаторе Python.
  3. Сервер привязывается к 127.0.0.1:5073 (или следующему свободному порту).

Полный справочник команд (все 39 команд)

Команды — это обычные строки, разделённые символами новой строки, отправляемые по TCP (127.0.0.1:<PORT>). Сервер отвечает объектом JSON (или текстом с разделителями-табуляциями для устаревших команд).

1. Навигация и инспекция

КомандаСинтаксисОписание
PINGPINGПроверка работоспособности. Возвращает "pong".
CURRENTCURRENTВозвращает текущий адрес курсора, имя функции, размер, инструкции ассемблера и декомпилированный код.
NAMENAME <ea>Возвращает имя символа/функции, определённое по адресу <ea>.
FUNCFUNC <addr>Возвращает полные метаданные функции, точку входа, размер, сигнатуру, ассемблер и декомпиляцию Hex-Rays/Ghidra.
DECOMPDECOMP <addr>Псевдоним для FUNC. Декомпилирует целевую функцию.
DISASMDISASM <ea> [n]Возвращает строки дизассемблирования для [n] инструкций, начиная с <ea> (по умолчанию: 40).
FINDFIND <substr>Поиск без учёта регистра по всем символам и именам функций, соответствующим <substr> (до 300 совпадений).
EXPORTEXPORT [path]Экспортирует все не-фиктивные символы, искажённые и демагглированные имена в текстовый файл (по умолчанию: C:\Contexto\ida_names.txt).
HELPHELPВозвращает JSON-список всех доступных команд, поддерживаемых сервером.
QUITQUITКорректно закрывает клиентское соединение и останавливает сокет мостового сервера.

2. Перекрёстные ссылки и граф вызовов

КомандаСинтаксисОписание
XREFXREF <addr>Перечисляет все входящие перекрёстные ссылки (вызовы кода, чтение/запись данных), нацеленные на <addr>.
XFROMXFROM <addr>Перечисляет все исходящие перекрёстные ссылки, исходящие из <addr>.
CALLERSCALLERS <addr>Фильтрует входящие ссылки, возвращая только места вызовов (включая разрешённые косвенные вызовы).
READERSREADERS <addr>Фильтрует входящие ссылки, возвращая только инструкции, которые читают из <addr>.
WRITERSWRITERS <addr>Фильтрует входящие ссылки, возвращая только инструкции, которые записывают в <addr>.
DECOMP_XREFDECOMP_XREF <addr>Пакетно декомпилирует каждую вызывающую функцию <addr> в одном запросе.
IMPORTXREFIMPORTXREF <name>Находит все места вызовов по всему бинарному файлу для импортированного Windows/C API (например, IMPORTXREF WSASendTo).
TRACETRACE <addr>Трассирует поток выполнения и базовые блоки вокруг <addr>.

3. Указатели, память и структуры

КомандаСинтаксисОписание
READPTRREADPTR <addr> [count]Читает память как цепочки указателей (32-битные или 64-битные) и классифицирует каждую цель (func, string, vtable).
FINDPTRFINDPTR <addr>Сканирует глобальные данные и таблицы для поиска любого указателя, ссылающегося на <addr> (находит vtables, таблицы диспетчеризации).
STRUCTSTRUCT <addr> [n]Эвристически выгружает непрерывную память, интерпретируя поля как int, float, указатели и строки.
DEFSTRUCTDEFSTRUCT <name> [size]Создаёт новую именованную структуру в библиотеке типов базы данных.
SETFIELDSETFIELD <struct> <off> <type> [name]Определяет или изменяет поле структуры по смещению <off> с типом <type> и необязательным именем поля.
MKPTRSMKPTRS <addr> [count]Массово преобразует сырые байты базы данных в типизированные указатели.
NEARSTRNEARSTR <addr>Находит строковые ссылки, расположенные рядом в секциях кода или данных в пределах диапазона.

4. Виртуальные таблицы и RTTI

КомандаСинтаксисОписание
VTABLEVTABLE <funcaddr>Определяет, какие виртуальные таблицы содержат <funcaddr>, включая соседние слоты методов.
VTDUMPVTDUMP <addr> [count]Выгружает всю виртуальную таблицу: разрешает каждый слот в имя метода, смещение и индекс.
RTTIRTTI <addr|Name>Обходит структуры MSVC C++ RTTI (TypeDescriptor -> CompleteObjectLocator -> vftable) для разрешения иерархий классов и базовых классов.

5. Сканирование строк и байтов

КомандаСинтаксисОписание
STRSTR <ascii>Ищет ASCII-строки по всем загруженным сегментам.
WSTRWSTR <utf16>Ищет широкие строки UTF-16 по всем загруженным сегментам.
BYTESBYTES <hex>Ищет сырые последовательности байтов опкодов или данных (например, BYTES 55 8B EC 83 EC).

6. Модификация базы данных и типизация

Скачать инструмент