AXP Magisk resurrection track: Speckit 009 port AXP/LOS22 to LOS23.

Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
This commit is contained in:
sunfish-admin committed 2026-09-16 21:56:22 +00:00
commit 12d2179c20
150 files changed
+26263

No files matched your search

+92
View File
@@ -0,0 +1,92 @@
# 005 — Restricted signature spoofing runbook
**Feature**: `005-restricted-signature-spoofing`
**LAB only**: serial `11231JEC207477` — never GOLDEN
**Host**: `rom-dev01` under `/srv/rom/`
## What we discovered (2026-09-15)
LineageOS 23.2 **already** ships restricted microG spoofing
(`frameworks/base` commit `23c0a5c19844`, LuK1337):
| Gate | Stock LOS behaviour |
|------|---------------------|
| Build | `userdebug`/`eng` only (`isDebuggable()` JNI) |
| Packages | `com.google.android.gms`, `com.android.vending` only |
| Signer | Must match **microG release** cert (`MICROG_REAL_SIGNATURE`) |
| Fake value | Must equal platform Google cert (`MICROG_FAKE_SIGNATURE`) |
| Surfaces | Spoofs both `PackageInfo.signatures` and `signingInfo` |
Gaps vs our stack / AXP UX:
1. **Our Phonesky** is signed with the **project JKS**, not microG — stock
gate rejected it → Play `UNREGISTERED_ON_API_CONSOLE`.
2. No `FAKE_PACKAGE_SIGNATURE` permission → microG Self-Check permission rows
empty.
3. No Developer Options master switch (`allow_signature_fake`).
## What we applied
Script (idempotent, marker `SUNFISH_A16_005_SIGSPOOF`):
- Meta: `vendor/sunfish-a16/patches/005-sigspoof/apply_005_sigspoof.py`
- Host copy: `/srv/rom/src/lineage/vendor/sunfish-a16/patches/005-sigspoof/`
- References: `/srv/rom/references/extendrom` @ `f129253c…`
- Cert hex: `/srv/rom/artifacts/005-spoofing/phonesky-cert.hex`
(SHA-256 `31:31:86:CB:…:BD:56`)
Changes on the LOS tree:
1. Extend `isMicrogSigned()` to accept **project Phonesky** signer for
`com.android.vending`.
2. Gate spoofing on `Settings.Secure.allow_signature_fake` (default **0**).
3. Require grant of `android.permission.FAKE_PACKAGE_SIGNATURE`.
4. Port EXTENDROM permission + Settings Developer Options toggle + strings.
5. Keep packaging leftovers: `LOCAL_REPLACE_PREBUILT_APK_INSTALLED` + Play FGS
privapp XML (already in `vendor/sunfish-a16/`).
**LAB 2026-09-15 post-flash:** Self-Check / spoofing / no
`UNREGISTERED_ON_API_CONSOLE` OK. Play install failures / ANR: `DownloadService`
/`VpaService` FGS `systemExempted` needs **any of** `SCHEDULE_EXACT_ALARM` /
`USE_EXACT_ALARM` / VPN — privapp alone is not enough if the APK does not
**request** those permissions.
**Fix (2026-09-15):** Phonesky rebuild adds `USE_EXACT_ALARM` +
`SCHEDULE_EXACT_ALARM` to the manifest; artifact
`/srv/rom/artifacts/005-spoofing/Phonesky_exact-alarm.apk`; pushed to LAB via
`adb install -r` (same project JKS); vendor prebuilt updated under
`/srv/rom/src/lineage/vendor/sunfish-a16/prebuilt/Phonesky.apk` for next bacon.
`USE_EXACT_ALARM: granted=true` on LAB after upgrade.
Re-apply after `repo sync` that resets frameworks/Settings:
```bash
python3 /srv/rom/src/lineage/vendor/sunfish-a16/patches/005-sigspoof/apply_005_sigspoof.py
```
Backups: `/srv/rom/artifacts/005-spoofing/bak-snapshots/` (never leave
`*.005.bak` under `res/` — aapt2 will fail).
## LAB validation (US6 — 2026-09-15)
Accepted on LAB `11231JEC207477` / build `23.2-20260915-UNOFFICIAL-sunfish`.
Evidence: `/srv/rom/artifacts/005-spoofing/20260915-us6-validation/LAB-US6.txt`.
1. ~~Flash LAB; `pm path` gms / gsf / vending~~ — pass
2. ~~Allow signature spoofing~~ — `allow_signature_fake=1`
3. ~~Self-Check correct signature~~ — pass (grant on user 0 + Island 10)
4. ~~Play sign-in / installs~~ — pass after exact-alarm Phonesky; no `UNREGISTERED_ON_API_CONSOLE`
5. Location: configure BeaconDB `https://api.beacondb.net` (no UnifiedNlp) — steps in
`docs/004-lab-selfcheck.md` + `quickstart.md`
```bash
adb -s 11231JEC207477 shell settings get secure allow_signature_fake
# expect 1 when enabled
```
**Handoff:** first stack done → next feature **`006` banking rootless**. Do **not**
add KernelSU/`007` until after `006`.
## Out of scope
- Banking apps (`006`), KSU/root (`007`), Magisk/LSPosed.