A Python embed of broma from geode used to parse C++ like files from the geometry dash bindings.
frompybromaimportRoot# test.bro:# class BindedClass {# void bindedFunction() = mac 0xd5db0, win 0x3c8d, ios 0xa83bc;# int m_member1;# int m_member2;# }# class OtherBindedClass : BindedClass {# virtual void otherBindedFunction() = mac 0x7e3bc, win 0x5a1c, ios 0x8e412;# // win and ios addresses have not been found yet, will not generate# static int staticFunction(int a, bool c) = mac 0x74bd3;# // Embed c++ code# inline int getIndex(int index) {# return m_myVector[index];# } # // templates supported# std::vector<int> m_myVector;# }root=Root("test.bro")
forcinroot.classes:
forfinc.fields:
# NOTE: functions that aren't a Function Bind Field do not return...iffunc:=f.getAsFunctionBindField():
# This will make a dictionary mainly to make iteration a bit easier...print(func.prototype.args)
# output # {}# {}# {'a': <pybroma.PyBroma.Type object at 0x0000018C6D507B70>, 'c': <pybroma.PyBroma.Type object at 0x0000018C6D507B30>}- I wrote this library because it's slower to write C++ code and I felt like I needed something that could be easily aborted and easy to test when something doesn't run right.
- To use a language that I was more familliar and comfortable with and has releativly good code safety features.
- To generate code to automate the creation of mods and be able to reverse engineer geometry dash a little bit more efficiently. Including creating ghidra headerfiles that ghidra can understand and parse.
- For other programmers (especially beginner programmers) to try out this wonderful library that I have just recently made a bridge for in one full day. (I would expect that you have a bit of knowlege on how C++ works first.)
- To go far beyond the scope of what broma is actually being used for such as reverse engineering.
I may not get to that due to the required 2FA stuff because scammers were using pypi to host malicious malware. I hear you can use a usb stick (thumbdrive) so know that I am thinking about buying up a few more usb sticks for this.
Run this command to install the library:
pip install git+https://github.com/CallocGD/PyBroma
Also Some parsing Error Features may not be avalible just yet so don't complain to me if it crashes broma does not have a clean way to handle errors yet to my knowlege.
I don't know, I sure hope so, I see the project's overall potential to be useful for that criteria but I doubt it. You'll just have to ask them and be paitient about it.
Might make a version of this in Rust as practice for binding C/C++ libraries since I am trying to learn how to do that kind of stuff.
- No Bugs Right now. All bugs have been apparently patched.
- Broma Writer/Formatter
- Class member injector (For helping with pull requests to the bindings)
- I'm rethinking about the possiblity of a pypi release if I can find a self-hosted 2FA software thingy