Releases: JingMatrix/NeoZygisk
NeoZygisk v2.3
🚀 v2.3 - Robustness & Improved Root Support 🚀
This release focuses on improving stability for older architectures, ensuring compatibility with the latest KernelSU interfaces.
🛠 KernelSU & Root Integration
- KernelSU Supercall Support: Implemented the new
ioctl-based supercall interface for KernelSU (v20000+). This replaces the deprecatedprctlmethod, ensuring compatibility with the latest KernelSU versions. - Relaxed Version Checks: Version limits for KernelSU have been relaxed to support community variants, with warnings now issued in logs instead of strict enforcement.
📱 Android 12 & 32-bit Compatibility
- Direct FD Passing: Migrated mount namespace transfers to use Unix domain sockets (
SCM_RIGHTS). This resolves "Permission denied" errors (Errno 13) encountered on certain Android 12 (arm32) devices when accessing namespace paths via/proc. - Ptrace Fallback Mechanism: Introduced a fallback to
PTRACE_ATTACHfor kernels wherePTRACE_SEIZEfails with an I/O error. This includes robust signal handling to ignore spurious "noise" signals during the injection process. - Legacy Register Support: Added support for
PTRACE_GETREGSandPTRACE_SETREGSfor 32-bit ARM devices that do not support modern regset interfaces. - Path Correction: Fixed the executable path for the 32-bit Zygote to correctly point to
/system/bin/app_process32.
🐛 Bug Fixes & Internal Improvements
- Socket Communication Fix: Resolved a critical buffer overwrite bug in
recv_fdswhere control message validation was failing due to dummy data corruption. - Improved Fossil Detection: Enhanced the detection of suspicious "zygote fossils" by monitoring loop device mounts, improving the stealth and cleanliness of the environment.
- FD Sealing: The daemon now gracefully ignores errors when adding seals to module file descriptors, improving compatibility with older or custom kernels that lack full sealing support.
- Protocol Synchronization: Added status byte checks to the communication protocol to prevent stream desynchronization during namespace transfers.
NeoZygisk v2.2
🚀 v2.2 - Bug Fixes and Enhanced Compatibility 🚀
This release squashes several bugs introduced in the v2.0 refactoring and streamlines performance.
🐛 Bug Fixes
- LSPosed Compatibility: The
Zygiskdaemon now correctly cleans up all traces of LSPosed mounts. This regression was addressed in the hot-fix release v2.1. - Corrected Mount Logic: Overhauled the logic for determining an application's mount namespace. This fixes a critical bug where system apps installed as modules (e.g., Basic Call Recorder) would fail to launch.
💥 Breaking Change
- Dropping 32-bit Support on 64-bit Devices 🚮: To simplify the code and improve stability, NeoZygisk will no longer inject into 32-bit-only applications running on 64-bit devices. This change helps resolve compatibility issues on Android 10 and reflects the rarity of modern 32-bit-only apps.
NeoZygisk v2.1
This is a hot-fix release version to address an unnoticed regression introduced in the refactoring of NeoZygisk v2.0.
The changelog of this release is exactly the same as NeoZygisk v2.0, for which we skip repeating.
NeoZyisk v2.0
🚀 v2.0 - Advanced Stealth & Clarity 🚀
This is a complete rewrite, focused on elegant evasion techniques and a more maintainable, clear architecture!
🥷 Advanced Evasion Techniques
- 🛡️
atexitDetection Neutralized: Actively resets the globalatexithandler array, erasing all module fingerprints. - 🧹 Zygote Stack Cleaning: Wipes root mount fossils from the Zygote stack to restore a pristine, non-root state.
- 👻 Direct Unmounting: Aggressively unmounts traces from within Zygote before applications can inspect them.
- 🧼 Efficient Linker Cleaning: Elegantly removes all library traces from memory using the
soinfo_unloadfunction. - 🧠 Smarter Namespace Logic: Refines mount logic to hide traces without creating new, detectable side-effects.
💡 For Module Developers:
You no longer need to handle atexit evasion. NeoZygisk now completely neutralizes this detection vector for all loaded modules automatically! ✨
🔧 Core Overhaul & Clarity
- 🏗️ Total Rewrite: Re-engineered the
Zygiskdaemon andptracemonitor for maximum stability and clarity. - ✨ Modernized Internals: Updated all core utilities for better performance, readability, and documentation.
NeoZyisk v1.2
🐛 Bug Fixes & Improvements 🛠️
This is a hotfix release to address a critical bug introduced by a pre-release version of NDK (r29).
This bug caused the munmap call in libzygisk.so to fail, leaving behind clear traces of NeoZygisk's injection.
In addition to squashing that pesky bug, we've packed in a few other enhancements:
- 🚀 Added support for KernelSU Next! You can now use NeoZygisk with
com.rifsxd.ksunext. - 🛡️ Patched detection points in LSPlt. We've addressed some recently discovered detection methods.
- 🔧 Fixed a kernel exploit. A detection point related to a
ptrace_messagebug in Linux kernels prior to v6.1 has been resolved. - 💥 Corrected a Zygote crash. We've fixed an issue where module overlays could cause Zygote to crash.
NeoZygisk v1.1
Hello, everyone, this is the first stable version of NeoZygisk 😉 !
A few months of usage on my Android 16 device demonstrates that, NeoZygisk works stably and functions exactly as claimed in the project README.
Moreover, support for GrapheneOS is added.