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

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

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

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

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

Категории

Все категории
Loading categories
kong — Первый в мире агентный реверс-инженер. | Kitploit
Инструменты/GitHubGitHub/amruth-sn/kong
Статический анализДинамический анализ (песочница)Анализ уязвимостейЭксплуатацияОбратная инженерияОтладчикиАнализ вредоносных программАнализ Бинарных ФайловОбучение и ОбразованиеОбратная Разработка с Помощью ИИАнализ Прошивок
1.1k12575 месяцев назадПроверено Kitploit
GitHub
amruth-sn/kong

kong

Первый в мире агентный реверс-инженер.

РепозиторийСайт

Популярное

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

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

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

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

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

Kong: Агентный реверс-инженер

PyPI - Version X (formerly Twitter) URL

Kong: World's first AI reverse engineer

Оркестрация LLM для реверс-инжиниринга бинарных файлов

Что такое Kong?

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

Kong автоматизирует механический слой, используя среду реверс-инжиниринга уровня АНБ. Kong может взять полностью обфусцированный, «раздетый» бинарный файл и выполнить полный конвейер анализа: триаж функций, построение контекста графа вызовов, восстановление типов и символов через управляемую LLM декомпиляцию и запись результатов обратно в базу программ Ghidra. Результатом является бинарный файл, где некий FUN_00401a30 теперь называется parse_http_header, с восстановленными структурами, именами параметров и соглашениями о вызовах.

Почему это существует

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

LLM отлично справляются именно с таким сопоставлением с образцом. Но нацеливание LLM на сырой вывод декомпилятора с вопросом «что это делает?» даёт посредственные результаты. Модели не хватает контекста вызовов, информации о перекрёстных ссылках и общей картины структуры бинарного файла. Кроме того, большинство обфусцированных бинарных файлов применяют экстремальные методы для предотвращения реверс-инжиниринга.

Kong решает эту проблему, создавая насыщенные контекстные окна на основе программного анализа Ghidra (графы вызовов, перекрёстные ссылки, ссылки на строки, поток данных) ещё до обращения к LLM, а затем организуя анализ в порядке зависимостей, чтобы каждая функция выигрывала от того, что её вызываемые уже именованы. Кроме того, Kong представляет собственный, первый в своём роде, агентный конвейер деобфускации.

В действии

Kong: World's first AI reverse engineer
Kong: World's first AI reverse engineer

Возможности

  • Полностью автономный конвейер: Одна команда запускает полный анализ. Триаж, анализ функций, очистка, семантический синтез и экспорт. Ручное вмешательство не требуется.
  • Интеграция Ghidra внутри процесса: Запускает аналитический движок Ghidra внутри процесса через PyGhidra и JPype. Никакого сервера, никакого RPC, никаких накладных расходов на подпроцессы. Прямой доступ к базе программ.
  • Анализ в порядке графа вызовов: Функции анализируются снизу вверх по графу вызовов. Листовые функции именуются первыми, чтобы вызывающие функции получали выгоду от уже разрешённого контекста в своей декомпиляции.
  • Богатые контекстные окна: Каждый запрос к LLM включает декомпиляцию целевой функции плюс перекрёстные ссылки, ссылки на строки, сигнатуры вызывающих/вызываемых и соседние данные; а не просто изолированный сырой вывод декомпилятора.
  • Семантический синтез: Пост-аналитический проход, который унифицирует соглашения об именах по всему бинарному файлу, синтезирует определения структур из шаблонов доступа к полям и устраняет несоответствия между независимо проанализированными функциями.
  • Сопоставление сигнатур: Известные функции стандартных библиотек и криптографические функции идентифицируются по шаблону до анализа LLM, что позволяет пропустить дорогостоящий вывод для функций с известными идентификаторами.
  • Синтаксическая нормализация: Вывод декомпилятора очищается (восстановление модуля, реконструкция отрицательных литералов, удаление мёртвых присваиваний) перед передачей LLM, что уменьшает шум и трату токенов.
  • Агентная деобфускация: Kong использует агентный конвейер деобфускации, который может выявлять и удалять методы обфускации (упрощение потока управления, ложный поток управления, замена инструкций, шифрование строк, защита VМ и т.д.) из вывода декомпилятора.
  • Фреймворк оценки: Встроенный механизм оценки, который оценивает результаты анализа по эталонному исходному коду, измеряя точность символов (пожарный коэффициент Жаккара по словам) и точность типов (оценка компонентов сигнатуры).
  • Поддержка нескольких LLM-провайдеров: Из коробки работает с Anthropic (Claude) и OpenAI (GPT-4o). Интерактивный мастер настройки конфигурирует провайдеров, а умная маршрутизация автоматически выбирает того, у которого есть действительный ключ.
  • Отслеживание затрат: Отслеживает использование токенов и стоимость по каждой модели у разных провайдеров, с ценообразованием, учитывающим провайдера.

Поддерживаемые архитектуры

