问题描述

我给手机刷过两次第三方ROM

  • 第一次使用了 Xiaomi Mi 11 Lite 5G,刷入的是 LineageOS 21
  • 第二次使用了 OnePlus Ace 3 Pro,刷入的是 Crdroid 11.7 两次刷机后均无法使用美团公司下的两个App,分别是美团和大众点评,无论设备是否已经Root。咨询客服也并未告知设备风险原因。

手机环境

  • Magisk Alpha v28102
  • Magisk模块:
    • Shamiko v1.2.5
    • Zygisk Next v1.2.9
    • Zygisk Lsposed v1.10.1
    • Tricky Store v1.3.0
    • TrickyAddonModule v4.0
    • Play Integrity Fork v13
  • Lsposed模块:
    • HideMyApplist v3.5

上述模块安装并配置好后,在两个设备上均通过了一些检测APP的检测,具体如下:

  • 小米手机通过了 Momo、ApplistDetector、NativeDetector
  • 一加手机通过了 ApplistDetector、NativeDetector(安卓15上Momo暂时无法使用)

其中,NativeDetector在两台设备上均检测出来了自定义 ROM LineageOS,而且检测出的 lineageOS 条目很多。而一加手机上还检测出来了 Play Integrity Fix。

而在实际使用中,除了美团和大众点评,其他App包括支付宝、微信、淘宝、银行等均能正常使用,而且敏感操作如人脸识别、指纹识别等也均能正常使用。

解决方案总结

修改一些带有 lineage 字样的系统属性,美团和大众点评均能正常使用。 针对我的手机环境,修改以下系统属性即可:

ro.build.display.id=ColorOS15.A.01
ro.build.flavor=oneplus_ace3pro-user

用 MagiskHidePropsConf 模块或者自己写 Magisk 模块,修改这两个属性。

重启手机,发现大众点评和美团都可以正常搜索以及查看自己的订单了,没有像之前那样提示网络异常。

该方法截至目前2025.09是有效的,后续如果加了其他检测手段,可能还需要用其他方式进行针对性修改。

解决方案探索过程

鉴于在没有 Root 时美团和大众点评均也不能正常使用,因此怀疑是检测了第三方 ROM。虽然也有可能是检测出了 Bootloader 解锁,因为没 Root 时 BootLoader 解锁没法隐藏,但是考虑到当前在网上几乎没有人反馈在使用了较完善的隐藏方案后还无法使用美团和大众点评,且刷第三方 ROM 的用户群体在整个刷机用户中占比并不高,因此怀疑是检测了第三方 ROM。 NativeDetector 从很多方面都检测出来了非原厂 ROM,全部防住不太现实,所以最好是针对美团和大众点评单独做一些针对性的隐藏。

方案一:网络抓包

按照一般思路来说,检测环境这种操作一般不会明文传输,因此抓包成功的概率不大。不过还是尝试了一下用 Reqable 抓包,不过确实没有抓到任何有用的信息。

方案二:Hook一些关键API

检测环境一般会去检查某些文件是否存在、某些系统属性是否被修改等,因此可以尝试 Hook 一些关键 API 来隐藏这些信息。

一开始想用 Frida 来做,但是在我的手机上 Frida-Server 一运行就直接软重启卡 Logo 了,可能根我的手机不兼容,Github Issue 里的方式尝试过也没有用。所以只能用 Lsposed 来做了。

使用的是这篇文章里的工具:安卓环境检查调试

作用域勾选大众点评后,运行大众点评,执行下面操作:

  1. 点击查看账单,发现什么也没有
  2. 搜索任意食物,也是什么都没有,提示网络异常 说明目前已被检测出异常环境。

打开 Lsposed 日志,导出日志,使用 Python 筛掉无用信息和去重,主要需要筛掉的有:

  • 根据”【EnvLogger】”筛掉无关日志
  • 去掉所有含有”com.dianping.v1”的日志,因为这是 app 在操作自己的文件,不需要关注
  • 去掉 “http.agent”,因为在我的日志中,这个属性是被频繁调用的,只是一些基本设备信息,并不重要:

    【EnvLogger】 [System.getProperty] http.agent = Dalvik/2.1.0 (Linux; U; Android 15; PJX110 Build/BP1A.250505.005)

