feat: DorkNet.Quest, a sideload patcher for the 2023 Quest client

Patches the Quest build of Rec Room 2023.03.21 (20230317 / 2128210, the
same appVersion as the PC client) to connect to a DorkNet server, using
one native hook library loaded via DT_NEEDED on libmain.so.

- host rewrite onto <svc>.<ServerHost> or a {service}-dev.example.com template
- Photon app ids and region injection (PhotonRegion must match PC)
- TLS / pinning / image-signature bypass, integrity callbacks neutralised
- no-Meta-account build; the server treats platform id 0/1/blank as a
  placeholder and keys those accounts by device id
- build.ps1 -Obb packages a DorkNet-<ver>.xapk with one-command
  installers for Windows and macOS/Linux; app is named via AppName
- README, docs/quest.md and NOTICE updated; credits RecFlare and
  And64InlineHook (MIT)

Tested on a Quest 2: all hooks arm, requests reach the dev server.
This commit is contained in:
Alexa
2026-10-15 20:29:32 +03:00
parent cebe7ae3ee
commit 975753deac
28 changed files with 3237 additions and 20 deletions
+44 -4
View File
@@ -153,10 +153,25 @@ calls so self-signed certs work.
### Quest
A Quest client for this branch is in progress and not usable yet. The
archive holds a Quest build of the same release (version `20230317`), so
Quest and PC players will be on matching versions once it lands. Until
then, this branch supports the PC client only.
`DorkNet.Quest` patches the Rec Room 2023.03.21 Quest client (versionCode
`2128210`) for sideloading onto a standalone Meta Quest. That build reports
`appVersion` `20230317`, the same version as the PC client, so Quest and PC
players can share rooms.
The patcher injects a single native hook library into the APK. The library
redirects the Rec Room name server to your DorkNet host, supplies your
Photon AppIds, and turns off the client's certificate pinning and
image-signature checks so a self-hosted server works. A build without a
Meta app ID lets players sign in with DorkNet credentials and no Meta
account. Each hook checks a fingerprint of its target first, so the patch
refuses to apply to any other build.
You supply your own extracted APK and OBB; no game binaries are
redistributed. Build, install and troubleshooting steps are in
[DorkNet.Quest/README.md](DorkNet.Quest/README.md), and the operator view
is in [docs/quest.md](docs/quest.md).
> The Quest build is new and has not yet been tested on a headset.
### Debugging (opt-in — `DorkNet.DebugMod`)
@@ -478,6 +493,31 @@ it across. Don't rebase across branches.
---
## Acknowledgements
Thanks to [RecFlare](https://github.com/recflare), an independent
open-source 2023 Rec Room server by djdevin, for sharing their work in the
open. Their server and Quest client were a valuable second opinion while
building this branch:
- **Quest:** `DorkNet.Quest` follows their approach of a single native hook
library loaded through a `DT_NEEDED` entry on `libmain.so`. Their notes
also showed which client checks a self-hosted server has to get past.
- **Wire contracts:** their implementation pointed us at several things we
then confirmed in our own client disassembly. These include the profile
edit form fields, the saved-outfit keys, the `{Success, Error}` envelope
behind `isCreationAllowedForAccount`, and the gameconfig catalogue,
including the `PlayMenuCarouselOrdering_*` format.
- **Accounts:** their warning that a Quest client without a Meta account
sends the same platform id from every headset led to the placeholder
platform-id handling in `PlayerService`.
No RecFlare code is included in DorkNet. RecFlare targets a newer client
(20230414), so every finding was re-verified against the 2023.03.21 build
before use.
---
## License
[AGPL-3.0](LICENSE). Hosted forks must publish their source.