Kong работает с большинством бинарных файлов, декомпилируемых Ghidra (на данный момент, в будущем их станет больше).

Уверенность

CC++GoRust
x86ВысокаяВысокаяСредняяСредняя
x86-64ВысокаяВысокаяСредняяСредняя
ARM (32-bit)ВысокаяВысокаяСредняяНизкая
AArch64ВысокаяВысокаяСредняяНизкая
MIPSСредняяСредняяНизкаяНизкая
PowerPCСредняяСредняяНизкаяНизкая

Высокая: Kong надёжно декомпилирует, деобфусцирует и восстанавливает имена, типы и структуру.

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

Низкая: Декомпиляция имеет значительные пробелы, и результаты останутся неполными, зашумлёнными или нечитаемыми.

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

Архитектура

Kong использует пятифазный конвейер, координируемый супервизором, который управляет триажем, параллельным анализом и постобработкой:

root@kitploit:~
                    ┌──────────────────────┐
                    │       Триаж         │
                    │  перечислить,       │
                    │  классифицировать,  │
                    │  построить граф     │
                    │  вызовов,           │
                    │  сопоставить        │
                    │  сигнатуры          │
                    └──────────┬───────────┘
                               │
                               ▼
              ┌────────────────┼────────────────┐
              │                │                │
              ▼                ▼                ▼
     ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
     │  Анализ      │ │  Анализ      │ │    ...       │
     │ (листовые    │ │ (следующий   │ │              │
     │  функции)    │ │  уровень)    │ │              │
     └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
            │                │                │
            └────────┬───────┴────────────────┘
                     │
                     ▼
            ┌──────────────────────┐
            │      Очистка         │
            │  нормализация,       │
            │  дедупликация        │
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │     Синтез           │
            │  унификация имён,    │
            │  сборка структур,   │
            │  деобфускация       │
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │       Экспорт        │
            │  analysis.json +     │
            │  обратная запись     │
            │  в Ghidra            │
            └──────────────────────┘

Как это работает

Триаж перечисляет все функции в бинарном файле, классифицирует их по размеру (тривиальные / маленькие / средние / большие), строит граф вызовов, определяет исходный язык и выполняет сопоставление сигнатур с известными функциями стандартных библиотек и криптографическими функциями. Функции, совпавшие по сигнатуре, помечаются как разрешённые и пропускают анализ LLM.

Анализ обрабатывает функции в порядке снизу вверх по графу вызовов, используя рабочую очередь. Для каждой функции Kong строит контекстное окно из базы программ Ghidra — декомпиляцию, перекрёстные ссылки, ссылки на строки и сигнатуры уже проанализированных вызываемых функций — нормализует вывод декомпилятора и отправляет его LLM для восстановления имён, типов и параметров. Если в декомпиляции функции обнаружена обфускация, Kong выполняет агентный проход деобфускации с доступом к символьным инструментам, прежде чем сформировать анализ. Результаты немедленно записываются обратно в Ghidra, чтобы нижестоящие вызывающие функции видели обновлённые имена.

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

Синтез рассматривает глобальную картину всех проанализированных функций. Один вызов LLM проверяет наиболее связанные функции, унифицирует соглашения об именах, синтезирует определения структур из шаблонов доступа к полям и уточняет имена, которые выглядят непоследовательно в более широком контексте.

Экспорт записывает итоговый analysis.json и применяет все восстановленные имена, типы и сигнатуры обратно в базу программ Ghidra.

Стек

  • Среда выполнения: Python 3.11+, управляется с помощью uv
  • Бинарный анализ: Ghidra через PyGhidra (внутри процесса, JPype)
  • LLM: Anthropic SDK (Claude) и OpenAI SDK (GPT-4o)
  • Символьный анализ: z3-solver
  • CLI: Click
  • TUI: Textual
  • Отображение: Rich
  • Сборка: hatchling
  • Тестирование: pytest

Установка

Предварительные требования

  • Python 3.11+ — (python.org или ваш системный менеджер пакетов)
  • uv — менеджер пакетов Python (Установить uv)
  • Ghidra — среда реверс-инжиниринга Агентства национальной безопасности (Установить Ghidra)
  • JDK 21+ — требуется Ghidra (Adoptium)
  • API-ключ LLM — хотя бы один из:
    • Anthropic (Claude)
    • OpenAI (GPT-4o)

Быстрый старт

root@kitploit:~
# 1. Установите Kong
uv pip install kong-re

# 2. Установите ваш(и) API-ключ(и)
export ANTHROPIC_API_KEY="sk-ant-..."
# и/или
export OPENAI_API_KEY="sk-..."

# 3. Запустите мастер настройки (только первый раз)
kong setup

# 4. Проанализируйте бинарный файл
kong analyze ./path/to/stripped_binary

Мастер настройки позволяет выбрать, какие LLM-провайдеры использовать, и устанавливает провайдера по умолчанию. Kong автоматически определяет установки Ghidra и JDK, загружает бинарный файл в экземпляр Ghidra внутри процесса и запускает полный конвейер.

