gpt4 book ai didi

binary - 如何对二进制 thrift 文件进行逆向工程?

转载 作者:行者123 更新时间:2023-12-04 17:59:22 35 4
gpt4 key购买 nike

我被要求处理一些序列化为二进制文件(不幸的是不是文本/JSON)Thrift对象,但我无权访问创建文件的程序或程序员,所以我不知道它们的结构、字段顺序等。有没有办法使用 Thrift 库打开二进制文件并分析它,获取字段类型、值、嵌套等的列表?

最佳答案

不幸的是,Thrift 的二进制协议(protocol)似乎根本没有对数据进行太多标记。解码它似乎假设你手头有 .thrift 文件,所以你知道,比如说,接下来的 4 个字节应该是一个整数,实际上不是浮点数的前半部分。因此,基本上,您似乎被困在十六进制编辑器(或等效)中查看文件并尝试根据您看到的确切模式推断字段。

有一些有用的位:

每个文件都以版本、协议(protocol)标识符字符串和序列号开头。映射将以 6 个字节开始,标识键和值类型(前两个字节,作为整数代码)加上元素数量作为 4 字节整数。类型代码似乎是标准的(它们定义的规范位置似乎是 Thrift 源中的 TProtocol.h,例如, bool 值由类型代码 2 指定,UTF-8 字符串由类型代码 16 指定,等等) .字符串以 4 字节整数长度字段为前缀,列表以类型(1 字节)和 4 字节长度为前缀。看起来所有整数字段都以大端方式保存,浮点数以 IEEE 格式保存(这应该使 double 数相对容易找到,至少)。

Thrift 中的 TBinaryProtocol* 文件有一些更有用的细节;从好的方面来说,有许多不同的实现,因此您可以阅读以您最熟悉的语言实现的那些。

抱歉,我知道这可能没有那么有用,但确实看起来这是 Thrift 二进制格式提供的所有信息;显然,二进制格式的设计目的是让您始终知道确切的协议(protocol)规范,并且目标是最小化线路空间,而不是使其易于盲目解码。

关于binary - 如何对二进制 thrift 文件进行逆向工程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561693/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com