Автоматизация рутины в реверс-инжиниринге
Реверс-инжиниринг (RE) часто требует часов или дней работы, даже для небольших бинарных файлов. Основная проблема — потеря контекста (имен, типов, структур) в stripped-бинарниках. Фреймворк Kong решает это, используя Large Language Models (LLM) не как «черный ящик», а как часть строгой аналитической цепочки. Он автоматически обрабатывает обфускацию, восстанавливает сигнатуры и записывает результаты прямо в базу данных Ghidra, превращая нечитаемые FUN_00401a30 в осмысленные имена вроде parse_http_header.
Архитектура и ключевые особенности
Kong работает в процессе (in-process) через PyGhidra и JPype, избегая накладных расходов на RPC. Анализ строится на графе вызовов (call graph): функции обрабатываются снизу вверх (от листьев к корням). Это позволяет использовать уже восстановленный контекст вызываемых функций для анализа вызывающих. Ключевые компоненты:
- Agentic Deobfuscation: Первый в своем роде пайплайн для выявления и удаления обфускации (контрольные потоки, подстановка инструкций, шифрование строк, VM-защита) перед отправкой в LLM.
- Rich Context Windows: В промпт включается не только декомпиляция, но и кросс-ссылки, строковые ссылки и сигнатуры соседей.
- Semantic Synthesis: Пост-анализ для унификации имен и синтеза структур на основе паттернов доступа к полям.
- Cost-Tracking: Встроенный учет токенов и стоимости запросов к разным провайдерам (Anthropic, OpenAI).
Поддерживаемые архитектуры и языки
Эффективность Kong зависит от архитектуры и языка исходного кода. Ниже приведена матрица уверенности (Confidence) результатов анализа:
| Архитектура | C++ | Go | Rust | Другие |
|---|---|---|---|---|
| x86 | High | High | Medium | Medium |
| x86-64 | High | High | Medium | Medium |
| ARM (32-bit) | High | High | Medium | Low |
| AArch64 | High | High | Medium | Low |
| MIPS | Medium | Medium | Low | Low |
| PowerPC | Medium | Medium | Low | Low |
High: надежное восстановление. Medium: частичное восстановление. Low: значительные пробелы в данных.
Почему это важно
Прямой запрос к LLM «что делает этот код?» дает посредственные результаты из-за отсутствия контекста. Kong устраняет этот разрыв, предварительно собирая богатый контекст из анализа Ghidra. Это снижает количество ошибок и токенов, так как синтаксическая нормализация (удаление мертвого кода, восстановление отрицательных литералов) происходит до отправки в модель. Фреймворк поддерживает как Anthropic (Claude), так и OpenAI (GPT-4o), позволяя автоматически выбирать провайдер с валидным ключом API.
Источник: Github ↗