Из исходников

root@kitploit:~
git clone https://github.com/amruth-sn/kong.git
cd kong
uv sync
uv run kong setup
uv run kong analyze ./path/to/stripped_binary

Переменные окружения

ПеременнаяОбязательнаяОписание
ANTHROPIC_API_KEYХотя бы однаAPI-ключ Anthropic (Claude)
OPENAI_API_KEYХотя бы однаAPI-ключ OpenAI (GPT-4o)
GHIDRA_INSTALL_DIRНетПуть к установке Ghidra (автоопределяется, если не задан)
JAVA_HOMEНетПуть к JDK (автоопределяется, если не задан)
KONG_CONFIG_DIRНетПереопределение каталога конфигурации (по умолчанию: ~/.config/kong)

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

root@kitploit:~
# Запустить мастер настройки
kong setup

# Проанализировать «раздетый» бинарный файл (использует настроенного провайдера по умолчанию)
kong analyze ./binary

# Анализ с конкретным провайдером
kong analyze ./binary --provider openai

# Переопределить модель
kong analyze ./binary --provider openai --model gpt-4o-mini

# Показать метаданные бинарного файла без анализа
kong info ./binary

# Оценить результаты анализа по эталонному исходному коду
kong eval ./analysis.json ./source.c

Результаты

Результаты записываются в выходной каталог (по умолчанию: ./kong_output_{binary_name}/):

root@kitploit:~
kong_output_{binary_name}/
├── analysis.json         # Все восстановленные имена функций, типы, параметры
└── events.log            # Трассировка выполнения конвейера

Бенчмарки

Kong автономно восстановил полную цепочку атаки XZ backdoor (CVE-2024-3094) из «раздетого» liblzma.so.5.4.1 — идентифицировав все пять ключевых функций импланта с уверенностью 90-95% за 15 минут при затратах $6.63.

См. BENCHMARKS.md для полного исследования и инструкций по воспроизведению.

Структура проекта

root@kitploit:~
kong/
├── __main__.py           # Точка входа CLI (click)
├── config.py             # KongConfig, LLMProvider, LLMConfig
├── db.py                 # Хранилище конфигурации SQLite (~/.config/kong/)
├── banner.py             # ASCII баннер, помощники для API-ключей
├── agent/
│   ├── supervisor.py     # Оркестратор конвейера
│   ├── triage.py         # Перечисление функций + классификация
│   ├── analyzer.py       # Анализ функций под управлением LLM
│   ├── queue.py          # Рабочая очередь BFS на основе графа вызовов
│   ├── signatures.py     # Сопоставление сигнатур известных функций
│   ├── prompts.py        # Системный промпт + схема вывода
│   ├── events.py         # Типы фаз/событий для трассировки конвейера
│   └── models.py         # Dataclass FunctionResult
├── ghidra/
│   ├── client.py         # GhidraClient внутри процесса (PyGhidra/JPype)
│   ├── types.py          # FunctionInfo, BinaryInfo, XRef и т.д.
│   └── environment.py    # Автоопределение Ghidra/JDK
├── llm/
│   ├── client.py         # AnthropicClient
│   ├── openai_client.py  # OpenAIClient
│   ├── usage.py          # TokenUsage, отслеживание затрат, реестр цен
│   └── limits.py         # Ограничения для конкретных моделей + ограничитель скорости
├── normalizer/
│   └── syntactic.py      # Нормализация вывода декомпилятора
├── synthesis/
│   └── semantic.py       # Глобальная унификация имён + синтез структур
├── evals/
│   ├── harness.py        # Извлечение эталонных данных + оценка
│   └── metrics.py        # symbol_accuracy, type_accuracy
├── export/
│   └── source.py         # analysis.json + обратная запись в Ghidra
├── signatures/
│   ├── stdlib.json       # Сигнатуры стандартной библиотеки C
│   └── crypto.json       # Сигнатуры криптографических функций
└── tui/
    └── app.py            # Textual TUI

Лицензия

APACHE

Kong лицензирован под Apache License 2.0. Kong — это бесплатный проект с открытым исходным кодом.

Эта лицензия совместима с лицензией Ghidra и допускает коммерческое использование.

Вклад

Приветствуются сообщения об ошибках и запросы функций через GitHub Issues.

Также не стесняйтесь связаться со мной в X или LinkedIn!

Благодарности

  • Ghidra
  • PyGhidra
  • JPype
  • Anthropic SDK
  • OpenAI SDK
  • Z3
  • Textual
  • Rich

Особая благодарность проекту Shannon от KeygraphHQ, который послужил вдохновением для этого проекта. Мной двигало желание воспроизвести тот же конвейер, который Shannon использует для своего веб-инструмента пентеста, и адаптировать его для бинарного анализа и декомпиляции.


Бойся обезьяны.


Kong
Kong: Первый в мире AI реверс-инженер

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