我找到了一个描述如何从C ++可执行文件重建原型文件的链接:http://www.sysdream.com/reverse-engineering-protobuf-apps
对于APK或解密的客观c应用程序是否有类似的方法?
答案 0 :(得分:0)
您链接的文章描述了在使用Protobufs的C ++应用程序中提取FileDescriptorProto
嵌入的字符串文字。 Java代码生成器将类似的字符串文字嵌入到Java代码中。如果您通过反编译器运行Java类,则应该能够恢复描述符字符串并对其进行解码。
但请注意,这仅适用于应用程序使用标准的Google创作的Java protobuf实现并且不使用“精简模式”的情况。在lite模式中,描述符不包含在生成的代码中。除Google创作的实现之外的实现可能包括也可能不包含描述符。我猜大多数Android开发人员更喜欢使用精简模式或一些不包含描述符的替代轻量级实现,因此您可能无法从APK中提取。 (我不知道目标C。)
尽管如此,请注意,您可以实际解码protobuf消息中的大量信息,而无需使用架构。如果您将protoc
与--decode-raw
命令行选项一起使用并在stdin上为其提供protobuf消息,它会将其解码为标记/值对。你只会得到带编号的字段(而不是名字),并且某些类型信息会丢失,但你会发现从那里对格式进行逆向工程比仅使用原始字节更容易。