【发布时间】:2016-06-22 06:40:13
【问题描述】:
我正在对一个 Android 应用程序进行逆向工程,作为安全项目的一部分。我的第一步是发现应用程序和服务器之间交换的协议。我发现正在使用的协议是协议缓冲区。鉴于 protobuf 的性质,需要原始 .proto 文件才能对 protobuf 编码的消息进行反序列化。由于我没有那个,我使用protod 来反汇编 Android 应用程序并恢复所有使用的 .proto 文件。
我的 Android 应用程序的形式是一堆 .smali 和 .so 文件。对 .so 文件运行 protod 只会产生一个 .proto 文件——google/protobuf/descriptor.proto。
我的印象是协议缓冲区的用户编写自己的 .proto 文件,这些文件可能引用 google/protobuf/descriptor.proto,但根据 protod,google/protobuf/descriptor.proto 是应用程序使用的唯一 protofile .这真的可能吗? google/protobuf/descriptor.proto 足以让我反序列化应用程序和服务器之间的消息吗?
【问题讨论】:
-
你用那个 proto 文件试过了吗?
-
在让 Charles 代理使用从该 protofile 生成的 .desc 来解码 protobuf 消息时遇到了一些麻烦,并且想知道这是否值得我弄清楚(因此上面的问题)。是否有一些命令行工具我可以传递一条消息和一个 protobuf .desc 文件,它会给我解码后的消息?
标签: reverse-engineering protocol-buffers