No definitions found in ARM64 Flutter library
Found this via lobste.rs today and figured I'd give it a shot with something I was already looking at. In case you're interested in (maybe?) different formats, I have a file here which I'm almost positive has a bunch of protobuf defs built in, but protodump doesn't find any:
$ protodump -file libapp.so -v -output proto
Got error parsing definition: Couldn't unmarshal proto: proto: cannot parse invalid wire-format data
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't unmarshal proto: proto: cannot parse invalid wire-format data
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't unmarshal proto: proto: cannot parse invalid wire-format data
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
https://segbrk.com/libapp.so.gz
Some discussion here: https://github.com/google/protobuf.dart/issues/490
They mention that the descriptors are contained in a pbjson.dart file, and looking at a sample dart app I see e.g. this: https://github.com/grpc/grpc-dart/blob/master/example/route_guide/lib/src/generated/route_guide.pbjson.dart
where the descriptors are base64 encoded. It should be possible to base64 decode the values, unmarshall them (except I don't think they provide the FileDescriptor? Just the messages/enums/etc?), and print them out the same as the blog post, I'm just not 100% sure what the best way to scan for those base64 sequences would be. I'll think some more on this tonight
I tried running the tool on the latest google play services and got the same error.
PS C:\Users\aayus\Downloads> protodump -v --file .\play.apk
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't unmarshal proto: proto: cannot parse invalid wire-format data
Got error parsing definition: Couldn't unmarshal proto: proto: cannot parse invalid wire-format data
Got error parsing definition: Couldn't create FileDescriptor: proto: invalid syntax: "icKeyPinningForLocalTrustAnchors_\x00'byteBuffer must be a direct ByteBuffer.\x00\tbyteValue\x00\x01c\x00\x14calculateSignalLev"
Got error parsing definition: Couldn't create FileDescriptor: proto: invalid or duplicate public import index: 65
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated
Got error parsing definition: Couldn't create FileDescriptor: proto: file path must be populated