Replies: 1 comment 14 replies
-
Hey thanks, when I started this project I was reversing them by hand, then AI came along and made it much easier. E. G fixed64 vs int32 or even int64 |
Beta Was this translation helpful? Give feedback.
14 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Based on the wiki page of Protobuf/How to reverse engineer the messages the proto files are reversed using AI and decompiled java bytecode (if that page is not outdated). Which sounded cumbersome and not so fun and stable to me.
Being a java dev and tinkerer, I looked into it and threw together a crude reverser. It is extremely shitty and was mostly generated with AI (because of my mobility issues) but the resulting proto files actually look quite ok-ish. I put them in a separate repository if anyone wants to take a look here: https://github.com/Nithanim/MammotionProto.
Currently, there does not seem to be real differences between the proto files here and the ones I extracted (except some minor additions and unused (?) enums).
I am still slowly working on making the code actually useable by someone else and adding a bit more automation.
So it might take some time until I publish it to github.
I do not have any other project to test it on but the extractor is built generically so it should actually work for "any" (simple) compiled proto java code.
Just wanted to throw it out there if anyone is interested.
Edit (bonus content): The way I do it is using ApkTool to convert it to smali files. Then I look for classes with the protobuf descriptor. Protobuf leaves a compiled version of the proto file in there, packed as protobuf itself. I use protobuf to parse that with its internal methods and iterate over the description object to generate a (more or less) valid proto file.
Beta Was this translation helpful? Give feedback.
All reactions