{"id":20767056,"url":"https://github.com/praydog/luagenny","last_synced_at":"2025-06-20T17:33:35.654Z","repository":{"id":107080531,"uuid":"526819157","full_name":"praydog/luagenny","owner":"praydog","description":"Lua bindings for sdkgenny","archived":false,"fork":false,"pushed_at":"2025-05-24T20:06:37.000Z","size":78,"stargazers_count":3,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-19T01:16:30.580Z","etag":null,"topics":["cmkr","lua","reverse-engineering","sdkgenny","sol2"],"latest_commit_sha":null,"homepage":"https://praydog.github.io/regenny-book/api/globals/sdkgenny.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/praydog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-20T03:54:39.000Z","updated_at":"2025-05-27T06:52:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"579d7c3b-071d-4b5d-b2ac-e38b5a54f3c2","html_url":"https://github.com/praydog/luagenny","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/praydog/luagenny","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praydog%2Fluagenny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praydog%2Fluagenny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praydog%2Fluagenny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praydog%2Fluagenny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/praydog","download_url":"https://codeload.github.com/praydog/luagenny/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praydog%2Fluagenny/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260987974,"owners_count":23093416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmkr","lua","reverse-engineering","sdkgenny","sol2"],"created_at":"2024-11-17T11:27:28.006Z","updated_at":"2025-06-20T17:33:30.581Z","avatar_url":"https://github.com/praydog.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# luagenny ![buildstatus](https://github.com/praydog/luagenny/actions/workflows/build.yml/badge.svg)\nLua bindings for [sdkgenny](https://github.com/cursey/sdkgenny)\n\n## Projects using this\n* [regenny](https://github.com/cursey/regenny) - A reverse engineering tool to interactively reconstruct structures and generate header files \n\t* Can REPL or run scripts using the Lua API to perform convenient/automated analysis on structures\n\t* See the initial [Pull Request](https://github.com/cursey/regenny/pull/10) for examples\n\n## Examples\n```\nPS F:\\Programming\\projects\\sdkgenny-lua\\build\\Debug\u003e .\\test.exe\n0x223aa80d010\n\u003e baz = sdkgenny.StructOverlay(0x223aa80d010, parsed:global_ns():struct(\"Baz\")) \n\u003e print(baz.things:address())\n2352207548688\n\u003e print(baz.things[0])\nsol.luagenny::api::StructOverlay: 00000223AA7D8338\n\u003e print(baz.things[0].abc)\n0\n\u003e print(baz.things[1].abc)\n2\n\u003e print(baz.things[2].abc)\n4\n\u003e print(baz.hello)\nHello, world!\n\u003e print(baz.im_true)\ntrue\n\u003e print(baz.im_false)\nfalse\n\u003e print(baz.im_also_true)\ntrue\n\u003e print(baz.ta.hours)\n40\n```\n\ngennyfile used\n```cpp\nconstexpr auto gennyfile = R\"(\ntype int 4 [[i32]]\ntype float 4 [[f32]]\ntype ushort 2 [[u16]]\ntype str 8 [[utf8*]]\ntype wstr 8 [[utf16*]]\ntype bool 1 [[bool]]\ntype uintptr_t 8 [[u64]]\ntype char 1\ntype wchar_t 2\n\nstruct RTTITest{}\n\nenum Place {\n    EARTH = 1,\n    MOON = 2,\n    MARS = 3,\n}\n\nstruct Date {\n    ushort nWeekDay : 3\n    ushort nMonthDay : 6\n    ushort nMonth : 5\n    ushort nYear : 8\n}\n\nstruct Foo {\n    int a\n    int b\n    float c\n    Place p\n    Place bf1 : 4\n    Place bf2 : 2\n}\n\nstruct Bar {\n    int d\n    Foo* foo\n    int[4][3] m\n    Date date\n}\n\nstruct Thing {\n    int abc\n}\n\nstruct Person {\n    int age\n}\n\nstruct Student : Person {\n    float gpa\n}\n\nstruct Faculty : Person {\n    int wage\n}\n\nstruct TA : Student, Faculty {\n    int hours\n}\n\nstruct Baz : Bar 0x100 {\n\tTA ta\n    int e\n    int thing\n    int* f\n    Foo g\n    Thing* things\n    char* hello [[utf8*]]\n    //wchar_t* wide_hello [[utf16*]]\n    //char[32] intrusive_hello [[utf8*]]\n    bool im_true +40\n    bool im_false\n    bool im_also_true\n\t//RTTITest* test + 5\n}\n\nstruct RTTITest 0x100 {\n\tuintptr_t** vtable\n}\n)\";\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpraydog%2Fluagenny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpraydog%2Fluagenny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpraydog%2Fluagenny/lists"}