Add Vector/LSPosed compatibility, README, LICENSE

This commit is contained in:
sssnake
2026-04-03 08:25:06 -07:00
parent 3d87e492b2
commit a0b77138e1
7 changed files with 123 additions and 2 deletions

33
LICENSE Normal file
View File

@@ -0,0 +1,33 @@
Setec Labs Driver Manager License
Copyright (c) 2026 SetecLabs
Permission is granted, free of charge, to any person obtaining a copy of
this software and associated files (the "Software"), to use the Software
for personal, non-commercial purposes only.
The following restrictions apply:
1. You may NOT redistribute, share, or otherwise distribute the Software
or any portion of it without prior written approval from the copyright
holder.
2. You may NOT modify, adapt, or create derivative works based on the
Software without prior written approval from the copyright holder.
3. You may NOT use the Software for any commercial purpose, or incorporate
it into any product or service offered to others, without prior written
approval from the copyright holder.
4. This license notice must be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
For licensing inquiries or approval requests, contact: SetecLabs

85
README.md Normal file
View File

@@ -0,0 +1,85 @@
# Setec Labs Driver Manager
An LSPosed/Xposed module for per-app driver management on Android. Redirect native library loading to custom drivers without modifying system files.
## How It Works
Driver Manager hooks into `System.loadLibrary()`, `System.load()`, `Runtime.loadLibrary0()`, and `BaseDexClassLoader.findLibrary()` via Xposed. When a scoped app tries to load a native driver, the hook redirects it to your custom driver file. The stock system drivers are never touched on disk.
## Features
- **Per-App Driver Scoping** — Select a driver, then pick which apps use the custom version (LSPosed-style checkbox UI)
- **System-Wide Mode** — Apply a custom driver to all user apps with one toggle
- **Driver Registry** — Auto-scans `/vendor` for GPU, WiFi, Bluetooth, audio, camera, USB, and SDR drivers with SHA256 hashing
- **Multiple Variants** — Keep multiple versions of a driver and switch between them
- **Kernel Module Manager** — Load/unload `.ko` kernel modules, set autoload, check compatibility
- **Driver Protection** — SHA256 baseline integrity checking to detect unauthorized changes to system drivers
- **File Redirect Hooks** — Also intercepts `FileInputStream` for firmware/config file redirection per-app
## Requirements
- Android 10+ (API 29+)
- [Vector](https://github.com/JingMatrix/Vector) (LSPosed fork) or compatible Xposed framework
- Root (KernelSU or Magisk) for .ko management and driver scanning
## Installation
1. Build the APK or grab a release
2. Install the APK
3. Enable the module in Vector
4. Set the module scope to the apps you want to manage
5. Open Driver Manager and tap the scan button to discover system drivers
6. Enable a driver, add custom variants, and scope apps to use them
## Building
```
./gradlew assembleRelease
```
Output: `app/build/outputs/apk/release/app-release.apk`
## Project Structure
```
app/src/main/
├── assets/xposed_init # Xposed entry point
├── java/com/seteclabs/drivermanager/
│ ├── xposed/DriverHook.java # Xposed hooks (the core)
│ ├── manager/
│ │ ├── ScopeManager.java # Per-app scope config
│ │ ├── DriverRegistry.java # Driver discovery + database
│ │ ├── KoManager.java # .ko kernel module management
│ │ ├── ProtectionManager.java # Integrity checking
│ │ └── RootShell.java # Root command execution
│ ├── model/ # Data classes
│ └── ui/ # Activity + Fragments
└── res/ # Layouts, colors, themes
```
## Config Location
```
/data/local/tmp/driver-manager/
├── scopes/ # Per-package JSON configs (read by Xposed hook)
├── drivers/ # Custom driver files
├── modules/ # .ko kernel modules
├── backup/ # Driver backups for integrity restore
└── autoload.conf # Modules to load at boot
```
## Supported Driver Categories
| Category | What it scans |
|-----------|---------------|
| GPU | EGL libs, Vulkan ICDs in `/vendor/lib64/egl/`, `/vendor/lib64/hw/` |
| WiFi | BCM/WCN/WLAN firmware in `/vendor/firmware/`, `/vendor/etc/wifi/` |
| Bluetooth | HCD/BT firmware in `/vendor/firmware/`, `/vendor/etc/bluetooth/` |
| Audio | Audio HAL in `/vendor/lib64/hw/` |
| Camera | Camera HAL in `/vendor/lib64/hw/` |
| USB | libusb in `/vendor/lib64/`, `/system/lib64/` |
| SDR | RTL-SDR, HackRF, Airspy libs (Termux) |
## License
Free for personal use. Redistribution, modification, or use beyond personal purposes requires approval. See [LICENSE](LICENSE) for full terms.

View File

@@ -19,7 +19,7 @@
android:value="Per-app driver manager: redirect native library loading to custom drivers without modifying system files" /> android:value="Per-app driver manager: redirect native library loading to custom drivers without modifying system files" />
<meta-data <meta-data
android:name="xposedminversion" android:name="xposedminversion"
android:value="93" /> android:value="100" />
<meta-data <meta-data
android:name="xposedscope" android:name="xposedscope"
android:resource="@array/xposed_scope" /> android:resource="@array/xposed_scope" />

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Driver Manager</string> <string name="app_name">Setec Labs Driver Manager</string>
<string name="nav_drivers">Drivers</string> <string name="nav_drivers">Drivers</string>
<string name="nav_apps">Apps</string> <string name="nav_apps">Apps</string>
<string name="nav_modules">Modules</string> <string name="nav_modules">Modules</string>

View File

@@ -0,0 +1 @@
com.seteclabs.drivermanager.xposed.DriverHook

View File

@@ -0,0 +1,2 @@
minApiVersion=93
targetApiVersion=100