ADB禁用验证(disable-verity)执行指南
🔧 命令执行准备
检查当前环境
# 1. 检查ADB连接状态
adb devices
# 应该显示设备为"device"状态
# 2. 检查设备是否已授权
adb shell getprop ro.serialno
# 如果能正常返回序列号,说明连接正常
# 3. 验证设备root权限
adb root
# 显示"restarting adbd as root"表示成功
        🚀 执行disable-verity命令
标准执行流程
#!/bin/bash
# execute_disable_verity.sh
echo "🚀 开始执行 adb disable-verity..."
echo "=================================="
# 方法1: 直接执行(推荐)
echo "1. 执行禁用命令..."
adb disable-verity
# 检查执行结果
if [ $? -eq 0 ]; then
    echo "✅ adb disable-verity 执行成功"
else
    echo "❌ 命令执行失败,尝试替代方案..."
    
    # 方法2: 使用shell命令替代
    echo "2. 尝试替代方案..."
    adb shell "su -c 'setprop ro.boot.veritymode disabled'"
    adb shell "su -c 'setprop partition.system.verified 0'"
    
    echo "✅ 替代方案执行完成"
fi
        验证执行结果
#!/bin/bash
# verify_disable_result.sh
echo "🔍 验证dm-verity禁用状态..."
echo "============================"
# 检查verity相关属性
echo "1. 检查verity模式:"
adb shell "getprop ro.boot.veritymode"
echo "2. 检查分区验证状态:"
adb shell "getprop partition.system.verified"
echo "3. 检查dm-verity设备:"
adb shell "ls -la /dev/block/dm-*" 2>/dev/null || echo "未找到dm设备"
echo "4. 检查挂载选项:"
adb shell "mount | grep -E 'verify|dm-verity'"
# 最终状态判断
verity_mode=$(adb shell "getprop ro.boot.veritymode")
if [[ "$verity_mode" == "disabled" ]]; then
    echo "🎉 dm-verity已成功禁用"
else
    echo "⚠️ 可能需要重启才能生效"
fi
        🔄 必须的重启步骤
重启设备应用更改
#!/bin/bash
# reboot_after_disable.sh
echo "🔄 重启设备以应用verity禁用..."
echo "=============================="
# 重要提示
echo "⚠️  注意: 必须重启才能生效!"
echo "设备将立即重启..."
# 执行重启
adb reboot
echo "等待设备重新连接..."
# 等待设备重启完成
sleep 30
# 检测设备重新上线
timeout=120
counter=0
while [ $counter -lt $timeout ]; do
    if adb devices | grep -q "device$"; then
        echo "✅ 设备已重新连接"
        break
    fi
    sleep 5
    counter=$((counter + 5))
    echo "等待中... ${counter}秒"
done
if [ $counter -ge $timeout ]; then
    echo "❌ 设备重启后连接超时"
    echo "请手动检查设备状态"
fi
        重启后最终验证
#!/bin/bash
# final_verification.sh
echo "🔍 重启后最终验证..."
echo "===================="
# 等待设备完全启动
sleep 10
# 1. 重新获取root权限
adb root
sleep 2
# 2. 最终状态检查
echo "最终verity状态:"
adb shell "getprop ro.boot.veritymode"
adb shell "getprop partition.system.verified"
# 3. 测试系统分区可写性
echo "测试系统分区写入权限..."
adb remount
if [ $? -eq 0 ]; then
    echo "✅ 系统分区已可写"
else
    echo "❌ 系统分区仍为只读,可能需要其他操作"
fi
# 4. 验证实际修改能力
echo "创建测试文件验证..."
adb shell "echo 'test' > /system/test_disable_verity.txt 2>/dev/null && echo '✅ 写入测试成功' || echo '❌ 写入测试失败'"
adb shell "rm -f /system/test_disable_verity.txt 2>/dev/null"
        ⚠️ 常见问题解决
错误处理方案
#!/bin/bash
# disable_verity_troubleshoot.sh
echo "🔧 问题排查与解决..."
echo "===================="
# 问题1: 设备未找到
if ! adb devices | grep -q "device$"; then
    echo "❌ 问题: 设备未连接或未授权"
    echo "解决方案:"
    echo "1. 检查USB连接"
    echo "2. 在设备上授权USB调试"
    echo "3. 重启ADB服务: adb kill-server && adb start-server"
    exit 1
