2026-09-01 (target detection diagnosis: eboot.bin POSIX root uid 0 & empty comm filtering) (D293)
Diagnosed why the running retail game title was skipped in hardware capture Run #8:
- Root Cause Analysis
(
reports/hardware/injector-klog.txt):- The diagnostic census logged running processes with
comm == "eboot.bin"(pid=213,pid=212,pid=208,pid=191,pid=178, etc.). - However, every single
eboot.binwas logged as:skip system proc: eboot.bin pid=... uid=0 - In D291,
if (is_system_daemon(comm) || uid <= 1)was introduced under the false assumption that retail games run with non-root POSIX UIDs (uid > 1). On FreeBSD/Prospero, sandboxed container jails execute applications under container rootcr_uid == 0. Filtering outuid <= 1caused the scanner to discard every retail game process on the system! - Furthermore, unnamed daemons (like PID 204 in previous runs) had
comm == ""(empty), whichis_system_daemon()previously treated as non-system.
- The diagnostic census logged running processes with
- Remediation (
src/injector/target.c):- Removed
uid <= 1Filter: Restored full evaluation of all userland processes regardless of POSIXcr_uid. - Filtered Empty / Unnamed Daemons: In
is_system_daemon(comm), empty or NULLcommstrings (comm[0] == '\0') are now treated as system daemons and skipped immediately. Retail games are strictly required to have an executable name (eboot.bin). - Prioritize Newest
eboot.bin: Inallproctraversal (ordered newest-first from list head), candidateeboot.binprocesses are scanned forPPSA.../CUSA...Title IDs; if un-named instruct proc, the newest launchedeboot.binPID is selected. - Prison Pointer Telemetry: Added logging of
cr_prison(ucred + 0x30) for all candidate processes to verify jail structures.
- Removed
Verified: make payload injector HARDWARE=1
(9,394,336 bytes) compiles 100% clean with zero warnings
and zero errors.