工具
pbtk Protobuf 逆向工具集
从已编译程序中恢复 Protobuf 消息定义,并还原为可读的 .proto 文件。提取器覆盖 JAR、DEX 和 APK 中的各类 Java 运行时(包括经 ProGuard 混淆的代码)、内嵌 Protobuf 反射元数据的二进制文件,以及使用 Protobuf-URL 格式的 Web 应用。随后可在图形界面中把恢复出的消息类型绑定到 HTTP 端点,将十六进制形式的抓包样本解码为可编辑的字段树,并重新发送修改后的消息,帮助分析者把每个字段与响应对应起来。
使用条件与局限
- 审阅时最新版本为 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 反编译器二进制。从混淆代码中恢复出的定义会保留混淆名称,需由分析者自行重命名;本次未分析任何应用,也未发送任何请求。
关于此条目
- 类型
- 工具
- 类别
- 协议分析工具
- 关联
- 基础工具
- 目标
- 应用 · 协议
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · marin-m/pbtk · 修订 7c5fa2c
- pyproject.toml GitHub · marin-m/pbtk · 修订 7c5fa2c
- LICENSE GitHub · marin-m/pbtk · 修订 7c5fa2c
- src/pbtk/extractors/jar_extract.py#L46-L52 GitHub · marin-m/pbtk · 修订 7c5fa2c
- src/pbtk/extractors/web_extract.py#L57-L65 GitHub · marin-m/pbtk · 修订 7c5fa2c
- src/pbtk/utils/transports.py GitHub · marin-m/pbtk · 修订 7c5fa2c
- src/pbtk/utils/external GitHub · marin-m/pbtk · 修订 7c5fa2c
- TROUBLESHOOTING.md GitHub · marin-m/pbtk · 修订 7c5fa2c
- https://github.com/marin-m/pbtk/releases/tag/1.1.3
- https://pypi.org/project/pbtk/1.1.3/