1 Commits

Author SHA1 Message Date
√(noham)²
8cbd849c3a Refresh README and bump Qt to 6.10.3 2026-08-26 00:03:41 +02:00
2 changed files with 19 additions and 6 deletions

View File

@@ -6,9 +6,11 @@ A dynamic library injection tweak for the reMarkable iOS app, enabling connectio
RMHook-iOS hooks into the reMarkable iOS app's network layer to redirect API calls from reMarkable's official cloud services to your own [rmfakecloud](https://github.com/ddvk/rmfakecloud) server. This allows you to maintain full control over your documents and data on your mobile device. RMHook-iOS hooks into the reMarkable iOS app's network layer to redirect API calls from reMarkable's official cloud services to your own [rmfakecloud](https://github.com/ddvk/rmfakecloud) server. This allows you to maintain full control over your documents and data on your mobile device.
Looking for the Desktop versions? Check out: ## Other platforms
- **[RMHook](https://github.com/NohamR/RMHook)**: For macOS Desktop
- **[RMHook-Win](https://github.com/NohamR/RMHook-Win)**: For Windows Desktop - **[RMHook](https://github.com/NohamR/RMHook)**: macOS Desktop
- **[RMHook-Win](https://github.com/NohamR/RMHook-Win)**: Windows Desktop
- **[RMHook-Android](https://github.com/NohamR/RMHook-Android)**: Android
## Features ## Features
@@ -59,10 +61,14 @@ cyan -i reMarkable.ipa \
### Setup & Configuration ### Setup & Configuration
Upon launching the app for the first time, you will be prompted to enter your `rmfakecloud` host and port via an in-app alert dialog. Upon launching the app for the first time, you will be prompted to enter your `rmfakecloud` host and port via an in-app alert dialog.
When 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. When 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` directly into the app prompt.
![Setup](docs/setup.png) ![Setup](docs/setup.png)
## Configuration
The host and port are stored in `NSUserDefaults` and persist across app launches. You can change them at any time from the in-app alert dialog.
## Building ## Building
### 1. Prerequisites (Qt for iOS) ### 1. Prerequisites (Qt for iOS)
@@ -116,6 +122,7 @@ cd src
``` ```
## Debugging ## Debugging
To debug the tweak, you can use `lldb` to attach to the `remarkable_mobile` process on your device. To debug the tweak, you can use `lldb` to attach to the `remarkable_mobile` process on your device.
You can stream the device logs using `idevicesyslog` from the `libimobiledevice` suite to see the output from your hooks and any potential errors. You can stream the device logs using `idevicesyslog` from the `libimobiledevice` suite to see the output from your hooks and any potential errors.
@@ -124,6 +131,7 @@ idevicesyslog | grep 'remarkable_mobile' | grep 'RMHook'
``` ```
## How it works ## How it works
RMHook-iOS uses Memory Hooking (`MSHookFunction`) via Theos to patch Qt framework functions statically linked inside the iOS app: RMHook-iOS uses Memory Hooking (`MSHookFunction`) via Theos to patch Qt framework functions statically linked inside the iOS app:
1. **QNetworkAccessManager::createRequest** - Intercepts HTTP/HTTPS requests 1. **QNetworkAccessManager::createRequest** - Intercepts HTTP/HTTPS requests
2. **QWebSocket::open** - Patches WebSocket connections 2. **QWebSocket::open** - Patches WebSocket connections
@@ -131,6 +139,7 @@ RMHook-iOS uses Memory Hooking (`MSHookFunction`) via Theos to patch Qt framewor
When the app attempts to connect to reMarkable's servers (e.g., `internal.cloud.remarkable.com`), the hooks redirect these requests to your configured host and port, which is saved persistently on the device via `NSUserDefaults` and presented via `UIKit` alerts. When the app attempts to connect to reMarkable's servers (e.g., `internal.cloud.remarkable.com`), the hooks redirect these requests to your configured host and port, which is saved persistently on the device via `NSUserDefaults` and presented via `UIKit` alerts.
## Credits ## Credits
- xovi-rmfakecloud: [asivery/xovi-rmfakecloud](https://github.com/asivery/xovi-rmfakecloud) - Original hooking information - xovi-rmfakecloud: [asivery/xovi-rmfakecloud](https://github.com/asivery/xovi-rmfakecloud) - Original hooking information
- rm-xovi-extensions: [asivery/rm-xovi-extensions](https://github.com/asivery/rm-xovi-extensions) - Extension framework for reMarkable - rm-xovi-extensions: [asivery/rm-xovi-extensions](https://github.com/asivery/rm-xovi-extensions) - Extension framework for reMarkable
- rmfakecloud: [ddvk/rmfakecloud](https://github.com/ddvk/rmfakecloud) - Self-hosted reMarkable cloud - rmfakecloud: [ddvk/rmfakecloud](https://github.com/ddvk/rmfakecloud) - Self-hosted reMarkable cloud
@@ -142,3 +151,7 @@ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file
## Disclaimer ## Disclaimer
This project is not affiliated with, endorsed by, or sponsored by reMarkable AS. Use at your own risk. This tool modifies the reMarkable iOS application and may violate the application's terms of service. This project is not affiliated with, endorsed by, or sponsored by reMarkable AS. Use at your own risk. This tool modifies the reMarkable iOS application and may violate the application's terms of service.
## Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.

View File

@@ -6,7 +6,7 @@ include $(THEOS)/makefiles/common.mk
TWEAK_NAME = RMHook TWEAK_NAME = RMHook
QT_VERSION ?= 6.8.2 QT_VERSION ?= 6.10.3
RMHook_FILES = Tweak.xm Config.mm RMHook_FILES = Tweak.xm Config.mm
RMHook_CFLAGS = -fobjc-arc -F$(HOME)/Qt/$(QT_VERSION)/ios/lib RMHook_CFLAGS = -fobjc-arc -F$(HOME)/Qt/$(QT_VERSION)/ios/lib