提取日志的 Python 脚本如下(chatGPT生成):

# 1. 筛选当前模块的日志
def extract_lines_with_keyword(root_dir, keyword, output_dir):
    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.lower().endswith(".txt") or filename.lower().endswith(".log"):
                print(f"正在处理文件: {filename}")
                input_path = os.path.join(dirpath, filename)

                rel_path = os.path.relpath(input_path, root_dir)
                output_path = os.path.join(output_dir, rel_path)

                os.makedirs(os.path.dirname(output_path), exist_ok=True)

                matched_lines = []
                try:
                    with open(input_path, "r", encoding="utf-8", errors="ignore") as infile:
                        for line in infile:
                            if keyword in line:
                                matched_lines.append(line.rstrip("\n"))
                except Exception as e:
                    print(f"读取文件失败 {input_path}: {e}")
                    continue

                # 如果有匹配的行才写文件
                if matched_lines:
                    with open(output_path, "w", encoding="utf-8") as outfile:
                        outfile.write("\n".join(matched_lines))
                    print(f"已写入 {output_path}")

# 2. 去掉不重要的日志
def filter_unimportant_lines(root_dir, keywords, output_dir):
    # 遍历目录
    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.lower().endswith(".txt") or filename.lower().endswith(".log"):
                print(f"正在处理文件: {filename}")
                input_path = os.path.join(dirpath, filename)

                # 计算相对路径,保证目录结构一致
                rel_path = os.path.relpath(input_path, root_dir)
                output_path = os.path.join(output_dir, rel_path)

                # 确保输出目录存在
                os.makedirs(os.path.dirname(output_path), exist_ok=True)

                matched_lines = []
                try:
                    with open(input_path, "r", encoding="utf-8", errors="ignore") as infile:
                        for line in infile:
                            if not any(kw in line for kw in keywords):
                                matched_lines.append(line.rstrip("\n"))
                except Exception as e:
                    print(f"读取文件失败 {input_path}: {e}")
                    continue

                # 如果有匹配的行才写文件
                if matched_lines:
                    with open(output_path, "w", encoding="utf-8") as outfile:
                        outfile.write("\n".join(matched_lines))
                    print(f"已写入 {output_path}")

# 3. 去掉时间等无关信息,提取关键内容并去重
def merge_logs(root_dir, keyword, output_file):
    results = set()

    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.lower().endswith(".txt") or filename.lower().endswith(".log"):
                file_path = os.path.join(dirpath, filename)
                try:
                    with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
                        for line in f:
                            if keyword in line:
                                idx = line.find(keyword)
                                suffix = line[idx + len(keyword):].strip()
                                if suffix:
                                    results.add(suffix)
                except Exception as e:
                    print(f"读取文件失败 {file_path}: {e}")

    with open(output_file, "w", encoding="utf-8") as out:
        for item in sorted(results):
            out.write(item + "\n")

    print(f"提取完成,共 {len(results)} 条唯一结果,已写入 {output_file}")

最终得到300多行日志,主要内容如下:

