前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用protobuf-inspector对Protocol Buffers进行逆向工程分析

如何使用protobuf-inspector对Protocol Buffers进行逆向工程分析

作者头像
FB客服
发布2023-03-29 15:59:32
1.6K0
发布2023-03-29 15:59:32
举报
文章被收录于专栏:FreeBuf

 关于Protocol Buffers 

Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python、Objective C、C#、Ruby、PHP、JavaScript八种编程语言,还可以找到大量的几乎涵盖所有语言的第三方拓展包。

通过它,你可以定义你的数据的结构,并生成基于各种语言的代码。这些你定义的数据流可以轻松地在传递并不破坏你已有的程序。并且你也可以更新这些数据而现有的程序也不会受到任何的影响。值得一提的是,Protocol Buffers经常被简称为Protobuf。

 protobuf-inspector介绍 

protobuf-inspector是一款功能强大的逆向工程分析工具,该工具可以帮助广大研究人员对Protocol Buffers进行逆向工程分析。这款工具能够解析Google Protobuf编码的代码块(支持v2或v3)并且能够给用户输出格式优美的彩色内容显示。下面给出的是一个输出样例:

正如我们所看到的,工具会显示字段名以及一些详细数据,其中包含:

1、变量是否使用zig-zag编码(假设默认不使用zig-zag编码); 2、32位/64位值是整数还是浮点(默认情况下都显示); 3、签名(默认情况下自动检测);

protobuf-inspector能够在大多数情况下正确解析数据结构,当它在字段上找到嵌入的二进制数据时,它将首先尝试将其解析为消息。如果失败,它会将数据显示为字符串或十六进制转储。

它按照字段在wire格式中的编码顺序显示字段,因此除了逆向工程之外,对于那些希望熟悉wire格式或解析器开发人员的人来说,它也很有用。

 工具下载 

由于该工具基于Python开发,因此我们首先需要在本地设备上安装并配置好Python环境。接下来,广大研究人员可以使用下列命令将该工具源码克隆至本地:

代码语言:javascript
复制
代码语言:javascript
复制
git clone https://github.com/mildsunrise/protobuf-inspector.git
代码语言:javascript
复制

除此之外,我们也可以使用pip来安装protobuf-inspector:

代码语言:javascript
复制
pip install protobuf-inspector

 工具使用 

工具安装完成之后,我们就可以使用下列命令通过STDIN向工具提供Protobuf数据了:

代码语言:javascript
复制
protobuf_inspector < my-protobuf-blob

以代码库使用

代码语言:javascript
复制
from protobuf_inspector.types import StandardParser
 
parser = StandardParser()
with open('my-blob', 'rb') as fh:
   output = parser.parse_message(fh, "message")
print(output)

该工具还允许我们以第三方代码库的形式整合进其他代码中,具体使用请参考protobuf_inspector/__main__.py。

 解析错误 

如果你遇到了解析错误问题,解析将会终止在特定字段,但在层次结构外部不会受到影响。堆栈跟踪将打印到字段内容所在的位置,如果适用,还将打印一个hexdump,指示在该块中停止解析的位置。

如果你指定了uint32,并且找到了更大的变量,则会得到如下结果:

如果指定某个字段包含嵌入消息,但在其中发现无效数据,则会得到:

请注意,如果发生一个或多个分析错误,main.py将以非零状态退出。

 许可证协议 

本项目的开发与发布遵循ISC开源许可证协议。

 项目地址 

protobuf-inspector:https://github.com/mildsunrise/protobuf-inspector

参考资料

https://developers.google.com/protocol-buffers/docs/encoding#signed-integers https://developers.google.com/protocol-buffers https://developers.google.com/protocol-buffers/docs/encoding

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于Protocol Buffers 
  •  protobuf-inspector介绍 
  •  工具下载 
  •  工具使用 
    • 以代码库使用
    •  解析错误 
    •  许可证协议 
    •  项目地址 
    • 参考资料
    相关产品与服务
    数据保险箱
    数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档