{"id":49813667,"url":"https://github.com/NohamR/RMHook-Win","last_synced_at":"2026-05-29T17:00:31.154Z","repository":{"id":356816284,"uuid":"1231970498","full_name":"NohamR/RMHook-Win","owner":"NohamR","description":"A hooking tool for the reMarkable Desktop Windows application","archived":false,"fork":false,"pushed_at":"2026-05-09T21:19:34.000Z","size":2408,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T23:26:33.393Z","etag":null,"topics":["remarkable","remarkable-tablet","rmfakecloud"],"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/NohamR.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-07T13:13:46.000Z","updated_at":"2026-05-09T21:19:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NohamR/RMHook-Win","commit_stats":null,"previous_names":["nohamr/rmhook-win"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NohamR/RMHook-Win","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NohamR%2FRMHook-Win","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NohamR%2FRMHook-Win/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NohamR%2FRMHook-Win/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NohamR%2FRMHook-Win/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NohamR","download_url":"https://codeload.github.com/NohamR/RMHook-Win/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NohamR%2FRMHook-Win/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33662205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"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":["remarkable","remarkable-tablet","rmfakecloud"],"created_at":"2026-05-13T03:00:20.583Z","updated_at":"2026-05-29T17:00:31.148Z","avatar_url":"https://github.com/NohamR.png","language":"C++","funding_links":[],"categories":["GUI Clients"],"sub_categories":["Template Builders"],"readme":"# RMHook-Win\n\nA Windows port of [RMHook](https://github.com/NohamR/RMHook) for the reMarkable Desktop application. This repo builds a proxy DLL that hooks Qt network APIs and redirects reMarkable cloud traffic to a self-hosted [rmfakecloud](https://github.com/ddvk/rmfakecloud) server.\n\n## Overview\n\nRMHook-Win intercepts the reMarkable Desktop app's Qt networking layer and patches outgoing requests to the configured host and port. It is designed for the Windows reMarkable Desktop client and uses a DLL proxy for `paho-mqtt3as.dll`.\n\n## Features\n\n- Network request interception and redirection\n- WebSocket connection patching\n- MQTT URI modification for screen sharing features\n\n## Compatibility\n\n**Tested and working on:**\n- reMarkable Desktop v3.27.1 (released 2026-06-05)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/latest.png\" width=\"40%\" /\u003e\n  \u003cimg src=\"docs/rm.png\" width=\"50%\" /\u003e\n\u003c/p\u003e\n\n## Installation and usage\n\n⚠️ **For legal reasons, this repository does not include a pre-patched reMarkable app.** However, the latest compiled dylib is available in the [Releases](https://github.com/NohamR/RMHook-Win/releases/latest) section.\n\n### Auto installation\n\nRun in a PowerShell terminal with administrator privileges:\n```powershell\nirm https://raw.githubusercontent.com/NohamR/RMHook-Win/refs/heads/main/scripts/download-and-install.ps1 | iex\n```\n\n### Manual installation\n\n#### Step 1: Build or obtain the proxy DLL\n\nBuild the `paho-mqtt3as-proxy` project with [Visual Studio](https://visualstudio.microsoft.com/downloads/) using `paho-mqtt3as-proxy.slnx`, or use an existing `paho-mqtt3as.dll` built from this repo.\n\n#### Step 2: Install the hook\n\nUse the installer script from the `scripts` folder.\nNote: Run from an elevated PowerShell session. The installer script will request administrator privileges if needed.\n\nFrom PowerShell:\n```powershell\n.\\scripts\\install-hook.ps1 -Action install\n```\n\nOr with the batch wrapper:\n```cmd\n.\\scripts\\install-hook.bat -Action install\n```\n\nIf you want to install a custom DLL build:\n```powershell\n.\\scripts\\install-hook.ps1 -Action install -SourcePath \"C:\\path\\to\\paho-mqtt3as.dll\"\n```\n\nThe script expects the Windows reMarkable install folder at:\n```text\nC:\\Program Files\\reMarkable\n```\n\n#### Step 3: Restore the original DLL\n\nTo remove the proxy and restore the original `paho-mqtt3as.dll`:\n```powershell\n.\\scripts\\install-hook.ps1 -Action restore\n```\n\n## Configuration\nWhen you pair the app the first time, the in-app browser will open `my.remarkable.com` to fetch a one-time pairing code, close the browser and enter the code from `rmfakecloud` direclty into the app prompt.\n\nConfig path:\n```text\n%LOCALAPPDATA%\\RMHook\\config.json\n```\nThe config is loaded on app startup and changes require a restart to take effect. It specifies the host and port for redirecting reMarkable cloud traffic.\n\nExample config:\n```json\n{\n  \"host\": \"your-server.example.com\",\n  \"port\": 443\n}\n```\n\nIf the config file does not exist, it will be created automatically with default values on first launch.\n\n## Troubleshooting\n\n### Hook install fails\n- Confirm the reMarkable install path is `C:\\Program Files\\reMarkable`\n- Run PowerShell as administrator\n- Verify the source DLL exists and is a valid proxy build\n\n### App crashes or misbehaves\n- Restore the original DLL with `-Action restore`\n- Check the config file for valid JSON\n- Make sure the `host` and `port` values point to a reachable rmfakecloud server\n\n## How it works\nThe project builds a proxy DLL for `paho-mqtt3as.dll` that re-exports all original functions. It hooks specific Qt network functions (`QNetworkAccessManager::createRequest`, `QWebSocket::open` and `MQTTAsync_createWithOptions`) to intercept and modify outgoing requests from the reMarkable Desktop app. The hooks redirect traffic to the configured host and port, allowing the app to communicate with a self-hosted rmfakecloud server instead of the official reMarkable cloud.\n\n## Credits\n\n- MinHook: [TsudaKageyu/minhook](https://github.com/TsudaKageyu/minhook) - API hooking framework used by the project\n- rmfakecloud: [ddvk/rmfakecloud](https://github.com/ddvk/rmfakecloud) - Self-hosted reMarkable cloud\n- xovi-rmfakecloud: [asivery/xovi-rmfakecloud](https://github.com/asivery/xovi-rmfakecloud) - Original hooking information\n- rm-xovi-extensions: [asivery/rm-xovi-extensions](https://github.com/asivery/rm-xovi-extensions) - Extension framework for reMarkable, used as reference for hooking Qt functions\n  - [qt-resource-rebuilder](https://github.com/asivery/rm-xovi-extensions/tree/master/qt-resource-rebuilder)\n  - [xovi-message-broker](https://github.com/asivery/rm-xovi-extensions/tree/master/xovi-message-broker)\n- dll-proxy-generator: [maluramichael/dll-proxy-generator](https://github.com/maluramichael/dll-proxy-generator) - Used to generate the initial proxy DLL code\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## Disclaimer\n\nThis project is not affiliated with, endorsed by, or sponsored by reMarkable AS. Use at your own risk. This tool modifies the reMarkable Desktop application and may violate the application's terms of service.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit issues or pull requests.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNohamR%2FRMHook-Win","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNohamR%2FRMHook-Win","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNohamR%2FRMHook-Win/lists"}