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

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

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

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

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

Категории

Все категории
Loading categories
pbtk — Набор инструментов для реверс-инжиниринга и фаззинга приложений на основе Protobuf | Kitploit
Инструменты/GitHubGitHub/marin-m/pbtk
Безопасность AndroidДинамический анализ (песочница)Генерация полезной нагрузкиОбратная инженерияВеб-безопасностьФаззингМобильная безопасностьАнализ Бинарных Файлов
GitHubmarin-m/pbtk

pbtk

Набор инструментов для реверс-инжиниринга и фаззинга приложений на основе Protobuf

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

Популярное

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

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

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

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

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

pbtk - Обратная разработка Protobuf приложений

Protobuf — это формат сериализации, разработанный Google и используемый во всё большем числе Android, веб, настольных и других приложений. Он включает язык для описания структур данных, который затем компилируется в код или другую структуру в зависимости от целевой реализации.

pbtk (Protobuf toolkit) — это полноценный набор скриптов, доступных через единый графический интерфейс, предоставляющий две основные возможности:

  • Извлечение структур Protobuf из программ, преобразование их обратно в читаемые .proto файлы, с поддержкой различных реализаций:

    • Все основные среды выполнения Java (base, Lite, Nano, Micro, J2ME), с полной поддержкой Proguard, (2026: всё ещё хорошо работает, но в основном со старыми APK)
    • Бинарные файлы, содержащие встроенные метаданные отражения (обычно C++, иногда Java и большинство других привязок), (2026: всё ещё хорошо работает)
    • Веб-приложения, использующие среду выполнения JsProtoUrl. (2026: нуждается в обновлении)
  • Редактирование, повторная отправка и фаззинг данных, отправляемых на сетевые конечные точки Protobuf, через удобный графический интерфейс, позволяющий в реальном времени редактировать поля сообщения Protobuf и просматривать результат.

The pbtk editor GUI

Установка

PBTK требует Python ≥ 3.5, PySide 6, Python-Protobuf 3 и несколько исполняемых программ (chromium, jad, dex2jar...) для запуска скриптов извлечения.

Пользователи Ubuntu могут установить его с помощью snap:

$ sudo snap install pbtk
$ pbtk

Пользователи Archlinux могут установить напрямую через пакет:

$ yay -S pbtk-git
$ pbtk

На большинстве других дистрибутивов лучше запускать напрямую:

# For Ubuntu/Debian testing derivates:
$ sudo apt install python3-pip git openjdk-8-jre python3-qtpy-pyside6

# Then, using UV:
$ sudo snap install --classic astral-uv
$ uv tool install pbtk
$ pbtk

# Or using pipx:
$ sudo apt install pipx
$ pipx install pbtk
$ pbtk

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

Использование командной строки (установка через менеджер пакетов)

Графический интерфейс можно запустить через основной скрипт:

pbtk

Следующие скрипты также можно использовать отдельно, без GUI:

pbtk-jar-extract [-h] input_file [output_dir]
pbtk-from-binary [-h] input_file [output_dir]
pbtk-web-extract [-h] input_url [output_dir] # Needs update to work as of 2026

При установке через snap точные команды отличаются:

pbtk.jar-extract [-h] input_file [output_dir]
pbtk.from-binary [-h] input_file [output_dir]
pbtk.web-extract [-h] input_url [output_dir]

Использование командной строки (локальная установка)

Графический интерфейс можно запустить через основной скрипт:

uv sync # Download dependencies to the .venv folder
source .venv/bin/activate # Put the local scripts in $PATH for the current shell session
uv tool install -e . # Put the local scripts in $PATH all time
pbtk

Следующие скрипты также можно использовать отдельно, без GUI:

pbtk-jar-extract [-h] input_file [output_dir]
pbtk-from-binary [-h] input_file [output_dir]
pbtk-web-extract [-h] input_url [output_dir] # Needs update to work as of 2026

Типичный рабочий процесс

Предположим, вы занимаетесь обратной разработкой Android-приложения. Вы немного изучили приложение с помощью любимого декомпилятора и поняли, что оно передаёт Protobuf в качестве POST-данных по HTTPS обычным способом.

Вы открываете PBTK, и вас встречают с осмысленным приветствием:

The welcome screen

Первый шаг — получить ваши .protos в текстовом формате. Если вы работаете с Android-приложением, просто перетащите APK и подождите — магия произойдет! (если только это не совсем экзотическая реализация)

Done screen

После этого вы переходите в ~/.pbtk/protos/<имя вашего APK> (либо через командную строку, либо через кнопку внизу экрана приветствия, чтобы открыть файловый менеджер — как вам удобнее). Все .protos приложения действительно здесь.

Вернувшись в декомпилятор, вы наткнулись на класс, который конструирует данные, отправляемые на интересующую вас HTTPS-конечную точку. Он сериализует сообщение Protobuf, вызывая класс, состоящий из сгенерированного кода.

Your decompiler

Этот последний класс должен иметь точное соответствие в вашей директории .protos (т.е. com.foo.bar.a.b будет соответствовать com/foo/bar/a/b.proto). В любом случае, поиск по его имени позволит вам сослаться на него.

Отлично: следующий шаг — перейти к Шагу 2, выбрать нужный входной .proto и заполнить информацию о вашей конечной точке.

Endpoint creation form

Вы также можете предоставить образец необработанных данных Protobuf, которые были отправлены на эту конечную точку и перехвачены через mitmproxy или Wireshark, и вставить их в шестнадцатеричном формате.

Шаг 3 — это весёлая часть: нажимать кнопки и смотреть, что происходит! У вас есть древовидное представление, отображающее каждое поле в структуре Protobuf (повторяющиеся поля помечены суффиксом "+", обязательные поля не имеют флажков).

Endpoint creation form

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

Вот и всё! Вы можете определить значение каждого поля с помощью этого. Если вы извлекли .protos из минифицированного кода, вы можете переименовывать поля в соответствии с тем, что, как вы заметили, они означают, щёлкнув по их именам.

Удачного реверсинга! 👌 🎉

Локальное хранение данных

PBTK сохраняет извлечённую информацию .proto в ~/.pbtk/protos/ (или %APPDATA%\pbtk\protos на Windows).

Вы можете перемещать, копировать, переименовывать, редактировать или удалять данные из этой директории напрямую через обычный файловый менеджер и текстовый редактор — это предусмотренный способ, и он не повлияет на работу PBTK.

HTTP-конечные точки сохраняются в ~/.pbtk/endpoints/ в виде JSON-объектов. Эти объекты представляют собой массивы пар информации запроса/ответа, которые выглядят так:

[{
    "request": {
        "transport": "pburl",
        "proto": "www.google.com/VectorTown.proto",
        "url": "https://www.google.com/VectorTown",
        "pb_param": "pb",
        "samples": [{
            "pb": "!....",
            "hl": "fr"
        }]
    },
    "response": {
        "format": "other"
    }
}]

Структура исходного кода

PBTK внутренне использует два типа подключаемых модулей: экстракторы и транспорты.

  • Экстрактор поддерживает извлечение структур .proto из целевой реализации или платформы Protobuf.

Экстракторы определены в src/pbtk/extractors/*.py. Они определяются как метод с декоратором, например:

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