学习protobuf正向开发和逆向分析 记录
一下学习成果,避免遗忘。
以下是protobuf目前支持的语言和平台:
优点:1. 编写简单 2. 高效,即比 XML、Json序列化时间更快,体积更小 3. 扩展性和兼容性好, 即更新数据结构,而不影响和破坏原有的旧程序
缺点:1. 可读性差,Protobuf采用了二进制格式进行编码 2. 缺乏自描述,需配合.proto文件才能读出其内容意思
单个message作用域内字段名称和编号不能重复,使用的时候需要严格按照定义的数据类型规范使用。一旦字段确定下来,后面在使用过程中也不应更改。编号1-15需要一个字节来编码,编号16-2047需要2个字节编码。因此你应该为经常出现的元素保留1-15范围内的编号,为将来添加更容易频繁出现的元素预留空间。编号最小是1,最大是2的29次方减1(536870911)。注意 19000-19999作为保留编号不能被使用。 更多类型和使用技巧参考官方文档:https://developers.google.com/protocol-buffers/docs/proto3 下一篇: python Flask实现protobuf后台
- protobuf简单介绍
- python Flask实现protobuf后台
- Android实现protobuf客户端
- 抓包+逆向app,分析proto结构
第一篇(protobuf简单介绍)
protobuf(全称:Protocol Buffers)是Google开发的一种轻便高效的结构化数据格式。常常用于数据结构的序列化。以下是protobuf目前支持的语言和平台:
![48b90f52e176fda1b7c1017392ac7fad.png](https://i-blog.csdnimg.cn/blog_migrate/315865a11aec73fd45cf32f7728d6888.png)
protobuf文件结构(以.proto结尾)
使用message来定义每一个需要序列化的数据结构,每个message里面可以定义类型和名称。
类似这样:
![e1c3e9fe323ce26e5cf1956fa365a135.png](https://i-blog.csdnimg.cn/blog_migrate/03fdf5085f486481eb890d5c867be467.png)
单个message作用域内字段名称和编号不能重复,使用的时候需要严格按照定义的数据类型规范使用。一旦字段确定下来,后面在使用过程中也不应更改。编号1-15需要一个字节来编码,编号16-2047需要2个字节编码。因此你应该为经常出现的元素保留1-15范围内的编号,为将来添加更容易频繁出现的元素预留空间。编号最小是1,最大是2的29次方减1(536870911)。注意 19000-19999作为保留编号不能被使用。 更多类型和使用技巧参考官方文档:https://developers.google.com/protocol-buffers/docs/proto3 下一篇: python Flask实现protobuf后台