{"id":25816394,"url":"https://github.com/themusaigen/mywr","last_synced_at":"2026-03-03T16:41:19.230Z","repository":{"id":279228846,"uuid":"934241116","full_name":"themusaigen/mywr","owner":"themusaigen","description":"The cross-platform multiarchitectural memhacking library written in C++17.","archived":false,"fork":false,"pushed_at":"2025-05-04T16:14:02.000Z","size":118,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-13T07:31:48.599Z","etag":null,"topics":["cpp17","cpp17-library","cxx17","cxx17-library","gamehacking","header-only-library","memhack","memhacking"],"latest_commit_sha":null,"homepage":"","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/themusaigen.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":"2025-02-17T14:02:45.000Z","updated_at":"2025-05-04T16:13:36.000Z","dependencies_parsed_at":"2025-02-24T14:26:26.191Z","dependency_job_id":"a8394412-379d-4d6e-901f-0f306a26089e","html_url":"https://github.com/themusaigen/mywr","commit_stats":null,"previous_names":["themusaigen/mywr"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/themusaigen/mywr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusaigen%2Fmywr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusaigen%2Fmywr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusaigen%2Fmywr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusaigen%2Fmywr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/themusaigen","download_url":"https://codeload.github.com/themusaigen/mywr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusaigen%2Fmywr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30052122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T15:26:47.567Z","status":"ssl_error","status_checked_at":"2026-03-03T15:26:17.132Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cpp17","cpp17-library","cxx17","cxx17-library","gamehacking","header-only-library","memhack","memhacking"],"created_at":"2025-02-28T05:21:17.451Z","updated_at":"2026-03-03T16:41:19.209Z","avatar_url":"https://github.com/themusaigen.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mywr\n\nCross-platform multiarchitectural (in future) memhacking header-only library written in C++17. The next generation of my [memwrapper](https://github.com/The-Musaigen/memwrapper) project.\n\n## Usage / Examples\n\n```c++\n#include \u003cmywr.hpp\u003e\n\nusing namespace mywr;\n\nextern void showcase_llmo();\n\nvoid showcase_llmo() {\n  // Define constants for full health points and minimum health points.\n  // These values are used to compare and modify the player's health.\n  constexpr float kFullHealthPoints = 100.F;\n  constexpr float kMinimumHealth    = 10.F;\n\n  // Declare a variable to represent the player's current health.\n  // In a real-world scenario, this value would be located in the game's memory.\n  float player_health = kMinimumHealth;\n\n  // Simulate a situation where the player's health is being managed by a\n  // plugin. In a real-world scenario, this might be a separate DLL or shared\n  // library. Here, we're using the llmo library to read and write to the\n  // player's health memory. The llmo::read function is used to safely read the\n  // player's health from memory. We use a range-based if statement (also known\n  // as a structured binding) to declare and initialize\n  // a variable 'health' within the scope of the if statement.\n  // If the llmo::read function returns a valid value, the value is assigned to\n  // 'health'. If the llmo::read function returns an error (i.e., if there was\n  // an issue reading the memory), the if statement will not execute the block\n  // of code inside the curly braces.\n  if (auto health = llmo::read\u003cfloat\u003e(\u0026player_health)) {\n    // Check if the player's health is less than or equal to the minimum health.\n    if (*health \u003c= kMinimumHealth) {\n      // If the player's health is at or below the minimum health,\n      // use the llmo::write function to safely write the full health points to\n      // the player's health memory.\n      llmo::write\u003cfloat\u003e(\u0026player_health, kFullHealthPoints);\n    }\n  }\n}\n\n```\n\nFor other usage examples, you can look into the `tests` directory or the `demo` directory.\n\n## Platforms / Architectures / Features\n\n| Status | Description                                                             |\n| ------ | ----------------------------------------------------------------------- |\n| ✅      | Supported and tested.                                                   |\n| 💻      | In developing.                                                          |\n| ❌      | Unsupported.                                                            |\n| ❓      | Maybe supported but untested.                                           |\n| ❗      | Not in plans. (Due to lack of technical/physical/material capabilities) |\n\n\n| Feature                                                      | Windows (I/E) | Linux (I/E) | Description                                                     |\n| ------------------------------------------------------------ | ------------- | ----------- | --------------------------------------------------------------- |\n| **1. Memory Operations**                                     |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;1.1 Read/Write/Copy/Fill/Compare     | ✅/❌           | ❌/❌         | Basic memory manipulation operations                            |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;1.2 Unprotection + RAII              | ✅/❌           | ❌/❌         | Temporarily change memory protection with automatic restoration |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;1.3 RAII Patching                    | ✅/❌           | ❌/❌         | Automatically revert memory changes when going out of scope     |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;1.4 Allocation/Deallocation + RAII   | ✅/❌           | ❌/❌         | Memory management with automatic cleanup                        |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;1.5 Utilities (occupied, free, etc.) | ✅/❌           | ❌/❌         | Helper functions for memory status checks                       |\n| **2. Code Interaction**                                      |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;2.1 Signature Scanning               | ✅/❌           | ❌/❌         | Find specific byte patterns in memory                           |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;2.2 Function Invoking                | ✅/❌           | ❌/❌         | Call functions dynamically at runtime                           |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;2.3 Hooking                          | ❌/❌           | ❌/❌         | Intercept function calls                                        |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;2.4 Disassembling                    | ✅/✅           | ❌/❌         | Getting information about ASM instructions                      |\n| **3. Module \u0026 Process**                                      |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;3.1 Module Interaction               | ✅/❌           | ❌/❌         | Work with loaded modules (DLLs/shared libraries)                |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;3.2 Module Enumeration               | ❌/❌           | ❌/❌         | List all loaded modules in a process                            |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;3.3 Process Enumeration              | ❌/❌           | ❌/❌         | List all running processes                                      |\n| **4. Threading**                                             |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;4.1 Thread-safety                    | ❌/❌           | ❌/❌         | Ensure operations are safe in multi-threaded environments       |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;4.2 Thread-enumeration               | ❌/❌           | ❌/❌         | List all threads in a process                                   |\n| **5. Advanced Features**                                     |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;5.1 Segment Interaction              | ❌/❌           | ❌/❌         | Work with specific memory segments (.text, .data, etc.)         |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;5.2 Virtual Table Interaction        | ❌/❌           | ❌/❌         | Manipulate C++ virtual function tables                          |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;5.3 Bit Utilities                    | ❌/❌           | ❌/❌         | Bit-level operations and manipulations                          |\n| **6. System**                                                |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;6.1 System Info                      | ✅/✅           | ❌/❌         | Retrieve system-specific information (e.g., page size)          |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;6.2 Cross-platform error-handling    | ✅/✅           | ❌/❌         | Unified error handling across different platforms               |\n\n| Platform        | Status |\n| --------------- | ------ |\n| Windows         | 💻      |\n| Linux           | ❌      |\n| Linux (FreeBSD) | ❌      |\n| Andorid         | ❗      |\n| macOS           | ❗      |\n\n| Architecture    | Status |\n| --------------- | ------ |\n| x86             | 💻      |\n| x86_64          | 💻      |\n| ARM             | ❗      |\n| ARM64 (Aarch64) | ❗      |\n\n## Installation\n\n1. Clone repository (using FetchContent, or just download the repo).\n2. Extract `include` directory content and include `mywr.hpp` (or just include `mywr.hpp` if you used FetchContent).\n\n## Third-party libraries\n\n* [google/googletest](https://github.com/google/googletest) (BSD 3-Clause \"New\" or \"Revised\" License)\n* [TartanLlama/expected](https://github.com/TartanLlama/expected) (CC0-1.0 license)\n* [moonpotato/zstring_view](https://github.com/moonpotato/zstring_view) (Apache-2.0 license)\n* [zyantific/zydis](https://github.com/zyantific/zydis) (MIT license)\n\n## See also\n\n* [rdbo/libmem](https://github.com/rdbo/libmem)\n* [memwrapper](https://github.com/The-Musaigen/memwrapper) (Only for Windows x86)\n\n## License\n\n`mywr` licensed under `MIT` license. See `LICENSE` file to details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemusaigen%2Fmywr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemusaigen%2Fmywr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemusaigen%2Fmywr/lists"}