Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
f33c3b4
xnu: QEMU VM with an external virtio-blk iOS root
zaidanfaiz Oct 23, 2026
1f897d8
xnu: keep virtio-input event buffers safe on 4K pages
zaidanfaiz Oct 23, 2026
cfafc1e
notes: QEMU VM handoff
zaidanfaiz Oct 23, 2026
4146a0e
docs: note the QEMU kernel must include 0082
zaidanfaiz Oct 23, 2026
1a76371
notes: record repository validation
zaidanfaiz Oct 23, 2026
55f9da1
notes: record the successful 0082 kernel build
zaidanfaiz Oct 23, 2026
ae6f796
notes: record Windows QEMU host prerequisites
zaidanfaiz Oct 24, 2026
cbd2508
qemu: support Windows monitor and verify initial kernel boot
zaidanfaiz Oct 24, 2026
9b5e063
notes: record Windows QEMU milestone commit
zaidanfaiz Oct 24, 2026
eaae507
notes: record root image copy source search
zaidanfaiz Oct 24, 2026
a7ac33d
notes: verify GitHub CI has no iOS root artifact
zaidanfaiz Oct 24, 2026
4f3e77e
notes: record WSL root source search
zaidanfaiz Oct 24, 2026
c0a6a77
notes: clarify missing root and audit pushed content
zaidanfaiz Oct 24, 2026
234e237
prepare: record extracted IPSW and Linux prerequisites
zaidanfaiz Oct 24, 2026
d05c427
notes: record working WSL and verified APFS access
zaidanfaiz Oct 24, 2026
b9913b9
root: use repairing HFS check and enable WSL image build
zaidanfaiz Oct 24, 2026
da7f034
build: preserve LF shell scripts for Windows WSL checkouts
zaidanfaiz Oct 24, 2026
ea144f7
root: support numeric Apple owners with Ubuntu uutils
zaidanfaiz Oct 24, 2026
a78ca90
notes: record verified iOS root and initial QEMU disk boot
zaidanfaiz Oct 24, 2026
30d64c1
notes: verify virtio root mount and Apple launchd boot
zaidanfaiz Oct 24, 2026
e0d5c16
xnu: enable opt-in process sampling for QEMU roots
zaidanfaiz Oct 24, 2026
fd10835
notes: record QEMU logo boot and sampler diagnostic CI
zaidanfaiz Oct 24, 2026
fc3da1a
docs: record Windows root boot and successful sampler build
zaidanfaiz Oct 24, 2026
4139e14
xnu: add patch 0084 for kern.exec_inject and persona support
zaidanfaiz Oct 24, 2026
d03d227
docs: record 0084 CI dispatch run 40090859596
zaidanfaiz Oct 24, 2026
b36095e
docs: correct 0084 verification and integration status
zaidanfaiz Oct 24, 2026
758b7df
xnu: enforce patch application and fix exec injection
zaidanfaiz Oct 24, 2026
a37379e
ci: limit strict XNU patch check to fork patches
zaidanfaiz Oct 24, 2026
02c19f3
docs: record curated 0084 QEMU panic
zaidanfaiz Oct 24, 2026
2ec8b86
docs: record 0084 SpringBoard and backboardd boot
zaidanfaiz Oct 24, 2026
0b3c1bc
docs: record panic-free 0084 QEMU boot diagnostics
zaidanfaiz Oct 24, 2026
4e7586c
xnu: add opt-in exec injection trace
zaidanfaiz Oct 24, 2026
3785867
xnu: allow dyld policy for injected libraries
zaidanfaiz Oct 24, 2026
e3e3c57
docs: record QEMU dyld policy diagnosis
zaidanfaiz Oct 24, 2026
dde4100
xnu: register dyld policy as AMFI
zaidanfaiz Oct 24, 2026
fabf86c
docs: record corrected dyld AMFI policy build
zaidanfaiz Oct 24, 2026
4a6edfb
qemu: add disposable disk snapshot mode
zaidanfaiz Oct 24, 2026
77194d6
xnu: trace dyld AMFI policy requests
zaidanfaiz Oct 24, 2026
518fd74
docs: record QEMU AMFI trace run
zaidanfaiz Oct 24, 2026
df22644
xnu: avoid proc dereference in AMFI trace
zaidanfaiz Oct 24, 2026
705ec0a
docs: record corrected AMFI trace build
zaidanfaiz Oct 24, 2026
d7b5630
docs: record safe QEMU Redwood hook results
zaidanfaiz Oct 24, 2026
7e63321
docs: fix QEMU trace time range
zaidanfaiz Oct 24, 2026
0f05af5
docs: record iOS 16.7.16 hook compatibility findings
zaidanfaiz Oct 24, 2026
569a2d8
userland: add 20H392 Redwood hook overlay
zaidanfaiz Oct 24, 2026
019fe06
chore: allow whitespace in embedded overlay diff
zaidanfaiz Oct 24, 2026
c739dbc
docs: record 20H392 Redwood QEMU boot results
zaidanfaiz Oct 24, 2026
dd3bdde
chore: organize workspace and record cleanup
zaidanfaiz Oct 24, 2026
e3248b1
docs: clarify Android emulator product goal
zaidanfaiz Oct 24, 2026
1b0d66f
docs: record safe 20H392 QEMU retest
zaidanfaiz Oct 24, 2026
d31d4ea
docs: record 20H392 Redwood injection trace
zaidanfaiz Oct 24, 2026
2500a77
docs: note missing iOS data-volume state
zaidanfaiz Oct 24, 2026
e895622
docs: assess Inferno and UniXNU for QEMU guest
zaidanfaiz Oct 24, 2026
f7b81a4
docs: record UniXNU QEMU build prerequisites
zaidanfaiz Oct 24, 2026
5fa58d7
docs: record UniXNU Darwin22 boot ABI gap
zaidanfaiz Oct 24, 2026
3f53bbb
docs: record 20H392 QEMU soak progress
zaidanfaiz Oct 24, 2026
9d50467
xnu: support QEMU vCPU MPIDR topology
zaidanfaiz Oct 24, 2026
339a864
xnu: use QEMU PSCI HVC conduit
zaidanfaiz Oct 24, 2026
4e7b211
docs: record QEMU SMP kernel build result
zaidanfaiz Oct 24, 2026
910f7da
docs: record Home Screen and virtual input wake
zaidanfaiz Oct 24, 2026
adfc8a4
docs: record one-hour iOS Home Screen soak
zaidanfaiz Oct 24, 2026
f553b08
docs: record four-vCPU QEMU smoke test
zaidanfaiz Oct 24, 2026
de98892
docs: record kernel 0088 one-hour repeat boot
zaidanfaiz Oct 24, 2026
aabacda
docs: narrow kernel 0088 UI regression diagnosis
zaidanfaiz Oct 24, 2026
b0a86f7
docs: record HFS repair QEMU comparison
zaidanfaiz Oct 24, 2026
9964695
docs: record failed kernel 0086 UI repeat
zaidanfaiz Oct 25, 2026
cc29f35
docs: record persistent-write QEMU soak
zaidanfaiz Oct 25, 2026
7ecc3ab
xnu: permit QEMU init to mount bindfs job overlay
zaidanfaiz Oct 25, 2026
259e8cc
xnu: include boot arg declaration for bindfs patch
zaidanfaiz Oct 25, 2026
90e4f15
docs: record 0089 CI and active QEMU soak
zaidanfaiz Oct 25, 2026
accd84e
docs: record one-hour QEMU and kernel 0089 smoke results
zaidanfaiz Oct 25, 2026
ad6b499
docs: record 0089 repeat boot evidence and logs
zaidanfaiz Oct 25, 2026
6b06eec
docs: record LaunchServices recovery stack in 0089 boot
zaidanfaiz Oct 25, 2026
8d7f3ee
docs: record completed 0089 one-hour root boot soak
zaidanfaiz Oct 25, 2026
d865dc9
docs: compare full QEMU traces for 0086 and 0089
zaidanfaiz Oct 25, 2026
7cdb99e
docs: annotate 0089 final kernel state
zaidanfaiz Oct 25, 2026
b12f471
docs: locate SpringBoard render divergence in QEMU logs
zaidanfaiz Oct 25, 2026
43f4636
docs: analyze full 0086 QEMU trace and late UI
zaidanfaiz Oct 25, 2026
5af305d
docs: correlate copyout faults with recovery path
zaidanfaiz Oct 25, 2026
c556854
docs: record dyld cryptex boot diagnosis
zaidanfaiz Oct 25, 2026
54fe1db
docs: clarify idle display and QEMU UI evidence
zaidanfaiz Oct 25, 2026
fc64feb
tools: add periodic QMP display wake for VM runs
zaidanfaiz Oct 25, 2026
02d503c
tools: capture periodic QEMU guest snapshots
zaidanfaiz Oct 25, 2026
eab3605
tools: sample QEMU guest logs without llvm-nm
zaidanfaiz Oct 25, 2026
d37b237
docs: record 0086 QEMU trace analysis
zaidanfaiz Oct 25, 2026
fe1a8a8
docs: record offline 0086 boot diagnosis
zaidanfaiz Oct 25, 2026
6b16b70
docs: record 20H392 shared cache mapping evidence
zaidanfaiz Oct 25, 2026
af0eff1
docs: pinpoint 0086 init memory test boot gate
zaidanfaiz Oct 25, 2026
79646b1
docs: clarify init filesystem self-test results
zaidanfaiz Oct 25, 2026
2acbac5
docs: compare successful and stalled 0086 baselines
zaidanfaiz Oct 25, 2026
5797dcd
docs: prepare 0086 pid 1 sampler boot path
zaidanfaiz Oct 25, 2026
c2cc3df
docs: audit HackiOS repos and their relationship to ios-sweet
zaidanfaiz Oct 25, 2026
cc67eb9
build: add WSL2 image and kernel validation pipeline
zaidanfaiz Oct 25, 2026
25cc69f
build: add Windows QEMU boot and log collection scripts
zaidanfaiz Oct 25, 2026
99437f5
ci: add HackiOS build/validation workflow and ignore rules
zaidanfaiz Oct 25, 2026
166ae67
ci: trigger build-hackios-xnu on dev branch and PRs
zaidanfaiz Oct 25, 2026
f4c340c
kernel: port HackiOS ramfs (opt-in via sweet_ramfs=1)
zaidanfaiz Oct 25, 2026
bf669cd
kernel: compile ramfs standard so it is actually built
zaidanfaiz Oct 25, 2026
340b04c
kernel: use kprintf in ramfs registration wrapper
zaidanfaiz Oct 25, 2026
294324a
qemu: launch with a graphical window by default (gtk)
zaidanfaiz Oct 26, 2026
82e5f15
docs/tools: migrate display/input audit, port notes and QMP test tooling
zaidanfaiz Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.sh text eol=lf
*.patch text eol=lf
userland/patches/*.patch whitespace=-blank-at-eol,-space-before-tab
104 changes: 104 additions & 0 deletions .github/workflows/build-hackios-xnu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: build-hackios-xnu

on:
workflow_dispatch:
push:
branches: [main, hackios-xnu-integration]
paths:
- "scripts/**"
- ".github/workflows/build-hackios-xnu.yml"
pull_request:
paths:
- "scripts/**"
- ".github/workflows/build-hackios-xnu.yml"

permissions:
contents: read

concurrency:
group: build-hackios-xnu-${{ github.ref }}
cancel-in-progress: true

jobs:
validate:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4

# Safety net: the tree must never carry Apple firmware, iOS images,
# credentials or other non-distributable artifacts into CI.
- name: Provenance and license check
run: |
set -euo pipefail
bad=0
for ext in ipsw dmg img simg; do
found=$(find . -type f -name "*.$ext" -not -path './.git/*' | head -20 || true)
if [ -n "$found" ]; then
echo "::error::non-distributable $ext file found:"; echo "$found"
bad=1
fi
done
for secret in .env .env.* id_rsa credentials.json; do
found=$(find . -type f -name "$secret" -not -path './.git/*' | head -20 || true)
if [ -n "$found" ]; then
echo "::error::secret-like file found: $secret"; bad=1
fi
done
[ "$bad" -eq 0 ] || exit 1
echo "provenance check passed: no Apple firmware, iOS images or secrets"

- name: Install toolchain
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends shellcheck

- name: Shell syntax check
run: |
set -euo pipefail
mapfile -t sh < <(find scripts tools shim userland xnu/patches -type f -name '*.sh' | sort)
fail=0
for f in "${sh[@]}"; do
if ! bash -n "$f"; then echo "::error::bash -n failed: $f"; fail=1; fi
done
[ "$fail" -eq 0 ] || exit 1
echo "checked ${#sh[@]} shell scripts"

- name: Python syntax check
run: |
set -euo pipefail
mapfile -t py < <(find scripts tools -type f -name '*.py' | sort)
for f in "${py[@]}"; do
python3 -X utf8 -m py_compile "$f" || { echo "::error::py_compile failed: $f"; exit 1; }
done
echo "checked ${#py[@]} python files"

- name: Repository validation
run: python3 -X utf8 tools/validate-repo.py --verbose

- name: Static analysis (shellcheck)
run: |
set -euo pipefail
mapfile -t sh < <(find scripts tools shim userland xnu/patches -type f -name '*.sh' | sort)
for f in "${sh[@]}"; do
shellcheck -S warning "$f" || true
done
echo "shellcheck pass complete"

- name: Build reproducible patch/tool artifact
run: |
set -euo pipefail
mkdir -p out-hackios
cp -R xnu/patches out-hackios/patches
cp -R scripts out-hackios/scripts
cp -R userland/patches out-hackios/userland-patches
cp tools/*.py out-hackios/ 2>/dev/null || true
(cd out-hackios && find . -type f -print0 | sort -z | xargs -0 sha256sum > SHA256SUMS)
tar czf hackios-build-artifacts.tgz out-hackios

- uses: actions/upload-artifact@v4
with:
name: hackios-build-artifacts
path: hackios-build-artifacts.tgz
if-no-files-found: error
retention-days: 14
42 changes: 42 additions & 0 deletions .github/workflows/redwood-userland.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: redwood-userland

on:
workflow_dispatch:
push:
branches: [main]
paths:
- "userland/**"
- ".github/workflows/redwood-userland.yml"

permissions:
contents: read

concurrency:
group: redwood-userland-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: macos-14
timeout-minutes: 30
steps:
- uses: actions/checkout@v4

- uses: actions/checkout@v4
with:
repository: oosexgang/hackios-xnu-userland
ref: a79ff0772a3454fd1ef127e181e5b3bce6c9ce18
path: hackios-userland

- name: Apply the 20H392 offset overlay
run: git -C hackios-userland apply "$GITHUB_WORKSPACE/userland/patches/20H392-redwood.patch"

- name: Build the arm64 Redwood libraries
run: bash userland/build-redwood.sh hackios-userland/userland/src out

- uses: actions/upload-artifact@v4
with:
name: redwood-20H392
path: out/
if-no-files-found: error
retention-days: 14
12 changes: 12 additions & 0 deletions .github/workflows/xnu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,18 @@ jobs:
git -C dxb checkout -q FETCH_HEAD
# 12.5-14.3 use the top-level patches dir; ours go next to blacktop's
cp xnu/patches/*.patch xnu/patches/*.sh dxb/patches/
# The upstream helper only warns and continues when a patch fails to apply.
# Make CI fail instead, so a green kernel build proves the patches were used.
python3 - <<'PY'
from pathlib import Path
build = Path("dxb/build.sh")
source = build.read_text()
old = 'warning "Skipping patch ${PATCH} (already upstream, previously applied, or malformed): ${APPLY_CHECK}"'
new = 'case "${PATCH##*/}" in [0-9][0-9][0-9][0-9]-*) printf "Required XNU patch failed to apply: %s\\n%s\\n" "$PATCH" "$APPLY_CHECK" >&2; exit 1;; *) warning "Skipping helper patch ${PATCH}: ${APPLY_CHECK}";; esac'
if source.count(old) != 1:
raise SystemExit("Could not install strict patch-application check")
build.write_text(source.replace(old, new))
PY
# libfirehose_kernel is built arm64e-only; the SWEET kernel is plain arm64
sed -i '' 's/ARCHS="x86_64 arm64e" VALID_ARCHS="x86_64 arm64e"/ARCHS="x86_64 arm64e arm64" VALID_ARCHS="x86_64 arm64e arm64"/' dxb/build.sh
grep -c 'VALID_ARCHS="x86_64 arm64e arm64"' dxb/build.sh
Expand Down
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,21 @@
backup/
dtb/
recovery/
# Apple restore packages and filesystem components
*.ipsw
*.dmg
# third-party/Apple sources fetched for reading
research/
shim/out/
xnu/out/
xnu/out-*/
__pycache__/
# build output: disk images, local logs, caches and secrets must never be committed
output/
logs/
*.img
*.simg
*.log
.cache/
.env
.env.*
Loading