[File.exists] /./META-INF/services/java.nio.channels.spi.SelectorProvider = false
[File.exists] /apex/com.android.conscrypt/cacerts = true
[File.exists] /apex/com.android.conscrypt/cacerts/04843e0f.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/1e8e7201.0 = true
[File.exists] /apex/com.android.conscrypt/cacerts/1e8e7201.1 = false
[File.exists] /apex/com.android.conscrypt/cacerts/35105088.0 = true
[File.exists] /apex/com.android.conscrypt/cacerts/35105088.1 = false
[File.exists] /apex/com.android.conscrypt/cacerts/4704f486.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/55ddc00d.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/577e0331.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/585a188e.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/5bef71b4.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/69ae572f.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/6ad09055.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/c90bc37d.0 = true
[File.exists] /apex/com.android.conscrypt/cacerts/c90bc37d.1 = false
[File.exists] /apex/com.android.conscrypt/cacerts/d52df039.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/d8659553.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/d9a76989.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/d9b4b8d7.0 = false
[File.exists] /apex/com.android.conscrypt/cacerts/e27f8a17.0 = false
[File.exists] /cache/busybox = false
[File.exists] /cache/magisk = false
[File.exists] /cache/su = false
[File.exists] /data/busybox = false
[File.exists] /data/local/bin/busybox = false
[File.exists] /data/local/bin/magisk = false
[File.exists] /data/local/bin/su = false
[File.exists] /data/local/busybox = false
[File.exists] /data/local/magisk = false
[File.exists] /data/local/su = false
[File.exists] /data/local/xbin/busybox = false
[File.exists] /data/local/xbin/magisk = false
[File.exists] /data/local/xbin/su = false
[File.exists] /data/magisk = false
[File.exists] /data/misc/user/0/cacerts-removed/1e8e7201.0 = false
[File.exists] /data/misc/user/0/cacerts-removed/35105088.0 = false
[File.exists] /data/misc/user/0/cacerts-removed/c90bc37d.0 = false
[File.exists] /data/su = false
[File.exists] /dev/busybox = false
[File.exists] /dev/magisk = false
[File.exists] /dev/su = false
[File.exists] /proc/5225/statm = true
[File.exists] /sbin/busybox = false
[File.exists] /sbin/magisk = false
[File.exists] /sbin/su = false
[File.exists] /su/bin/busybox = false
[File.exists] /su/bin/magisk = false
[File.exists] /su/bin/su = false
[File.exists] /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_min_freq = true
[File.exists] /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq = true
[File.exists] /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_min_freq = true
[File.exists] /system/app/Superuser.apk = false
[File.exists] /system/bin/.ext/busybox = false
[File.exists] /system/bin/.ext/magisk = false
[File.exists] /system/bin/.ext/su = false
[File.exists] /system/bin/busybox = false
[File.exists] /system/bin/failsafe/busybox = false
[File.exists] /system/bin/failsafe/magisk = false
[File.exists] /system/bin/failsafe/su = false
[File.exists] /system/bin/magisk = false
[File.exists] /system/bin/su = false
[File.exists] /system/build.prop = true
[File.exists] /system/etc/security/cacerts/1e8e7201.0 = true
[File.exists] /system/etc/security/cacerts/35105088.0 = true
[File.exists] /system/sbin/busybox = false
[File.exists] /system/sbin/magisk = false
[File.exists] /system/sbin/su = false
[File.exists] /system/sd/xbin/busybox = false
[File.exists] /system/sd/xbin/magisk = false
[File.exists] /system/sd/xbin/su = false
[File.exists] /system/usr/we-need-root/busybox = false
[File.exists] /system/usr/we-need-root/magisk = false
[File.exists] /system/usr/we-need-root/su = false
[File.exists] /system/xbin/busybox = false
[File.exists] /system/xbin/magisk = false
[File.exists] /system/xbin/su = false
[File.exists] /vendor/bin/busybox = false
[File.exists] /vendor/bin/magisk = false
[File.exists] /vendor/bin/su = false
[FileInputStream] /apex/com.android.conscrypt/cacerts/1e8e7201.0
[FileInputStream] /apex/com.android.conscrypt/cacerts/35105088.0
[FileInputStream] /apex/com.android.conscrypt/cacerts/c90bc37d.0
[FileInputStream] /proc/31156/statm
[FileInputStream] /proc/5225/statm
[FileInputStream] /proc/cpuinfo
[FileInputStream] /proc/sys/kernel/random/boot_id
[FileInputStream] /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq
[FileInputStream] /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_min_freq
[FileInputStream] /sys/devices/system/cpu/possible
[FileReader] /proc/cpuinfo
[FileReader] /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_min_freq
[FileReader] /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq
[FileReader] /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_min_freq
[File] new File: /
[File] new File: /apex/com.android.conscrypt/cacerts
[File] new File: /data/anr/traces.txt
[File] new File: /data/local/bin/su
[File] new File: /data/local/su
[File] new File: /data/local/xbin/su
[File] new File: /data/misc/keychain/pubkey_blacklist.txt
[File] new File: /data/misc/keychain/pubkey_sha256_blocklist.txt
[File] new File: /data/misc/keychain/serial_blacklist.txt
[File] new File: /proc/31156/statm
[File] new File: /proc/5225/statm
[File] new File: /proc/cpuinfo
[File] new File: /proc/self/task
[File] new File: /proc/sys/kernel/random/boot_id
[File] new File: /sbin/su
[File] new File: /storage/emulated/0
[File] new File: /sys/devices/system/cpu/
[File] new File: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq
[File] new File: /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_min_freq
[File] new File: /sys/devices/system/cpu/possible
[File] new File: /system/app/Superuser.apk
[File] new File: /system/bin/failsafe/su
[File] new File: /system/bin/su
[File] new File: /system/build.prop
[File] new File: /system/etc/security/cacerts
[File] new File: /system/framework/org.apache.http.legacy.jar
[File] new File: /system/lib64
[File] new File: /system/sd/xbin/su
[File] new File: /system/xbin/su
[File] new File: /system_ext/lib64
[File] new File: /vendor/lib64
[File] new File: parent=/. child=META-INF/services/java.nio.channels.spi.SelectorProvider
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=04843e0f.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=1e8e7201.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=1e8e7201.1
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=35105088.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=35105088.1
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=4704f486.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=55ddc00d.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=577e0331.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=585a188e.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=5bef71b4.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=69ae572f.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=6ad09055.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=c90bc37d.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=c90bc37d.1
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=d52df039.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=d8659553.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=d9a76989.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=d9b4b8d7.0
[File] new File: parent=/apex/com.android.conscrypt/cacerts child=e27f8a17.0
[File] new File: parent=/cache child=busybox
[File] new File: parent=/cache child=magisk
[File] new File: parent=/cache child=su
[File] new File: parent=/data child=busybox
[File] new File: parent=/data child=magisk
[File] new File: parent=/data child=misc
[File] new File: parent=/data child=su
[File] new File: parent=/data/local/ child=busybox
[File] new File: parent=/data/local/ child=magisk
[File] new File: parent=/data/local/ child=su
[File] new File: parent=/data/local/bin/ child=busybox
[File] new File: parent=/data/local/bin/ child=magisk
[File] new File: parent=/data/local/bin/ child=su
[File] new File: parent=/data/local/xbin/ child=busybox
[File] new File: parent=/data/local/xbin/ child=magisk
[File] new File: parent=/data/local/xbin/ child=su
[File] new File: parent=/data/misc child=user
[File] new File: parent=/data/misc/user child=0
[File] new File: parent=/data/misc/user/0 child=cacerts-removed
[File] new File: parent=/data/misc/user/0/cacerts-removed child=1e8e7201.0
[File] new File: parent=/data/misc/user/0/cacerts-removed child=35105088.0
[File] new File: parent=/data/misc/user/0/cacerts-removed child=c90bc37d.0
[File] new File: parent=/dev child=busybox
[File] new File: parent=/dev child=magisk
[File] new File: parent=/dev child=su
[File] new File: parent=/sbin/ child=busybox
[File] new File: parent=/sbin/ child=magisk
[File] new File: parent=/sbin/ child=su
[File] new File: parent=/storage/emulated/0 child=Android
[File] new File: parent=/storage/emulated/0/Android child=data
[File] new File: parent=/su/bin/ child=busybox
[File] new File: parent=/su/bin/ child=magisk
[File] new File: parent=/su/bin/ child=su
[File] new File: parent=/system/bin/ child=busybox
[File] new File: parent=/system/bin/ child=magisk
[File] new File: parent=/system/bin/ child=su
[File] new File: parent=/system/bin/.ext/ child=busybox
[File] new File: parent=/system/bin/.ext/ child=magisk
[File] new File: parent=/system/bin/.ext/ child=su
[File] new File: parent=/system/bin/failsafe/ child=busybox
[File] new File: parent=/system/bin/failsafe/ child=magisk
[File] new File: parent=/system/bin/failsafe/ child=su
[File] new File: parent=/system/etc/security/cacerts child=1e8e7201.0
[File] new File: parent=/system/etc/security/cacerts child=35105088.0
[File] new File: parent=/system/sbin/ child=busybox
[File] new File: parent=/system/sbin/ child=magisk
[File] new File: parent=/system/sbin/ child=su
[File] new File: parent=/system/sd/xbin/ child=busybox
[File] new File: parent=/system/sd/xbin/ child=magisk
[File] new File: parent=/system/sd/xbin/ child=su
[File] new File: parent=/system/usr/we-need-root/ child=busybox
[File] new File: parent=/system/usr/we-need-root/ child=magisk
[File] new File: parent=/system/usr/we-need-root/ child=su
[File] new File: parent=/system/xbin/ child=busybox
[File] new File: parent=/system/xbin/ child=magisk
[File] new File: parent=/system/xbin/ child=su
[File] new File: parent=/vendor/bin/ child=busybox
[File] new File: parent=/vendor/bin/ child=magisk
[File] new File: parent=/vendor/bin/ child=su
[File] new File: parent=system/bin/failsafe/ child=busybox
[File] new File: parent=system/bin/failsafe/ child=magisk
[File] new File: parent=system/bin/failsafe/ child=su
[System.getProperty] IS_TESTING = null
[System.getProperty] ZstdNativePath = null
[System.getProperty] ftp.nonProxyHosts = null
[System.getProperty] ftp.proxyHost = null
[System.getProperty] http.keepAlive = null
[System.getProperty] http.keepAliveDuration = null
[System.getProperty] http.maxConnections = null
[System.getProperty] http.nonProxyHosts = null
[System.getProperty] http.proxyHost = null
[System.getProperty] http.proxyPort = null
[System.getProperty] https.nonProxyHosts = null
[System.getProperty] https.proxyHost = null
[System.getProperty] https.proxyPort = null
[System.getProperty] java.library.path = /system/lib64:/system_ext/lib64
[System.getProperty] java.specification.version = 0.9
[System.getProperty] java.time.zone.DefaultZoneRulesProvider = null
[System.getProperty] java.version = 0
[System.getProperty] java.vm.name = Dalvik
[System.getProperty] java.vm.version = 2.1.0
[System.getProperty] javax.net.ssl.keyStore = null
[System.getProperty] javax.net.ssl.trustStore = null
[System.getProperty] kotlinx.coroutines.debug = null
[System.getProperty] kotlinx.coroutines.io.parallelism = null
[System.getProperty] kotlinx.coroutines.scheduler = null
[System.getProperty] kotlinx.coroutines.scheduler.blocking.parallelism = null
[System.getProperty] kotlinx.coroutines.scheduler.core.pool.size = null
[System.getProperty] kotlinx.coroutines.scheduler.keep.alive.sec = null
[System.getProperty] kotlinx.coroutines.scheduler.max.pool.size = null
[System.getProperty] kotlinx.coroutines.scheduler.offload.threshold = null
[System.getProperty] kotlinx.coroutines.scheduler.resolution.ns = null
[System.getProperty] kotlinx.coroutines.scheduler.spins = null
[System.getProperty] kotlinx.coroutines.scheduler.yields = null
[System.getProperty] kotlinx.coroutines.stacktrace.recovery = null
[System.getProperty] line.separator =
[System.getProperty] os.arch = aarch64
[System.getProperty] os.name = Linux
[System.getProperty] os.version = 6.1.130-gcc2f4221a3ad
[System.getProperty] proxyHost = null
[System.getProperty] rx.ring-buffer.size = null
[System.getProperty] rx.unsafe-disable = null
[System.getProperty] socksProxyHost = null
[System.getProperty] system.certs.enabled = null
[SystemProperties.get] com.samsung.speg.disable =
[SystemProperties.get] gsm.sim.state = LOADED,ABSENT
[SystemProperties.get] gsm.version.baseband = Q_V1_P14,Q_V1_P14
[SystemProperties.get] gsm.version.ril-impl =
[SystemProperties.get] init.svc.health-hal-2-1-samsung =
[SystemProperties.get] persist.debug.input.force_enable_stylus_pointer_icon =
[SystemProperties.get] persist.sys.usb.config = adb
[SystemProperties.get] persist.sys.use.flyme.icon =
[SystemProperties.get] ro.baseband = msm
[SystemProperties.get] ro.boot.vbmeta.digest = 58e2aebd970b17c36f4034c0015453de148be99c146c0d7aae617204b3131999
[SystemProperties.get] ro.bootimage.build.fingerprint =
[SystemProperties.get] ro.bootloader = unknown
[SystemProperties.get] ro.build.date.utc = 1753669492
[SystemProperties.get] ro.build.display.id = lineage_corvette-userdebug 15 BP1A.250505.005 eng.androi.20250728.102454 release-keys
[SystemProperties.get] ro.build.fingerprint = OnePlus/PJX110/OP5D06L1:15/AP3A.240617.008/U.1c92a95_9c8a_52f3:user/release-keys
[SystemProperties.get] ro.build.flavor = lineage_corvette-userdebug
[SystemProperties.get] ro.build.hw_emui_api_level =
[SystemProperties.get] ro.build.id = BP1A.250505.005
[SystemProperties.get] ro.build.nubia.rom.code =
[SystemProperties.get] ro.build.product = OP5D06L1
[SystemProperties.get] ro.build.rom.id =
[SystemProperties.get] ro.build.sense.version =
[SystemProperties.get] ro.build.uiversion =
[SystemProperties.get] ro.build.version.emui =
[SystemProperties.get] ro.build.version.opporom =
[SystemProperties.get] ro.com.google.clientidbase = android-oneplus
[SystemProperties.get] ro.confg.hw_systemversion =
[SystemProperties.get] ro.config.ringtone = Orion.ogg
[SystemProperties.get] ro.cta.yunos.version =
[SystemProperties.get] ro.debuggable =
[SystemProperties.get] ro.flyme.published =
[SystemProperties.get] ro.hardware = qcom
[SystemProperties.get] ro.letv.release.version =
[SystemProperties.get] ro.meizu.setupwizard.flyme =
[SystemProperties.get] ro.miui.internal.storage =
[SystemProperties.get] ro.miui.ui.version.code =
[SystemProperties.get] ro.miui.ui.version.name =
[SystemProperties.get] ro.odm.build.date.utc = 1753669492
[SystemProperties.get] ro.odm.build.fingerprint = OnePlus/PJX110/OP5D06L1:15/AP3A.240617.008/U.1c92a95_9c8a_52f3:user/release-keys
[SystemProperties.get] ro.product.brand = OnePlus
[SystemProperties.get] ro.product.build.date.utc = 1753669492
[SystemProperties.get] ro.product.build.fingerprint = OnePlus/PJX110/OP5D06L1:15/AP3A.240617.008/U.1c92a95_9c8a_52f3:user/release-keys
[SystemProperties.get] ro.product.cpu.abi = arm64-v8a
[SystemProperties.get] ro.product.device = OP5D06L1
[SystemProperties.get] ro.product.manufacturer = OnePlus
[SystemProperties.get] ro.product.model = PJX110
[SystemProperties.get] ro.product.odm.device = OP5D06L1
[SystemProperties.get] ro.product.product.device = OP5D06L1
[SystemProperties.get] ro.product.system_ext.device = OP5D06L1
[SystemProperties.get] ro.product.vendor.device = OP5D06L1
[SystemProperties.get] ro.rom.version =
[SystemProperties.get] ro.secure =
[SystemProperties.get] ro.serialno =
[SystemProperties.get] ro.smartisan.version =
[SystemProperties.get] ro.system.build.date.utc = 1753669492
[SystemProperties.get] ro.system.build.fingerprint = OnePlus/PJX110/OP5D06L1:15/AP3A.240617.008/U.1c92a95_9c8a_52f3:user/release-keys
[SystemProperties.get] ro.system_ext.build.date.utc = 1753669492
[SystemProperties.get] ro.system_ext.build.fingerprint = OnePlus/PJX110/OP5D06L1:15/AP3A.240617.008/U.1c92a95_9c8a_52f3:user/release-keys
[SystemProperties.get] ro.vendor.build.date.utc = 1753669492
[SystemProperties.get] ro.vendor.build.fingerprint = OnePlus/PJX110/OP5D06L1:15/AP3A.240617.008/U.1c92a95_9c8a_52f3:user/release-keys
[SystemProperties.get] ro.vivo.os.build.display.id =
[SystemProperties.get] ro.vivo.os.version =
[SystemProperties.get] sys.lge.lgmdm_version =
[SystemProperties.get] sys.oem_unlock_allowed =
[SystemProperties.get] sys.usb.config = adb
[SystemProperties.get] sys.usb.state =
[SystemProperties.get] wifi.interface =

如果该 App 没有使用其他更复杂的检测手段(比如 native 层检测),那么基本可以确定问题在于ro.build.display.idro.build.flavor这两个属性,因为出现了”lineage”字样。后续只需要修改这两个属性即可。