Add auto-install flow and move scripts folder

This commit is contained in:
√(noham)²
2026-08-26 00:23:17 +02:00
parent d5ef3c2fb9
commit d407221fda
4 changed files with 113 additions and 17 deletions

View File

@@ -28,20 +28,22 @@ Only `arm64-v8a` is supported (the hook library and PLT hooks are ARM64-specific
## Installation and usage
⚠️ **For legal reasons, this repository does not include the reMarkable app.** You must provide your own APKs (see the Building section).
⚠️ **For legal reasons, this repository does not include the reMarkable app.** However, the latest compiled `.so` files are available in the [Releases](https://github.com/NohamR/RMHook-Android/releases/latest) section.
### Prerequisites
### Auto installation
A macOS or Linux build host with:
Run in a terminal:
**Requirements:** `apktool`, `adb`, Android SDK build-tools (`zipalign`, `apksigner`), and `keytool` must be installed.
- **Android SDK Build Tools** (`zipalign`, `apksigner`) — install via Android Studio's SDK Manager or `sdkmanager "build-tools;36.0.0"`.
- **Android NDK** — e.g. `brew install --cask android-ndk` on macOS. Used to cross-compile `librmhook.so` for `aarch64-linux-android`.
- **apktool** — `brew install apktool` on macOS. Used to inject the `System.loadLibrary` call into `MainActivity.smali`.
- **Python 3** — used to install Qt via `aqtinstall`.
- **Java** — for `keytool` (signing keystore generation).
- The reMarkable Android **APK splits** (base + arm64 + xxhdpi).
```bash
bash <(curl -sL https://raw.githubusercontent.com/NohamR/RMHook-Android/refs/heads/main/scripts/auto-install.sh)
```
### Pull the APK splits from your device
This will download the pre-built libraries, pull the APK splits from your device, inject the hook, and install the patched app.
### Manual installation
#### Step 1: Pull the APK splits from your device
```bash
# List the paths of the installed splits
@@ -62,13 +64,13 @@ You should now have three files in `~/reMarkable/app/`:
### Build
```bash
./script/build.sh
./scripts/build.sh
```
### Inject & sign
```bash
./script/inject.sh [apk_dir] # apk_dir defaults to ~/reMarkable/app
./scripts/inject.sh [apk_dir] # apk_dir defaults to ~/reMarkable/app
```
Patches `base.apk`'s smali to `loadLibrary("rmhook")`, bundles `librmhook.so` + `libshadowhook_nothing.so` into the arm64 split, aligns and signs everything and puts the result in `output/`.
@@ -125,7 +127,7 @@ Ensure the following are set or auto-detected:
### 3. Compile
```bash
./script/build.sh
./scripts/build.sh
```
## Debugging
@@ -172,8 +174,8 @@ When the app attempts to connect to reMarkable's servers (e.g., `internal.cloud.
- xovi-rmfakecloud: [asivery/xovi-rmfakecloud](https://github.com/asivery/xovi-rmfakecloud) - Original hooking information
- rmfakecloud: [ddvk/rmfakecloud](https://github.com/ddvk/rmfakecloud) - Self-hosted reMarkable cloud
- bytedance/android-inline-hook: [bytedance/android-inline-hook](https://github.com/bytedance/android-inline-hook) — ShadowHook, the inline hook library used for intercepting Qt function calls
- Dapitch666: [Dapitch666](https://github.com/dapitch666/) — initial proof-of-concept for hooking the reMarkable Android app and redirecting to rmfakecloud
- ShadowHook: [bytedance/android-inline-hook](https://github.com/bytedance/android-inline-hook) - Inline hook library for intercepting Qt function calls
- Dapitch666: [dapitch666](https://github.com/dapitch666/) - Initial proof-of-concept for hooking the reMarkable Android app
## License