三個 NeoZygisk 實作對比分析
本文對比三個基於 ptrace 實現的 Zygisk 注入模組。所有專案均為 GitHub 公開倉庫,包含上游主分支、功能增強分支與實驗性重構分支。
基本信息
| 專案 | JingMatrix/NeoZygisk | HSSkyBoy/NyaZygisk | maxsteeel/NeoZygisk-fork |
|---|---|---|---|
| 來源 | Fork 自 Zygisk-Next | 衍生自 JingMatrix | Fork 自 HSSkyBoy |
| 版本 | v2.3 | 改名為 NyaZygisk, v2.3 | v2.4-460 |
| 主要語言 | C++ 74.2%, Rust 19.6% | C++ 75.7%, Rust 18.5% | 94.1% C++, 0% Rust |
| 目標 | 穩定版本 | 功能增強 | 激進優化 |
| DenyList 特性 | 直接卸載 Zygote 掛載點 + 命名空間 (Namespace) 切換 | 承襲上游並整合弱 Bootloader 隱藏與 ProcessFlags 共享快取 | 採用 ReZygisk 同款自訂 Linker、純 C++ 背景守護程序 (Daemon) |
架構差異
JingMatrix (基礎上游)
- • Daemon: Rust 實作
- • Loader/Injector: C++ 實作
- • 初始化: 使用
TMP_PATH環境變量程式化設置臨時路徑 - • ProcessFlags: 純 IPC 機制,無緩存設計,優先保證數據一致性與穩定性
- • 風格: 標準 Rust STL 規範實現,注重可讀性和長期穩定性
Enhanced
NyaZygisk (功能增強)
- • Daemon & Loader: 完整繼承上游 Rust/C++ 架構,保證 100% API 兼容性
- • 緩存優化: 新增 Shared Memory 共享內存緩存機制,基於 memfd 創建共享內存區並完成 mmap 映射,利用哈希表實現 UID->flags 映射緩存
- • 弱 BL 隱藏: PLT hook 攔截
unshare、property_get,優先在 Zygote 階段卸載 root 掛載點。 - • 屬性欺騙: 啟動時自動讀取
spoof.prop,覆寫ro.boot.*等關鍵系統屬性以免被指紋化。
maxsteeel (實驗重構)
- • Daemon: 完全重構為純 C++ 實現,移除所有 Rust 依賴。
- • 初始化: 廢棄
TMP_PATH環境變量方案,改為硬編碼路徑實現,簡化初始化流程 - • 激進優化: 完全移除 C++ STL 依賴,替換為自定義輕量級數據結構,消除額外開銷
- • 內存與解析: 重構 ELF 加載與解析邏輯,修復上游潛在內存洩漏問題
- • 權限修復: 統一設置 memfd 權限為 0555 避免權限異常。
關鍵程式碼差異示例
zygiskd.rs 初始化差異
JingMatrix
static TMP_PATH: OnceLock<String> = OnceLock::new();
// 無 shared memory
HSSkyBoy
static TMP_PATH: OnceLock<String> = OnceLock::new();
static SHARED_MEMORY: OnceLock<SharedShm> = OnceLock::new();
fn initialize_globals() -> Result<()> {
// ... TMP_PATH 初始化
initialize_shared_memory()?; // 新增
Ok(())
}
* 註: maxsteeel 分支已將 Daemon 改為純 C++,無 zygiskd.rs。
總結與推薦
NeoZygisk
優點: 社群活躍度高、程式碼規範、極為穩定。
缺點: 純 IPC 通訊在高頻查詢時有額外開銷,且兩者均依賴 Rust 工具鏈。
👉 推薦: 一般使用者、生產環境、穩定性優先。
NyaZygisk
優點: 性能優化顯著,保留 Rust 的型別安全特性。
缺點: 引入了共享內存與屬性欺騙等新特性,架構更複雜。
👉 推薦: 一般使用者、生產環境、高效能優先。
NeoZygisk-Fork
優點: 極致效能、無 Rust 依賴、體積最精簡。
缺點: 程式碼可讀性較低,維護難度高,社群支援少。
👉 推薦: 極致性能追求者、開發研究。
如果您追求「穩定好用」,選 NeoZygisk
如果您需要「隱藏性與性能平衡」,選 NyaZygisk
如果您有「極致精簡癖」,可以嘗試 NeoZygisk-Fork
由 NKBe 撰寫,Gemini 3.1 Pro 設計與編碼