fi
# 问题2: 需要root权限
echo "检查root权限..."
adb root
if [ $? -ne 0 ]; then
    echo "❌ 问题: 无法获取root权限"
    echo "解决方案:"
    echo "1. 确保设备已解锁bootloader"
    echo "2. 检查设备是否支持root"
    echo "3. 尝试: adb shell su -c 'command'"
fi
# 问题3: 命令不支持
echo "测试命令支持性..."
adb shell "which disable-verity" >/dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "⚠️  设备可能不支持disable-verity命令"
    echo "尝试替代方法..."
    
    # 替代方案
    adb shell "su -c 'mount -o remount,rw /system'"
    adb shell "su -c 'setenforce 0'"
fi
        设备特定解决方案
#!/bin/bash
# device_specific_solutions.sh
# 获取设备信息
device_model=$(adb shell "getprop ro.product.model")
android_version=$(adb shell "getprop ro.build.version.release")
echo "📱 设备信息: $device_model, Android $android_version"
echo "=================================================="
# 根据Android版本采用不同策略
major_version=$(echo $android_version | cut -d. -f1)
if [ $major_version -ge 8 ]; then
    echo "🔧 Android 8.0+ 设备方案"
    # Android 8.0+ 使用Project Treble
    adb disable-verity
    adb reboot
elif [ $major_version -ge 6 ]; then
    echo "🔧 Android 6.0-7.x 设备方案" 
    # Android 6.0-7.x 标准方案
    adb disable-verity
    adb reboot
else
    echo "🔧 Android 5.x 及以下设备方案"
    # 老版本Android
    adb root
    adb remount
fi
        📋 完整执行流程
一键执行脚本
#!/bin/bash
# complete_disable_verity.sh
set -e
echo "🎯 ADB禁用验证完整流程"
echo "===================="
# 函数:记录日志
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# 步骤1: 环境检查
log "步骤1: 检查ADB环境..."
adb devices
adb root
# 步骤2: 执行禁用
log "步骤2: 执行disable-verity..."
if adb disable-verity; then
    log "✅ disable-verity执行成功"
else
    log "⚠️ 使用替代方案..."
    adb shell "setprop ro.boot.veritymode disabled"
    adb shell "setprop partition.system.verified 0"
fi
# 步骤3: 重启设备
log "步骤3: 重启设备..."
adb reboot
log "设备重启中,等待30秒..."
sleep 30
# 步骤4: 重新连接验证
log "步骤4: 重新连接验证..."
adb wait-for-device
adb root
# 步骤5: 最终验证
log "步骤5: 最终验证..."
verity_state=$(adb shell "getprop ro.boot.veritymode")
if [[ "$verity_state" == "disabled" ]]; then
    log "🎉 dm-verity禁用成功!"
else
    log "❌ dm-verity禁用可能未生效"
fi
log "流程完成"
        🛡️ 安全注意事项
风险提示与备份
#!/bin/bash
# safety_precautions.sh
echo "⚠️  ⚠️  ⚠️  重要安全提示 ⚠️  ⚠️  ⚠️"
echo "================================"
# 风险提示
cat << 'EOF'
🔴 安全风险说明:
1. 系统完整性风险
   - 禁用验证后系统文件可能被恶意修改
   - 失去系统完整性保护
2. 稳定性风险  
   - 系统修改可能导致崩溃
   - OTA更新可能失败
3. 保修问题
   - 可能影响设备保修
✅ 仅在以下情况使用:
   - 开发调试需要
   - 刷入自定义ROM
   - 系统修改需求
EOF
# 确认操作
read -p "确认了解风险并继续? (输入YES继续): " confirmation
if [[ "$confirmation" != "YES" ]]; then
    echo "操作已取消"
    exit 1
fi
# 建议备份
echo "建议先备份重要数据..."
adb backup -apk -shared -all -f backup.ab
echo "备份文件: backup.ab"
        🎯 执行命令
现在请按以下步骤执行:
- 
首先确保设备连接正常:
adb devices - 
执行禁用命令:
adb disable-verity - 
重启设备:
adb reboot - 
验证结果:
adb shell getprop ro.boot.veritymode