|
| 1 | +# 3 App Bypass — Implementation Plan (sideload 3‑app limit) |
| 2 | + |
| 3 | +Goal |
| 4 | +- Provide a jailbroken-device feature to bypass Apple's 3‑app sideload limit so users can install more than three sideloaded apps via free provisioning approaches. |
| 5 | + |
| 6 | +Summary of approaches |
| 7 | + |
| 8 | +A) User-level tooling (low-risk) |
| 9 | +- Use or integrate with AltStore/AltServer workflows to avoid the limit (refresh provisioning, re-sign apps periodically). |
| 10 | +- Pros: safe, no kernel/daemon patching. Cons: limited automation and needs a companion host app. |
| 11 | + |
| 12 | +B) Daemon-level patch (medium-risk, recommended first prototype) |
| 13 | +- Target daemons that enforce installation/validation (primarily `installd`, `installcoordination`, and related processes) and intercept logic that rejects additional installations. |
| 14 | +- Alternatively, patch `amfid` to accept unsigned/modified signatures for selected bundles. |
| 15 | +- Pros: precise, can be scoped to specific processes or bundle IDs. Cons: requires jailbreak (code injection or tweaks), reverse-engineering per iOS version. |
| 16 | + |
| 17 | +C) Kernel-level bypass (high-risk) |
| 18 | +- Patch AMFI kernel enforcement (AppleMobileFileIntegrity) or code-signing enforcement points in kernel/kexts to globally disable signing/count checks. |
| 19 | +- Pros: broad coverage. Cons: highest risk, version-specific offsets, dangerous if incorrect (can brick device). |
| 20 | + |
| 21 | +Recommended path |
| 22 | +1. Prototype a daemon-level tweak that hooks `amfid` or `installd` behavior for the install/validation code path used during sideload with free developer provisioning. This mirrors historical approaches (AppSync-style) and avoids direct kernel patches. |
| 23 | +2. Provide a conservative UI to enable/disable the bypass per-app and to create automatic rollback (restore original binaries or restart daemons). |
| 24 | +3. If daemon patching proves insufficient (server-side checks or external enforcement), evaluate a narrowly scoped kernel patch with extensive backups and explicit user warnings. |
| 25 | + |
| 26 | +Required components |
| 27 | +- Jailbreak or kernel write primitives from `lara` (for persistent patching and overwriting system files). |
| 28 | +- Offset mapping for target iOS versions (function addresses in `amfid`/`installd`/kernel). Keep an offsets checklist per iOS build. |
| 29 | +- A tweak skeleton to inject code into `amfid`/`installd` (Theos/MobileSubstrate or Substitute) with per-OS symbol resolution. |
| 30 | +- Safe backup & revert: backup original daemons/binaries and the AMFI cache before applying changes. |
| 31 | + |
| 32 | +Known references / PoCs |
| 33 | +- AppSync-style packages (historical jailbreak solutions that allow unsigned apps). |
| 34 | +- ProjectManticore / amfid bypass PoCs on GitHub (search results: ProjectManticore, amfidont). |
| 35 | +- The iPhone Wiki entries for `AMFI` and `installd` describing historical approaches. |
| 36 | +- AltStore (non-jailbreak sideload alternative) for user-level strategy. |
| 37 | + |
| 38 | +Testing and safety |
| 39 | +- Only enable bypass on confirmed jailbroken devices; detect jailbreak early and refuse on stock devices. |
| 40 | +- Create an explicit backup before modifying any system binary or the code-sign trust cache. Provide a one-tap restore. |
| 41 | +- Test across a small matrix of iOS builds (17.5–18.6.2 baseline as with `lara`) and device types. |
| 42 | + |
| 43 | +Next steps (immediate) |
| 44 | +1. Locate and extract `amfid`/`installd` symbols for target iOS builds (requires device access or symbol dumps). Produce a short list of candidate functions to hook. |
| 45 | +2. Scaffold a MobileSubstrate tweak skeleton that logs calls and can return a forced "valid" result for signature checks in-process. |
| 46 | +3. Validate the tweak on a test device and implement safe revert. |
| 47 | + |
| 48 | +Helpers added |
| 49 | +- `other/3app-bypass/scripts/get_device_binaries.sh` — SCP helper to pull binaries from a jailbroken device. |
| 50 | +- `other/3app-bypass/scripts/scan_symbols.py` — scan local binaries for likely amfid/installd/AMFI-related symbols using `nm`/`otool`/`strings`. |
| 51 | + |
| 52 | +Usage examples |
| 53 | +- Pull binaries from device: |
| 54 | + |
| 55 | +```bash |
| 56 | +./other/3app-bypass/scripts/get_device_binaries.sh root@192.168.1.42 ./work/binaries |
| 57 | +``` |
| 58 | + |
| 59 | +- Scan the pulled binaries: |
| 60 | + |
| 61 | +```bash |
| 62 | +./other/3app-bypass/scripts/scan_symbols.py ./work/binaries/amfid ./work/binaries/installd |
| 63 | +``` |
| 64 | + |
| 65 | + |
| 66 | +Notes |
| 67 | +- This feature is intended for jailbroken devices only. It may violate App Store/Apple policies if used to distribute apps circumventing platform protections; include clear warnings and an opt-in flow. |
| 68 | +- Keep patches minimal and reversible. |
| 69 | + |
| 70 | +Status: plan created. Next: scaffold tweak skeleton and start identifying amfid/installd symbols on-device. |
0 commit comments