OnyxZygisk v1.0.5-368 — Critical regression fix
Fixed
- Zygote crash on every app launch (v1.0.5-362–364): the memfd-based library loading left a
/memfd:libzygisk.sofile descriptor open inside zygote. Android's fd allowlist check (FileDescriptorTable::CreateinForkCommon) rejected it on everyfork(), triggering aJNI FatalErrorabort. This affected all devices — APatch, KernelSU, and Magisk alike. (#45) - KernelSU late-load injection failure: opening
/proc/<tracer>/fd/<n>from inside zygote requiresptrace_may_access()and SELinux approval, which fails on some device/policy combinations. (#41) - Crash-on-injection-failure (retained from v1.0.5-362): if
dlopenfailed during injection, the target process was left at an invalid instruction pointer (the hijack trap address) instead of its real entry point. The injector now restores the entry point immediately after register backup, so any failure path safely resumes the target. - Misleading errno in trace logs (retained from v1.0.5-362):
trace_zygote()reported stale errno values when distinguishing PTRACE_SEIZE failure from post-seize injection failure. Now uses an explicit out-parameter.
Added
- Diagnostic probe on dlopen failure: on injection failure, the injector now runs a remote
access(R_OK)check to distinguish "library file not visible to the target process" from "linker namespace rejection". This will help diagnose remaining late-load issues on certain KernelSU configurations.
Technical details
The memfd injection approach (introduced in v1.0.5-362) has been fully reverted. Path-based dlopen is restored. The three sub-fixes from v1.0.5-362 that did not cause regressions (entry-point restoration, abort_injection handler, seize_syscall_failed out-param) are retained.
Also includes: module description no longer false-flags root detectors as Magisk, shell script cleanup, and a fully overhauled README (all languages) with a link to the Telegram channel.
Install
Flash via KernelSU / APatch / Magisk manager.
Closes #45