#!/system/bin/sh
[ "$(id -u)" -ne 0 ] && echo "❌ 需要ROOT权限" && exit 1

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'

WORK="/data/local/.valo_defend_green"
LOCK="$WORK/run.lock"
MONITOR_PID="$WORK/monitor.pid"
TRACE_WIPE_PID="$WORK/trace_wipe.pid"
CYCLE_PID="$WORK/cycle.pid"
GUARD_PID="$WORK/guard.pid"
ANTIDEBUG_PID="$WORK/antidebug.pid"
MEMCHECK_PID="$WORK/memcheck.pid"
EMPTY_HOOK="/data/local/tmp/.empty_hook"

echo -e "${CYAN}================ EN防护 环境恢复工具 ================${NC}"
echo ""

# 1.杀掉所有残留后台子进程
echo -e "${BLUE}[1/6] 终止残留后台进程${NC}"
kill -9 $(cat "$MONITOR_PID" 2>/dev/null) 2>/dev/null
kill -9 $(cat "$TRACE_WIPE_PID" 2>/dev/null) 2>/dev/null
kill -9 $(cat "$CYCLE_PID" 2>/dev/null) 2>/dev/null
kill -9 $(cat "$GUARD_PID" 2>/dev/null) 2>/dev/null
kill -9 $(cat "$ANTIDEBUG_PID" 2>/dev/null) 2>/dev/null
kill -9 $(cat "$MEMCHECK_PID" 2>/dev/null) 2>/dev/null

pkill -f "real_file_clean" 2>/dev/null
pkill -f "trace_auto_wipe" 2>/dev/null
pkill -f "cycle_defend" 2>/dev/null
pkill -f "guard_inside" 2>/dev/null
pkill -f "antidebug_watch" 2>/dev/null
pkill -f "mem_integrity_check" 2>/dev/null
pkill -f "behavior_confuse" 2>/dev/null
pkill -f "entropy_mask" 2>/dev/null
echo -e "${GREEN}✓ 进程清理完成${NC}"

# 2.清理iptables自定义链 XIAONA_FULL / XIAONA_CYCLE
echo -e "${BLUE}[2/6] 清理iptables防火墙规则${NC}"
iptables -D OUTPUT -j XIAONA_CYCLE 2>/dev/null
iptables -D OUTPUT -j XIAONA_FULL 2>/dev/null
iptables -F XIAONA_CYCLE 2>/dev/null
iptables -X XIAONA_CYCLE 2>/dev/null
iptables -F XIAONA_FULL 2>/dev/null
iptables -X XIAONA_FULL 2>/dev/null
echo -e "${GREEN}✓ iptables链已删除${NC}"

# 3.卸载bind挂载点（游戏风险目录）
echo -e "${BLUE}[3/6] 解除bind挂载${NC}"
PKG="com.tencent.tmgp.codev"
APP_BASE="/data/data/${PKG}"
FILES="${APP_BASE}/files"
CACHE="${APP_BASE}/cache"
PREFS="${APP_BASE}/shared_prefs"
GREEN_XML="${PREFS}/ace_config.xml"

umount -l "$GREEN_XML" 2>/dev/null
umount -l "${FILES}/behavior" 2>/dev/null
umount -l "${FILES}/behavior7" 2>/dev/null
umount -l "${FILES}/tss" 2>/dev/null
umount -l "${FILES}/risk" 2>/dev/null
umount -l "${FILES}/longterm_observe" 2>/dev/null
umount -l "${FILES}/weekly_stat" 2>/dev/null
umount -l "${FILES}/sample" 2>/dev/null
umount -l "${FILES}/upload" 2>/dev/null
umount -l "${FILES}/report" 2>/dev/null
umount -l "${FILES}/replay" 2>/dev/null
umount -l "${FILES}/trace" 2>/dev/null
umount -l "${FILES}/input" 2>/dev/null
umount -l "${FILES}/touch" 2>/dev/null
umount -l "${FILES}/analytics" 2>/dev/null
umount -l "${FILES}/high_risk" 2>/dev/null
umount -l "${FILES}/login_risk" 2>/dev/null
umount -l "${FILES}/accuse_data" 2>/dev/null
umount -l "${FILES}/report_upload" 2>/dev/null
umount -l "${FILES}/replay_cache" 2>/dev/null
umount -l "${FILES}/user_report" 2>/dev/null
umount -l "${FILES}/remote_cfg" 2>/dev/null
umount -l "${FILES}/dynamic_rule" 2>/dev/null
umount -l "${FILES}/patch_temp" 2>/dev/null
umount -l "${APP_BASE}/logs" 2>/dev/null
umount -l "${CACHE}/log" 2>/dev/null
umount -l "${CACHE}/trace" 2>/dev/null
umount -l "${CACHE}/scan_tmp" 2>/dev/null
umount -l "${CACHE}/accuse_cache" 2>/dev/null
echo -e "${GREEN}✓ 全部bind挂载解除${NC}"

#4.恢复系统属性
echo -e "${BLUE}[4/6] 恢复系统属性${NC}"
setprop persist.adb.enable 1 2>/dev/null
setprop service.adb.tcp.port 5555 2>/dev/null
start adbd 2>/dev/null
echo -e "${GREEN}✓ ADB属性复原${NC}"

#5.清理临时锁文件 pid文件
echo -e "${BLUE}[5/6] 删除临时工作目录${NC}"
rm -rf "$WORK" 2>/dev/null
rm -f "$EMPTY_HOOK" 2>/dev/null
rm -f /data/local/tmp/.empty_block 2>/dev/null
echo -e "${GREEN}✓ 临时文件清除${NC}"

#6.校验
echo ""
echo -e "${CYAN}================ 恢复完成 ================${NC}"
echo -e "${GREEN}✅ 系统网络、挂载、属性全部恢复原状${NC}"
echo -e "${YELLOW}提示：游戏本身的文件不会被删除，如果要清除游戏反作弊本地缓存，手动清除游戏存储即可${NC}"
echo ""
