#!/bin/bash
# 核心配置：XOR加密密钥+有效卡密（加密后存储，防破解）
XOR_KEY=0x1A # 加密密钥（自定义非对称值）
# 有效卡密：78、91、13 → 先转ASCII再XOR加密（存储加密后结果，不暴露明文）
VALID_KEY1=$(( $(printf "%d" "'7") ^ XOR_KEY ))$(( $(printf "%d" "'8") ^ XOR_KEY )) # 78加密后
VALID_KEY2=$(( $(printf "%d" "'9") ^ XOR_KEY ))$(( $(printf "%d" "'1") ^ XOR_KEY )) # 91加密后
VALID_KEY3=$(( $(printf "%d" "'1") ^ XOR_KEY ))$(( $(printf "%d" "'3") ^ XOR_KEY )) # 13加密后

# 终端颜色（深沉专业风+验证专属色）
RED='\033[0;31m'
DARK_GREEN='\033[0;32m'
BRIGHT_YELLOW='\033[1;33m'
DEEP_BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
GRAY='\033[1;30m'
NC='\033[0m' # 重置

# 卡密验证函数（XOR加密+隐藏输入）
verify_key() {
    clear
    echo -e "${GRAY}==============================================${NC}"
    echo -e "          ${PURPLE}DY定制版 · 卡密验证系统${NC}          "
    echo -e "${GRAY}==============================================${NC}"
    echo -e "  ${DEEP_BLUE}验证模式${NC}: XOR-256 加密验证"
    echo -e "  ${DEEP_BLUE}提示${NC}: 输入有效卡密即可解锁全部功能"
    echo -e "${GRAY}==============================================${NC}\n"

    # 隐藏输入卡密（不显示明文，模拟专业验证UI）
    read -s -p "${BRIGHT_YELLOW}[请输入卡密]${NC} 请输入授权卡密：" INPUT_KEY
    echo -e "\n"

    # 验证卡密长度（仅允许2位有效卡密）
    if [ ${#INPUT_KEY} -ne 2 ]; then
        echo -e "${RED}[验证失败]${NC} 卡密格式错误！仅支持2位数字卡密"
        sleep 2
        exit 1
    fi

    # 对输入卡密进行XOR加密（逐字符处理，与预设加密逻辑一致）
    CHAR1=${INPUT_KEY:0:1}
    CHAR2=${INPUT_KEY:1:1}
    ENC_CHAR1=$(( $(printf "%d" "'$CHAR1") ^ XOR_KEY ))
    ENC_CHAR2=$(( $(printf "%d" "'$CHAR2") ^ XOR_KEY ))
    ENCRYPTED_INPUT="${ENC_CHAR1}${ENC_CHAR2}"

    # 对比加密后卡密（不暴露明文，仅对比加密结果）
    if [ "$ENCRYPTED_INPUT" != "$VALID_KEY1" ] && [ "$ENCRYPTED_INPUT" != "$VALID_KEY2" ] && [ "$ENCRYPTED_INPUT" != "$VALID_KEY3" ]; then
        echo -e "${RED}[验证失败]${NC} 卡密无效！请联系管理员获取授权"
        sleep 2
        exit 1
    fi

    # 验证成功提示
    echo -e "${DARK_GREEN}[验证成功]${NC} 卡密授权通过 · 正在加载核心模块..."
    sleep 3
}

# 第一步：执行卡密验证（验证失败直接退出）
verify_key

# 后续反作弊拦截流程（保持原深沉专业版逻辑，验证通过后执行）
clear
sleep 1

# 头部信息（验证通过后显示）
echo -e "${GRAY}==============================================${NC}"
echo -e "          ${PURPLE}DY定制版 · 反作弊拦截系统${NC}          "
echo -e "${GRAY}==============================================${NC}"
echo -e "  ${DEEP_BLUE}设备标识${NC}: $(getprop ro.product.model) | Android $(getprop ro.build.version.release)"
echo -e "  ${DEEP_BLUE}内核版本${NC}: v2.1 | TenProtect 拦截适配"
echo -e "  ${DEEP_BLUE}授权状态${NC}: 已激活（卡密验证通过）"
echo -e "${GRAY}==============================================${NC}\n"

# 初始化（慢节奏，增强深沉感）
echo -e "${BRIGHT_YELLOW}[系统加载]${NC} 启动反作弊拦截内核..."
sleep 3.5
echo -e "${BRIGHT_YELLOW}[进程关联]${NC} 绑定和平精英进程 com.tencent.tmgp.pubgmhd..."
sleep 3.5
echo -e "${BRIGHT_YELLOW}[模块激活]${NC} TenProtect 检测拦截模块已激活..."
sleep 2.5
echo -e "\n${RED}⚠️  进入深度检测模式 · 所有反作弊数据实时拦截${NC}\n"
sleep 2

# 核心反作弊检测+拦截流程（列出具体数据项，突出“拦截”动作）
DETECTION_ITEMS=(
    "TenProtect 设备指纹校验（fingerprint_verify）"
    "内存特征扫描（memory_signature_scan）"
    "行为轨迹分析（behavior_trace_analysis）"
    "游戏数据校验包（game_data_crc32）"
    "进程完整性检测（process_integrity_check）"
    "网络封包加密验证（network_packet_encrypt）"
    "硬件信息上报（hardware_info_upload）"
    "作弊特征库匹配（cheat_signature_match）"
    "后台悬浮窗检测（float_window_detect）"
    "root权限隐式扫描（root_hide_detect）"
)

# 逐一检测+拦截（慢间隔，深沉输出）
for ITEM in "${DETECTION_ITEMS[@]}"; do
    echo -e "${CYAN}[检测中]${NC} ${GRAY}→${NC} ${ITEM}"
    sleep 4 # 延长检测间隔，增强深沉感
    # 随机生成拦截数据标识（模拟真实数据拦截）
    INTERCEPT_ID="0x${RANDOM:0:4}${RANDOM:0:4}"
    echo -e "${DARK_GREEN}[拦截成功]${NC} ${GRAY}→${NC} 屏蔽反作弊数据: ${DEEP_BLUE}${INTERCEPT_ID}${NC} | 对应模块：${ITEM%%（*）}"
    echo -e "${GRAY}----------------------------------------------${NC}"
    sleep 2.5
done

# 重点反作弊函数拦截（单独突出，强化核心）
echo -e "\n${BRIGHT_YELLOW}[重点拦截]${NC} 启动核心反作弊函数 Hook..."
sleep 3
KEY_FUNCTIONS=(
    "TP_CheckAntiCheat() [TenProtect 主检测函数]"
    "VerifyGameResource() [游戏资源校验函数]"
    "ReportAbnormalBehavior() [异常行为上报函数]"
    "ScanSuspiciousProcess() [可疑进程扫描函数]"
    "CheckMemoryModification() [内存篡改检测函数]"
)

for FUNC in "${KEY_FUNCTIONS[@]}"; do
    HOOK_ADDR="0x7f${RANDOM:0:4}${RANDOM:0:4}"
    echo -e "${RED}[HOOK 成功]${NC} ${GRAY}→${NC} 拦截函数：${PURPLE}${FUNC}${NC} |  Hook 地址：${DEEP_BLUE}${HOOK_ADDR}${NC}"
    sleep 3
done

# 最终校验+倒计时
echo -e "\n${GRAY}==============================================${NC}"
echo -e "${DARK_GREEN}[校验通过]${NC} 所有反作弊检测项已拦截完毕"
echo -e "${DARK_GREEN}[系统安全]${NC} 设备无高风险标记，游戏权限已解锁"
echo -e "${GRAY}==============================================${NC}\n"

sleep 2
echo -e "${BRIGHT_YELLOW}[启动倒计时]${NC} 5秒后可启动游戏（异常请重启设备）"
echo -e "${GRAY}----------------------------------------------${NC}"
for ((i=5; i>0; i--)); do
    echo -e "${RED}[倒计时]${NC} 剩余 ${DEEP_BLUE}$i${NC} 秒..."
    sleep 1
done

# 最终提示（深沉收尾，突出持续保护）
echo -e "\n${GRAY}==============================================${NC}"
echo -e "  ${PURPLE}DY反作弊拦截系统 · 持续后台运行${NC}  "
echo -e "✅ 游戏可正常启动 · 反作弊数据实时屏蔽"
echo -e "${GRAY}==============================================${NC}\n"

# 后台持续输出拦截日志（低频率，深沉不打扰）
while true; do
    LOG_TYPES=(
        "反作弊数据拦截" "异常上报屏蔽" "校验包过滤" "特征库匹配拦截"
    )
    LOG_INDEX=$((RANDOM % ${#LOG_TYPES[@]}))
    CURRENT_LOG=${LOG_TYPES[LOG_INDEX]}
    LOG_ADDR="0x7f${RANDOM:0:8}"
    echo -e "${GRAY}[$(date +'%H:%M:%S')]${NC} ${DEEP_BLUE}[后台保护]${NC} ${CURRENT_LOG} → 地址：${PURPLE}${LOG_ADDR}${NC}"
    sleep 5
done
