NativeTest(牛头人)· 检测点与解决方案(合并版)
NativeTest(牛头人)· 检测点与解决方案(合并版)
⚠️ 阅读前必读: 本文涉及 Root 隐藏、检测绕过、系统属性修改等高风险操作,请先阅读并同意 《操作免责协议》 后再继续阅读。
合并来源:
- 指南1:基础词条列表(作者 @dk 骚蛋 提供文案)
- 指南2:基于 SO 逆向分析详细版(”扒拉了一整天 IDA”)
- 指南3:NativeTest 30(牛头人 30)结构化编号版
版本关系: 指南1 为早期基础版(含 Conventional Tests(4) 等旧条目);指南3 为最新结构化版(42 条,含 NativeTest 30 新增的 Futile Hide 系列);指南2 为最详细的逆向原理版。三者均收录于同名的 指南1/2/3.txt 中,与《春秋检测》合并版同源。
本文档以指南3为主干,完整并入指南2的检测原理与解法、指南1的补充说明,并保留指南2独有的附录内容。
📖 前言
这份文档是什么?
NativeTest(俗称”牛头人”) 是一款高级 Root 环境检测应用(检测框架),其检测原理经作者通过 SO 层逆向分析得出,检测结果以十六进制位运算叠加的方式汇报。本合并版整合网络流传的三份《牛头人词条》,作为排查检测项的一站式速查手册。
使用前须知:
- 检测结果是十六进制、位运算叠加显示的(详见下方数值说明),遇到组合数值需对照拆解。
- Conventional Tests / Evil Service / Futile Hide 三项的数值含义分别独立,不要混用。
- Property Modified 的数值是”动的数量叠加制”,后面数字无实际含义。
- 部分词条(带
?)含义/解法未知,需自行验证。 - 检测原理主要来自指南2的 SO 逆向分析,带
🎯标记。
使用方式:
- 对照 Native Test 报出的条目名称(如
Conventional Tests (8)、Futile Hide (04)),在正文中搜索对应名称; - 优先参考标注 🎯 的检测原理,再按解决方法处理;
- 附录 B 的”一键过检测”脚本毒性自测,慎用。
🔢 数值说明(指南2 · 十六进制位运算)
检测结果是十六进制显示的,采用位运算叠加:
1 | (3) = 1 + 2 |
- Conventional Tests / Evil Service / Futile Hide:位叠加制,遇到组合数值请对照基础位拆解。
- Property Modified:动的数量叠加制,后面是什么无需理会。
📋 全部检测点(按指南3编号,共 43 条)
注:指南3 原文存在两处”32”(Partition Check Fail 与 Property Modified 01),本文档已按顺序重新编号;另补入指南1/2 中的 Conventional Tests (4)(第 5 条)。
1. Normal
- 含义: 本地测试通过!
- 解决方法: 无需处理。
2. Abnormal Environment
- 含义: 已找到 Magisk / KSU / APatch,或找到 LSPosed。
- 指南3附注: 目前狐狸(fox?)没办法过这一点。
- 🎯 检测原理(指南2): 触发条件极其苛刻,碰了任意一条就报:
- Mount ID 伪造(statx 与 mountinfo 不一致)
- 设备号断层(挂载项被隐藏导致不连续)
- 挂载组缺失(Namespace 隔离异常)
- APatch 特征(缺页异常耗时)
- KernelSU 特征(系统调用延迟)
- 解决方法:
- 卸载不必要的优化 / 美化模块,减少对系统底层的干扰。
- 附 Conventional Tests (1):弱 BL,用 hide 或 Shamiko 可以解决。
- CT(1) 补充(指南2): 原理为读取
ro.boot.flash.locked,不为"1"即判定弱 BL;解决可用 Play Integrity Fix 模块(新版已自带修复),或手动将属性值设为"1"。
3. Conventional Tests (2)
- 含义: KSU 关闭卸载模块导致或其他。
- 🎯 检测原理(指南2): 扫描
/proc/self/mountinfo,发现特征字符串:/adb/modules、zygisk、debug_ramdisk、KSU、magisk、APatch。 - 解决方法(指南2):
- Hybrid Mount 用户: 进模块设置把挂载源名改成随机英文。
- 排查模块: 查到 Native Test 的 PID,去
/proc/[pid]/mountinfo里搜关键词,看见是哪个模块报了就卸哪个。
4. Conventional Tests (3)
- 含义: KSU 没安装 Shamiko 导致或其他。
- 解决方法: 安装 Shamiko。
5. Conventional Tests (4)
指南3 未列出此项,由指南1/2 补充。
- 含义(指南1): 普遍在安卓 15 出现,原因未知。
- 🎯 检测原理(指南2): 发现
su可执行文件,或检测到 Root Shell 进程。 - 解决方法(指南2):
- Magisk: 推荐 Zygisk Next 的还原挂载,其次 Shamiko。
- KernelSU: 开启默认 Unmount(或对应用开启排除修改)。
- APatch: 同上,没默认还原的就找找自动列表模块。
- 终端: 关掉 MT 管理器的终端模拟器或 Termux。
6. Conventional Tests (6)
- 含义: 已获取到 Root 权限。
- 解决方法: 不要给 Native Test Root 权限。
7. Conventional Tests (8)
- 含义: 已解锁 Bootloader(密钥已解锁刷 Tricky Store,或密钥已吊销)。
- 🎯 检测原理(指南2): 密钥验证异常,通常是你的密钥没有配置好。
- 解决方法(指南2):
- 单独报 8 通常问题不大,只是网络或设备自身问题。
- 装 Tricky Store 或 TEESimulator 即可(推荐前者)。
- 如果使用 Tricky Store 仍报错,尝试更新
keybox.xml,你的密钥可能已被吊销。
8. Conventional Tests (9)
- 含义: 已解锁 Bootloader。检查:
ro.boot.flash.locked = 1?ro.boot.verifiedbootstate = green?ro.secureboot.lockstate = locked?
- 解决方法: 参考第 7 条(CT-8)处理密钥 / Bootloader 状态。
9. Conventional Tests (10)
- 含义: 第三方 ROM。
- 🎯 检测原理(指南2): 检测到第三方 ROM(LineageOS / AOSPA 等)的 SELinux 标签,或
libandroid_net.so中的符号特征。 - 解决方法(指南2):
- 如果有 SUSFS,尝试开启 Hide Custom ROM 功能。
- 或碰碰运气找找隐藏第三方 ROM 的教程。
10. Conventional Tests (18)
- 含义: 已解锁 Bootloader(类原生)+ 第三方 ROM。
- 解决方法: 参考 CT-8 / CT-10 处理。
11. Conventional Tests (1a)
- 含义:
?(未知) - 解决方法: ⚠️ 未知。
12. Conventional Tests (1e)
- 含义: 已解锁 Bootloader + 第三方 ROM + 已找到 Magisk。
- 解决方法: 参考 CT-8 / CT-10 / Abnormal Environment 处理。
13. Conventional Tests (a)
- 含义: 检测到 Bootloader Spoofer XP 模块欺骗。
- 解决方法: 卸载 Bootloader Spoofer 类 XP 模块。
14. Conventional Tests (e)
- 含义(指南3): 已解锁 Bootloader + MIUI 12 + 已找到 Magisk + RVX 模块?
- 含义(指南1): 已解锁 Bootloader + RVX 模块?
- 解决方法: 排查 RVX / 改机类模块。
15. Conventional Tests (f)
- 含义: 已解锁 Bootloader + MIUI 12 + 已找到 Magisk。
- 解决方法: 参考 CT-8 / Abnormal Environment 处理。
16. Evil Service (1)
- 含义: 墓碑相关或注入问题,或隐藏应用列表版本太低。
- 🎯 检测原理(指南2): 基于 Binder 事务耗时侧信道攻击:
- (1) 回执数据含 LSPosed / Ruru 指纹 → 更新 LSPosed。
17. Evil Service (2)
- 含义: LSPosed 已找到或相关问题。
- 🎯 检测原理(指南2): Binder 侧信道——(2) LSPosed 拦截延迟 > 1.4。
- 解决方法: 更新 LSPosed 或无视(性能差机器易误报)。
18. Evil Service (3)
- 含义: LSPosed 已找到或相关问题。
- 🎯 检测原理(指南2): Binder 侧信道——(3) = 1 + 2,即回执指纹 + 拦截延迟同时命中。
- 解决方法: 更新 LSPosed。
19. Evil Service (4)
- 含义: Shamiko 找到了?
- 🎯 检测原理(指南2): Binder 侧信道——(4) Sui 环境延迟 > 1.7。
- 解决方法(指南2吐槽): 你都有 root 了还用个勾子 Shizuku 呢——卸载 Sui / Shizuku。
20. Evil Service (6)
- 含义: 找到注入服务?
- 🎯 检测原理(指南2): Binder 侧信道——(6) = (2) + (4) = LSPosed 拦截延迟 + Sui 环境延迟。
- 解决方法: 更新 LSPosed,卸载 Sui / Shizuku。
备注:指南2 另有 (8) = Shamiko / SuList 延迟 > 1.4(极少见,建议关闭 SuList),与本项 (6) 无关。
21. Found Hook
- 含义: 找到 LSPosed 模块 hook。
- 🎯 检测原理(指南2 · 32 特色): 检测
persist.zygote.app_data_isolation属性是否存在且非空。 - 解决方法: 清空或删除该属性;排查 LSPosed 模块 hook。
22. Found Injection(包括 04)
- 含义: 已找到 Zygisk 或 ZygiskNext。
- 解决方法: 更新 Zygisk Next 1.1.0+。
23. Futile Hide (01)
- 含义: 检测到 Zygisk Next 已开启遵守排除列表。
- 解决方法: 在 Zygisk Next 中调整排除列表策略(如改为”仅还原挂载”)。
24. Futile Hide (02)
- 含义: Zygisk-Assistant 在 Kitsune(检查隐藏模块)。
- 解决方法: 排查 Zygisk-Assistant / Kitsune 相关配置。
25. Futile Hide (04)
- 含义: 找到内核模块 Cherish Peekaboo KPM 或别的模块导致。
- 解决方法: 使用
cherish_peekaboo_1.5KPM 可以过。 - 🎯 检测原理(指南2 位对照): Futile Hide (4) =
framework.jar的 Inode 不一致 → 系统分区被篡改。
26. Futile Hide (08)
- 含义: KSU Umount / zygisk-detach / 狐狸有些正常模块会爆 08(兼容差)/ 存储空间隔离模块。
- 解决方法: 排查上述模块;挂载源含敏感词时同 CT(2) 处理。
27. Futile Hide (09)
- 含义:
?(未知) - 解决方法: ⚠️ 未知。
28. Futile Hide (10)
- 含义(指南3): 找到 LSP 特征文件。
- 含义(指南1): LSP 的 dex2oat 挂载被检测出。
- 🎯 检测原理(指南2 位对照): Futile Hide (10) = ODEX 编译参数异常 → 尝试重新编译 dex2oat。
29. Futile Hide (14)
- 含义: 找到 LSP 特征文件 + 找到内核模块。
- 🎯 检测原理(指南2 位对照): Futile Hide (14) = 4 + 10 = framework.jar Inode 异常 + ODEX 编译参数异常。
- 解决方法: 参考 Futile Hide (04) / (10) 处理。
30. Futile Hide (0a)
- 含义: 检测到 Magisk 排除列表。
- 解决方法: 关闭 / 调整 Magisk 排除列表配置。
31. Futile Hide (0b)
- 含义:
?(未知) - 解决方法: ⚠️ 未知。
32. Inconsistent Mount
- 含义: 发现模块修改 / 系统(检查模块)。
- 🎯 检测原理(指南2): 检测到 OverlayFS 特征(魔术字
0x794C7630),但 Mountinfo 里却被抹除了记录——典型的”掩耳盗铃”。 - 解决方法: 更新元模块 / 更新 Root 方案。
33. Partition Check Fail
- 含义: Boot 分区效验失败!
ro.boot.vbmeta.digest无效。 - 解决方法: 检查 Boot 分区完整性;参考 Partition Modified(第 42 条)。
34. Property Modified (01)
- 含义: 系统属性被修改,例如分区效验。
- 🎯 检测原理(指南2): 系统属性的内存布局一致性校验失败(可能是属性序列号异常或内存被清零)。
- 解决方法(指南2): 卸载基于内存修改的属性隐藏模块,检查改机型 / 序列号模块。
35. Property Modified (07)
- 含义: 修改了序列号?
- 解决方法: 检查改序列号模块 / 还原序列号。
36. Property Modified (08)
- 含义: 系统属性被修改,例如分区效验。
- 解决方法: 参考 Property Modified (01) 处理。
37. Property Modified (10)
- 含义: 已执行
resetprop --delete命令(检查模块或官改),例如改机型。 - 解决方法: 排查改机型 / 使用 resetprop 的模块。
38. Property Modified (30)
- 含义: 模块导致或官改。
- 解决方法: 排查修改系统属性的模块 / 官方修改。
39. Permission Loophole
- 含义: 策略设置不正确,建议使用较新版本的 ROOT 管理器,或潘多拉之类的调度内核,或宽容模式。
- 🎯 检测原理(指南2): SELinux 处于宽容模式。
- 解决方法(指南2): 保持 SELinux 为严格模式。
40. Something wrong (999)
- 含义: 内部应用程序错误。
- 解决方法: 关闭隐藏应用列表的 Vold data 隔离。
41. Tampered Attestation Key
- 含义: keybox 失效或检查到 key 修改(密钥被篡改)。
- 解决方法: 更新 Tricky Store,或重新做一遍你的隐藏配置。
42. Partition Modified
- 含义: 禁用 AVB 校验导致(重设哈希值可以解决)。
- 🎯 检测原理(指南2): VBMeta 哈希校验失败,系统分区完整性受损。
- 解决方法:
- 更新 Tricky Store(新版已无需操作)。
- 手动修复: 从密钥认证信息里复制
verifiedBootHash,在/data/adb/下创建boot_hash文件粘贴进去。
43. Suspicious Surrounding
- 含义: 原因未知,普遍在 APatch Next 开了排除修改出现。
- 解决方法: 排查 APatch Next 排除列表配置。
📌 附录 A:Key Attestation 专区(指南2)
注:以下项目通常在报告下方单独显示。
AOSP Attestation Key
- 含义: 使用了 AOSP 原生公钥(非厂商密钥)。
- 解决方法: 更新
keybox.xml。
Unknown Attestation Key
- 含义: 未知密钥来源。
- 解决方法: 检查
keybox.xml是否损坏或被删除。
Tampered Attestation Key 见正文第 41 条。
📌 附录 B:Found Root Files(32 版搞笑检测)
- 性质: 32 版本添加的搞笑检测。如果检测到只会在有 ct 的情况下显示,然后会和 key 检测的显示打架。
- 原理: 扫描
/data/data/下的黑名单包名。 - 解决方法: 使用 SUSFS 隐藏目录;或使用网上流传的”一键过检测”脚本(毒性自测,慎用)。
存疑的包名列表(共 45 行,原文如此,其中 com.tsng.hidemyapplist 重复出现 3 次):
1 | com.tsng.hidemyapplist |
📌 附录 C:Malicious Hook(指南2)
- 🎯 检测原理: Frida / LSPosed 注入、硬件 / 软件断点、代码段修改、自身 SELinux 标签异常。
- 解决方法:
- LSPosed 作用域别勾选 Native Test。
- 更新 Root 方案。
- 停掉手里的逆向工具。
📌 附录 D:NativeTest 32 特色检测项(指南2)
Found Root(32 特色)
- 🎯 检测原理: 检测
persist.hyperceiler.log.level属性(西米露特征)。 - 解决方法: 删除该属性。
📝 版本演变说明(供溯源)
- 指南1 → 指南3:
- 指南3 新增 Futile Hide 系列(01 / 02 / 04 / 08 / 09 / 10 / 14 / 0a / 0b)与 Evil Service (6)、Partition Check Fail、Property Modified (30) 等条目。
- 指南3 未列出 Conventional Tests (4)(由指南1/2 补充,已并入正文第 5 条)。
- 指南2 特色(已并入正文):
- 位运算数值拆解规则(见前言下方”数值说明”)。
- Evil Service / Futile Hide 的逐位原理(Binder 耗时侧信道、OverlayFS 魔术字、framework.jar Inode 等)。
- Abnormal Environment 五项底层原理。
- 附录 A / B / C / D 四块独有内容。
🔚 结尾
📝 本文档持续更新中。牛头人(NativeTest)新版本可能增删检测项,欢迎反馈。
指南1 原帖声明:只是推广一下,原作(@dk 骚蛋)已标注,不要喷我搬运了。
指南2 原帖声明:基于 SO 逆向分析,部分内容问过 AI 并优化语法,仅供参考。
#HyperOS# #Magisk# #牛头人# #NativeTest# #隐藏Root#