# pbtk Protobuf 逆向工具集

> 从已编译程序中恢复 Protobuf 消息定义，并还原为可读的 .proto 文件。提取器覆盖 JAR、DEX 和 APK 中的各类 Java 运行时（包括经 ProGuard 混淆的代码）、内嵌 Protobuf 反射元数据的二进制文件，以及使用 Protobuf-URL 格式的 Web 应用。随后可在图形界面中把恢复出的消息类型绑定到 HTTP 端点，将十六进制形式的抓包样本解码为可编辑的字段树，并重新发送修改后的消息，帮助分析者把每个字段与响应对应起来。

- 类型：工具
- 目标：应用 · 协议
- 类别：协议分析工具
- 关联：基础工具
- 来源复核于：2026-10-19
- 收录于：2026-10-19
- 原始资源：<https://github.com/marin-m/pbtk>
- 一手来源：<https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/pbtk/>
- 记录 JSON：<https://awesomerea.org/resources/pbtk/record.json>
- 英文版：[English](https://awesomerea.org/resources/pbtk/index.md)

## 使用条件与局限

- 审阅时最新版本为 1.1.3，于 2026-08-21 发布在 GitHub 和 PyPI；所审阅的 master 提交比它多四个提交，加入了版本显示、一次依赖升级和新的品牌配色，并带有一个既无 GitHub 发布也未上传 PyPI 的 1.1.3.1 标签。README 中 2026 年的说明指出，Java 提取目前主要适用于较旧的 APK，基于 Chrome 的 Protobuf-URL Web 提取器有待更新；完成自动模糊测试部分仍列为后续计划。
- 需要 Python 3.10+、PySide6 和 Python protobuf 运行时。README 介绍了 Ubuntu 的 snap 包、AUR 的 pbtk-git 包以及 uv 或 pipx 安装方式，并称支持 Windows。Java 提取需要 Java 运行时（Debian 安装说明中使用 OpenJDK 8），Web 提取则通过 websocket-client 驱动 Chrome 或 Chromium 实例。
- 分析者需自行提供要分析的 APK、JAR、DEX 或原生库，并可选提供自己用 mitmproxy、Wireshark 等工具抓取的十六进制请求样本。重放功能会把修改后的消息发送到分析者配置的在线端点。提取出的 .proto 和端点定义保存在用户主目录的 .pbtk 文件夹中（Windows 上为 APPDATA 下的 pbtk 文件夹）。
- pyproject.toml 声明 GPL-3.0-or-later。软件包内附带第三方可执行文件：protoc 构建、附 Apache-2.0 声明的 dex2jar 2.4 jar 包，以及仓库中没有任何许可证文本的 JAD 反编译器二进制。从混淆代码中恢复出的定义会保留混淆名称，需由分析者自行重命名。

## 一手来源

1. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/README.md>
2. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/pyproject.toml>
3. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/LICENSE>
4. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/extractors/jar_extract.py#L46-L52>
5. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/extractors/web_extract.py#L57-L65>
6. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/utils/transports.py>
7. <https://github.com/marin-m/pbtk/tree/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/utils/external>
8. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/TROUBLESHOOTING.md>
9. <https://github.com/marin-m/pbtk/releases/tag/1.1.3>
10. <https://pypi.org/project/pbtk/1.1.3/>

## 同分区更多条目：协议

- [SteamKit Steam 网络协议库](https://awesomerea.org/zh/resources/steamkit/index.md) · 工具
- [protobuf-inspector 未知定义 Protobuf 解析工具](https://awesomerea.org/zh/resources/protobuf-inspector/index.md) · 工具
- [libimobiledevice iOS 设备协议库](https://awesomerea.org/zh/resources/libimobiledevice/index.md) · 工具
- [Sniffle 蓝牙低功耗嗅探器](https://awesomerea.org/zh/resources/sniffle/index.md) · 工具
- [Packetry USB 2.0 协议分析工具](https://awesomerea.org/zh/resources/packetry/index.md) · 工具
- [Caring Caribou 汽车 CAN 总线安全探索工具](https://awesomerea.org/zh/resources/caringcaribou/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
