{"id":49355018,"url":"https://github.com/dvurechensky/freelancer.reverse.runtime","last_synced_at":"2026-04-27T13:01:53.622Z","repository":{"id":350110673,"uuid":"1205342092","full_name":"Dvurechensky/Freelancer.Reverse.Runtime","owner":"Dvurechensky","description":"I'm building a runtime layer on top of Freelancer (2003), rebuilding and overriding system DLLs to safely explore, extend, and document the behavior of the original engine.","archived":false,"fork":false,"pushed_at":"2026-04-17T03:50:53.000Z","size":1340,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-17T05:35:51.082Z","etag":null,"topics":["dvurechensky","dvurechenskypro","freelancer-2003","reverse-engineering","runtimes"],"latest_commit_sha":null,"homepage":"https://dvurechensky.github.io/Freelancer.Reverse.Runtime/","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/Dvurechensky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T21:52:22.000Z","updated_at":"2026-04-17T03:50:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Dvurechensky/Freelancer.Reverse.Runtime","commit_stats":null,"previous_names":["dvurechensky/freelancer.reverse.runtime"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Dvurechensky/Freelancer.Reverse.Runtime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvurechensky%2FFreelancer.Reverse.Runtime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvurechensky%2FFreelancer.Reverse.Runtime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvurechensky%2FFreelancer.Reverse.Runtime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvurechensky%2FFreelancer.Reverse.Runtime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dvurechensky","download_url":"https://codeload.github.com/Dvurechensky/Freelancer.Reverse.Runtime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dvurechensky%2FFreelancer.Reverse.Runtime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32337274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["dvurechensky","dvurechenskypro","freelancer-2003","reverse-engineering","runtimes"],"created_at":"2026-04-27T13:01:50.139Z","updated_at":"2026-04-27T13:01:53.598Z","avatar_url":"https://github.com/Dvurechensky.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Freelancer.Reverse.Runtime\n\n### I am building a **runtime layer on top of Freelancer (2003)**\n\n![Status](https://shields.dvurechensky.pro/badge/status-active-2ea043)\n![Stage](https://shields.dvurechensky.pro/badge/stage-runtime--reconstruction-1f6feb)\n![Language](https://shields.dvurechensky.pro/badge/language-C%2B%2B-00599C)\n![Reverse](https://shields.dvurechensky.pro/badge/reverse-engineering-important)\n![Platform](https://shields.dvurechensky.pro/badge/platform-Windows-0078D6)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\" style=\"margin: 20px 0; padding: 10px; background: #1c1917; border-radius: 10px;\"\u003e\n  \u003cstrong\u003e🌐 Language: \u003c/strong\u003e\n  \n  \u003ca href=\"./README.ru.md\" style=\"color: #F5F752; margin: 0 10px;\"\u003e\n    🇷🇺 Russian\n  \u003c/a\u003e\n  | \n  \u003cspan style=\"color: #0891b2; margin: 0 10px;\"\u003e\n    ✅ 🇺🇸 English (current)\n  \u003c/span\u003e\n\u003c/div\u003e\n\n---\n\n\u003e [!CAUTION]\n\u003e This project is not just about reversing individual functions.  \n\u003e I am gradually building a **custom managed runtime layer on top of the original Freelancer engine**.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003ch1\u003e About the Project 🎇 \u003c/h1\u003e\n\u003cimg src=\"media/Freelancer.jpg\"\u003e\u003c/img\u003e\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\u003c/div\u003e\n\n`Freelancer (2003)` is an `American` `space` `trading` and `combat` `simulation` game developed by `Digital Anvil` and published by Microsoft Game Studios on `March 4, 2003`.\n\n\u003e [!CAUTION]\n\u003e My modification of `Freelancer (2003)` — [Lizerium](https://lizup.ru) | [Lizerium - sources](https://github.com/Lizerium)\n\nThe goal of this project is not just to analyze original binaries, but to **gradually reconstruct, document, and safely extend the behavior of the game and server using compatible proxy DLLs, runtime components, and reverse engineering**.\n\nInstead of chaotic memory patching, I follow a more controlled approach:  \nI build **compatible system modules** that can:\n\n- replace original DLLs\n- act as observation points for engine behavior\n- be extended with custom logic\n- evolve into a clean and controlled C++ layer\n\n\u003e [!IMPORTANT]\n\u003e Over the past 20+ years, many plugin libraries have been created to extend the game, but they relied on direct memory manipulation.  \n\u003e My goal is to move away from that approach and build a **reliable, controlled system based on source code**.\n\n---\n\n## Project Idea\n\nThe idea is **not to break the original engine**, but to **build an engineering layer around it** that allows:\n\n- understanding how Freelancer actually works internally\n- reconstructing DLL system contracts\n- safely injecting new functionality\n- documenting the architecture of the legacy engine\n- transforming the “black box” binaries into a **controlled C++ system**\n\nEssentially, this is a path toward **partial reconstruction of Freelancer’s runtime architecture**.\n\n\u003e [!NOTE]\n\u003e I am not trying to “rewrite the game from scratch”.  \n\u003e I am building a **compatible behavior layer** that integrates with the original binaries.\n\n---\n\n## Current Progress\n\nThe project has already moved beyond the idea stage into a **working state**.\n\n### Completed\n\n#### `dacom.dll`\n\n- [x] created a working proxy module [`dacom.dll`](libs/game/dacom)\n  - [x] implemented loading of the original DLL via `dacom_addon.dll`\n  - [x] reconstructed and proxied core exports\n  - [x] added logging of function parameters\n  - [x] confirmed real participation in:\n    - [x] CRC / string hashing\n    - [x] string comparison\n    - [x] internal telemetry / logging layer\n    - [x] system initialization\n\n##### 👍 Verified\n\n- module loads successfully in the game\n- exported functions are called correctly\n- proxy implementation does not break startup\n- logging confirms real runtime usage of `dacom.dll`\n- not compatible with legacy plugins relying on memory hacks\n\n\u003e [!IMPORTANT]\n\u003e `dacom.dll` is no longer just a reverse-engineered assumption.  \n\u003e It is a **verified runtime component**, tested in a real game environment.\n\n---\n\n## Project Approach\n\n\u003e [!TIP]\n\u003e Core idea:\n\u003e\n\u003e **Externally — full compatibility.  \n\u003e Internally — fully controlled custom code.**\n\n---\n\n## Current Direction\n\nThe project is currently evolving towards:\n\n- reconstructing other system DLLs\n- building a unified runtime infrastructure\n- creating reusable proxy components\n- forming a structured reverse-engineering documentation base\n\n\u003e [!WARNING]\n\u003e This is an experimental engineering project.  \n\u003e Some parts of the architecture are still being validated through runtime tracing.\n\n---\n\n## Current Components\n\n### Reverse / Proxy Modules\n\n- [`dacom`](libs/game/dacom) — working proxy module for a system DLL involved in CRC, string utilities, and telemetry\n\n### Existing DLL Hooks\n\n- [`custom`](libs/custom) — a collection of hooks for Freelancer modifications (written by me or others and rebuilt by me), intended for future integration into `Reverse / Proxy Modules`\n\n---\n\n## Vision\n\nThe long-term goal is to transform Freelancer’s closed runtime into a **documented, researchable, and partially controllable C++ system**, enabling developers to work with it as an engineering architecture rather than a “black box”.\n\n---\n\n## Note\n\nThis project is developed for research purposes and does not distribute original game assets or binaries.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvurechensky%2Ffreelancer.reverse.runtime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvurechensky%2Ffreelancer.reverse.runtime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvurechensky%2Ffreelancer.reverse.runtime/lists"}