作为安全项目的一部分,我正在对 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 是应用程序使用的唯一原型文件。这实际上是可能的吗? google/protobuf/descriptor.proto 足以让我反序列化应用程序和服务器之间的消息吗?