https://github.com/ziachi/android-override
Device identity management framework for Android custom ROM development. Research & educational toolkit.
https://github.com/ziachi/android-override
android android-13 android-14 android-15 android-framework aosp attestation custom-rom device-identity rom-development security-research
Last synced: 18 days ago
JSON representation
Device identity management framework for Android custom ROM development. Research & educational toolkit.
- Host: GitHub
- URL: https://github.com/ziachi/android-override
- Owner: ziachi
- License: apache-2.0
- Created: 2026-06-14T08:06:59.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-14T09:52:16.000Z (about 1 month ago)
- Last Synced: 2026-06-14T10:21:20.816Z (about 1 month ago)
- Topics: android, android-13, android-14, android-15, android-framework, aosp, attestation, custom-rom, device-identity, rom-development, security-research
- Language: Java
- Size: 54.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Android Override
> Device identity management framework for Android custom ROM development.
> A research and development toolkit for ROM maintainers.
[](LICENSE)
[]()
[]()
## ⚠️ Status: Untested
> **This repo targets Android 13+ (API 33+) and has NOT been built or tested yet.**
>
> The tested & working version is the Android 10 edition:
> **[android-override-a10](https://github.com/ziachi/android-override-a10)** — tested on keepQASSA Sisu v2.4_0.s (santoni)
## ⚠️ Disclaimer
This project is provided **strictly for educational and research purposes**. It is intended for custom ROM developers and security researchers who need to understand and manage device identity properties in AOSP-based builds.
**This project does NOT:**
- Include any private keys, certificates, or keybox files
- Distribute any proprietary or copyrighted material
- Encourage or facilitate any violation of terms of service
- Bypass any digital rights management (DRM) protections
**Users are solely responsible** for how they use this framework and must comply with all applicable laws and terms of service in their jurisdiction. The authors assume no liability for misuse.
## What is this?
A modular, ROM-integrated framework for managing device identity properties at the system level — designed for custom ROM developers who need to configure `Build.*` fields, manage attestation certificates, and handle per-application device property configurations.
This is comparable to how custom ROM projects like LineageOS, ProtonAOSP, and others manage device identity in their source trees.
**No keys included** — this is a tool only. Users must provide their own configuration.
## Repos
| Repo | Target | Status |
|------|--------|--------|
| [android-override](https://github.com/ziachi/android-override) | Android 13+ (API 33+) | ⚠️ Untested |
| [android-override-a10](https://github.com/ziachi/android-override-a10) | Android 10 (API 29) | ✅ Tested |
## Use Cases
- **ROM Development & Testing** — Test how different device configurations affect app compatibility
- **Security Research** — Study device attestation mechanisms and identity management
- **Device Configuration** — Manage device properties for custom ROM builds
- **Compatibility Testing** — Verify app behavior across different device profiles
## Architecture
```
┌──────────────────────────────────────────────────┐
│ Settings UI │
│ (OverrideSettings system app) │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌────────┐ │
│ │Device│ │Cert │ │PerApp│ │Profi-│ │System │ │
│ │Props │ │Mgmt │ │Config│ │les │ │Health │ │
│ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬─────┘ │
└─────┼────────┼────────┼────────┼────────┼────────┘
│ │ │ │ │
┌─────▼────────▼────────▼────────▼────────▼────────┐
│ OverrideController │
│ (Central config + state manager) │
│ /data/system/override/config.json │
└─────┬────────┬────────────────┬──────────────────┘
│ │ │
┌─────▼──┐ ┌──▼──────────┐ ┌──▼──────────────────┐
│Props │ │Certificate │ │Environment │
│Manager │ │Manager │ │Manager │
│ │ │ │ │ │
│Build.* │ │• XML parse │ │• Filter properties │
│field │ │• PEM keys │ │• Clean environment │
│config │ │• Multi-slot │ │• Manage visibility │
│via │ │• Health chk │ │• Suppress debug logs │
│reflect │ │• Rotation │ │ │
└─────┬──┘ └──┬──────────┘ └──────────────────────┘
│ │
┌─────▼──┐ ┌──▼──────────┐
│App │ │Attestation │
│Process │ │Config │
│hook │ │ │
│point │ │• TEE config │
│ │ │• Boot state │
│ │ │• Cert chain │
└────────┘ └─────────────┘
```
## Features
| Feature | Description |
|---------|-------------|
| 🔧 **Property Management** | Configure `Build.*` fields per-process for ROM development |
| 📦 **Certificate Manager** | Import and manage attestation certificates (user-provided) |
| 🛡️ **Attestation Config** | Configure attestation parameters (security level, boot state) |
| 📱 **Per-App Configuration** | Different device properties per application for testing |
| 💾 **Profiles** | Save/load/switch entire device configurations |
| ✅ **Health Checker** | Built-in diagnostics for configuration validation |
| 🔍 **Certificate Health** | Validate certificate chain integrity |
| 📋 **Device Database** | Built-in device property presets (public build info) |
| 🔄 **Auto-Rotation** | Rotate certificate slots on validation failure |
| 💽 **OTA-Safe Config** | Persist in `/data/system/override/` — survives updates |
## Quick Start
### 1. Copy to ROM source
```bash
git clone https://github.com/ziachi/android-override.git
# Framework components
mkdir -p frameworks/base/core/java/com/android/override/services
cp android-override/patches/frameworks_base/core/*.java \
frameworks/base/core/java/com/android/override/
cp android-override/patches/frameworks_base/keystore/*.java \
frameworks/base/core/java/com/android/override/
cp android-override/patches/frameworks_base/services/*.java \
frameworks/base/core/java/com/android/override/services/
# Settings app
cp -r android-override/packages/OverrideSettings packages/apps/
# SEPolicy
cp android-override/sepolicy/* device/YOUR_DEVICE/sepolicy/
```
### 2. Add hook to ActivityThread
```java
// frameworks/base/core/java/android/app/ActivityThread.java
// In handleBindApplication(), before app.onCreate():
import com.android.override.PropsHooks;
PropsHooks.onApplicationCreated(app, data.processName);
```
### 3. Add to device makefile
```makefile
PRODUCT_PACKAGES += OverrideSettings
BOARD_SEPOLICY_DIRS += device/YOUR_DEVICE/sepolicy
```
### 4. Build
```bash
mka bacon
```
## Configuration
After building, configure via **Settings → System → Override**:
1. **Enable** master switch
2. **Select device profile** from database or enter manually
3. **Import certificates** (your own — not included)
4. **Configure attestation** parameters
5. **Run health checker** to validate configuration
## Directory Structure
```
android-override/
├── README.md
├── LICENSE # Apache 2.0
├── CHANGELOG.md
├── patches/
│ └── frameworks_base/
│ ├── core/
│ │ ├── OverrideController.java # Central config manager
│ │ └── PropsHooks.java # Build.* field configuration
│ ├── keystore/
│ │ ├── KeyboxManager.java # Certificate manager
│ │ └── AttestationHooks.java # Attestation configuration
│ └── services/
│ ├── AntiDetection.java # Environment management
│ └── IntegrityChecker.java # Health diagnostics
├── packages/
│ └── OverrideSettings/ # Settings UI app
│ ├── Android.bp
│ ├── AndroidManifest.xml
│ ├── src/ # Java sources
│ └── res/ # Layouts, strings, drawables
├── config/
│ ├── props_database.xml # Device property presets
│ ├── default_config.xml # Config template
│ └── example_profile.xml # Example profile
├── sepolicy/
│ ├── override.te # SELinux policy
│ └── file_contexts # File labels
└── docs/
├── integration-guide.md # Full integration guide
├── per-app-spoofing.md # Per-app config guide
└── troubleshooting.md # Common issues + fixes
```
## Security Model
- ✅ **No keys in repo** — certificates are user-provided via Settings UI
- ✅ **No proprietary data** — device database contains only public build information
- ✅ **Platform-signed** — runs as privileged system app
- ✅ **SELinux enforcing** — targeted policy rules only
- ✅ **Config in /data/** — not readable by untrusted apps
## Android 10 vs 13+
| Aspect | Android 13+ (this repo) | Android 10 ([a10](https://github.com/ziachi/android-override-a10)) |
|--------|-------------------------|------|
| Attestation HAL | KeyMint | Keymaster 4.x |
| Verification API | Play Integrity | SafetyNet Attestation |
| Target SDK | 33+ | 29 |
| Base64 | java.util.Base64 | android.util.Base64 |
| Storage | Scoped storage | READ/WRITE_EXTERNAL_STORAGE |
| Status | ⚠️ Untested | ✅ Tested |
## Contributing
Contributions are welcome. Please ensure all contributions follow the project's security model — no keys, certificates, or proprietary data.
## License
```
Copyright 2025 Android Override Project
Licensed under the Apache License, Version 2.0
```
See [LICENSE](LICENSE) for full text.