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

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

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

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

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

Категории

Все категории
Loading categories
quokka — Quokka: быстрый и точный экспортёр бинарных файлов | Kitploit
Инструменты/GitHubGitHub/quarkslab/quokka
Статический анализАнализ КодаОбратная инженерияУтилиты и фреймворкиАнализ Бинарных Файлов
GitHubquarkslab/quokka

quokka

Quokka: быстрый и точный экспортёр бинарных файлов

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

Популярное

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

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

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

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

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

Quokka

изображение создано DALL-E


Содержание

  • Введение
  • Установка
  • Использование
  • Сборка
  • Документация
  • FAQ

Введение

Quokka — это экспортер бинарных файлов: на основе дизассемблирования программы он создает экспортный файл, который можно использовать без дизассемблера. В настоящее время в качестве бэкендов дизассемблирования поддерживаются IDA Pro, Ghidra и Binary Ninja.

Основная цель Quokka — позволить полностью манипулировать бинарным файлом, ни разу не открывая дизассемблер после первоначального экспорта. Кроме того, он абстрагирует API дизассемблера, предоставляя пользователям чистый интерфейс.

Quokka во многом вдохновлен BinExport, экспортером бинарных файлов, используемым в BinDiff.

Архитектура

     IDA Pro               Ghidra               Binary Ninja
        │                      │                      │
IDA Plugin (C++)    Ghidra Plugin (Java)   BinaryNinja Plugin (Python)
        │                      │                      │
        └────────────── quokka.proto ─────────────────┘
                     (protobuf schema)
                              │
                        .quokka files
                              │
              Python bindings (quokka.Program)
              ├── Capstone backend (primary)
              └── Pypcode backend (optional)

Установка

Python-плагин

Плагин собирается в CI и доступен в реестре.

Его можно установить напрямую через PIP с помощью такой команды:

$ pip install quokka-project

Плагин IDA

Примечание: плагин IDA не требуется для чтения файла, созданного Quokka. Он используется только для их генерации.

Quokka совместим с IDA 9.1+.

Через менеджер плагинов IDA (IDA 9.2+)

Quokka опубликован в репозитории плагинов Hex-Rays и может быть установлен с помощью hcli:

user@host:~$ hcli plugin install quokka

Вручную

Плагин также собирается в CI и доступен на вкладке Releases.

Чтобы загрузить плагин, возьмите файл с именем quokka_plugin.so (или архив quokka-ida<version>.zip для вашей версии IDA) и скопируйте его в каталог plugins вашей IDA.

Расширение Ghidra

Quokka также поддерживает экспорт из Ghidra (>= 12.0.3) с помощью специального расширения. Оно создает те же .quokka protobuf-файлы, которые может загружать библиотека Python.

Инструкции по сборке, установке и использованию см. в README расширения Ghidra.

Расширение BinaryNinja

Quokka также поддерживает экспорт из Binary Ninja с помощью Python-плагина. Он создает те же .quokka protobuf-файлы, которые может загружать библиотека Python.

Сведения об установке и использовании см. в README расширения BinaryNinja.

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

Экспорт через GUI

Первый ручной способ экспорта бинарного файла — использовать плагин внутри IDA Pro. Сочетание клавиш по умолчанию в IDA — Alt+A. Открывается следующий диалог:

Export Dialog

Доступны следующие режимы:

  • LIGHT: экспортирует только данные на уровне блоков (инструкции декодируются во время выполнения Capstone из исходных байтов бинарного файла)
  • FULL: экспортирует инструкции и операнды (автономный режим, не требует исходный бинарный файл для дизассемблирования)

Примечание: режим FULL еще не реализован. В настоящее время работает только режим LIGHT.

Экспорт в headless-режиме

IDA

Примечание: для этого требуется рабочая установка IDA.

$ idat -OQuokkaAuto:true -OQuokkaDecompiled:true -A /path/to/hello.i64

Все доступные параметры описаны в разделе Использование.

Примечание: вместо ida используется idat, чтобы увеличить скорость экспорта, поскольку графический интерфейс не нужен.

Ghidra

$ analyzeHeadless /tmp/proj Test \
    -import /path/to/binary \
    -scriptPath ghidra_extension/src/script/ghidra_scripts \
    -postScript QuokkaExportHeadless.java \
    --out=/path/to/output.quokka --mode=LIGHT

Более подробную информацию см. в README расширения Ghidra.

Binary Ninja

Примечание: использование API Binary Ninja в headless-режиме требует коммерческой лицензии. При ее отсутствии используйте команду экспорта в интерфейсе Binary Ninja.

$ python binaryninja_extension/export_headless.py /path/to/binary \
    -o /path/to/output.quokka --mode LIGHT

Более подробную информацию см. в README расширения BinaryNinja.

Экспорт через CLI

Quokka предоставляет утилиту командной строки для автоматического параллельного экспорта одного или нескольких файлов и/или каталогов (все исполняемые файлы в каждом каталоге). Поддерживаются бэкенды IDA Pro и Ghidra:

$ quokka-cli --backend ghidra -t 8 dir/
$ quokka-cli --backend ida --ida-path /opt/ida -t 8 dir/
$ quokka-cli -t 8 dir/                          # auto-detect backend
$ quokka-cli -o "%p/exports/%f.quokka" binary   # custom output directory
$ quokka-cli -b ida -o %F_ida.quokka -t 4 dir/  # Using relative path
$ quokka-cli -t 8 dir1/ dir2/ binary1 binary2   # multiple inputs

По умолчанию файл .quokka размещается рядом с исходным бинарным файлом (например, /usr/bin/ls создает /usr/bin/ls.quokka). Используйте -o, чтобы переопределить это значение с помощью прямого пути или шаблона, разворачиваемого для каждого файла (%f = имя без расширения, %F = имя файла, %p = родительский каталог, %P = полный путь, %e = расширение, %% = литеральный символ %).

Выполните quokka-cli --help, чтобы увидеть все параметры. Основные флаги:

  • -b, --backend — выбор бэкенда дизассемблера (ida, ghidra или auto);
  • -i, --ida-path — путь к каталогу установки IDA (папка, содержащая idat);
  • --ghidra-path — путь к каталогу установки Ghidra (переопределяет GHIDRA_INSTALL_DIR);
  • -o, --output — путь вывода или шаблон (по умолчанию: %F.quokka);
  • -m, --mode — выбор режима экспорта (light или full);
  • --decompiled — включить экспорт декомпилированного кода (только IDA);
  • -v, --verbose — включить подробное журналирование.

Загрузка экспортного файла

import quokka
from quokka.types import Disassembler

# Directly from the binary (auto-detects available backend)
prog = quokka.Program.from_binary("/bin/ls")

# Explicitly choose a backend
prog = quokka.Program.from_binary("/bin/ls", disassembler=Disassembler.GHIDRA)
prog = quokka.Program.from_binary("/bin/ls", disassembler=Disassembler.IDA)

# From the exported file
prog = quokka.Program("ls.quokka",  # the exported file
                      "/bin/ls")    # the original binary

Редактирование и добавление типов

# Add new types from C declarations
prog.add_type("struct context { int id; char name[64]; };")
prog.add_type("enum status { OK=0, ERROR=1 };")

# Save the .quokka file
prog.write()

# Or apply changes (including new types) back to the IDA database
prog.commit(database_file="ls.i64", overwrite=True)
Скачать инструмент