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 层逆向分析得出,检测结果以十六进制位运算叠加的方式汇报。本合并版整合网络流传的三份《牛头人词条》,作为排查检测项的一站式速查手册。

使用前须知:

  1. 检测结果是十六进制、位运算叠加显示的(详见下方数值说明),遇到组合数值需对照拆解。
  2. Conventional Tests / Evil Service / Futile Hide 三项的数值含义分别独立,不要混用。
  3. Property Modified 的数值是”动的数量叠加制”,后面数字无实际含义。
  4. 部分词条(带 ?)含义/解法未知,需自行验证。
  5. 检测原理主要来自指南2的 SO 逆向分析,带 🎯 标记。

使用方式:

  • 对照 Native Test 报出的条目名称(如 Conventional Tests (8)Futile Hide (04)),在正文中搜索对应名称;
  • 优先参考标注 🎯 的检测原理,再按解决方法处理;
  • 附录 B 的”一键过检测”脚本毒性自测,慎用。

🔢 数值说明(指南2 · 十六进制位运算)

检测结果是十六进制显示的,采用位运算叠加

1
2
3
4
5
(3)  = 1 + 2
(c) = 4 + 8
(d) = 1 + 4 + 8
(14) = 4 + 10
以此类推...
  • 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/moduleszygiskdebug_ramdiskKSUmagiskAPatch
  • 解决方法(指南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 StoreTEESimulator 即可(推荐前者)。
    • 如果使用 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.5 KPM 可以过。
  • 🎯 检测原理(指南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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
com.tsng.hidemyapplist
com.linux.skroot.next
com.omarea.vtools
io.github.huskydg.magisk
com.tsng.dyhhvf
com.android.xwkeyboard
com.topmiaohan.superlist
com.xiaowei.assistant
com.xiaowei.aoamanager
io.github.vvb2060.magisk
org.lsposed.lspatch
moe.shizuku.redirectstorage
org.lsposed.npatch
org.lsposed.opatch
org.lsposed.zpatch
com.sk.spatch
xzr.La.systemtoolbox
eu.chainfire.supersu
com.github.capntrips.kernelflasher
ru.eisaev.supersuinstaller
io.virtualapp.sandvxposed64
com.byyoung.setting
io.virtualapp.sandvxposed
com.linux.permissionmanager
com.linux.sutest
me.bmax.apatch
me.garfieldhan.apatch.next
me.weishu.kernelsu
com.google.android.hmal
com.topjohnwu.magisk
shirkneko.zako.mksu
com.rifsxd.ksunext
com.qihoo.appstore
com.tsng.pzyhrx.hma
com.bug.xposed
com.wind.cotter
com.tsng.hidemyapplist
shirkneko.zako.sukisu
com.tsng.hidemyapplist
catch_.me_.if_.you_.can_
com.topmiaohan.hidebllist
Han.GJZS
com.fkzhang.wechatxposed
A.jie.recordscreen
com.silverlabtm.app.deviceidchanbin.mt.plus.canary

📌 附录 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#