我被腾讯 ACE 反作弊逼疯了,最后靠一个 PowerShell 脚本治好了精神内耗

我被腾讯 ACE 反作弊逼疯了,最后靠一个 PowerShell 脚本治好了精神内耗

前言:玩个游戏,比上班还累

打无畏契约(Valorant 国服)的兄弟应该都懂------游戏打得正嗨,突然风扇狂转,一看任务管理器:SGuard64.exe 吃了 30% CPU

这就是腾讯的 ACE(AntiCheat Expert)反作弊系统。说是反作弊,干的事儿比外挂还狠:

  • 内核级驱动扫描你整个系统
  • 开机就驻留后台
  • CPU 全核拉满,不管你死活
  • 卸载?你想多了

我花了整整一个晚上跟它斗智斗勇,最后没卸掉,但把它彻底锁死了。这篇文章记录我的踩坑全过程,文末附一键脚本,拿过去就能用。


第一回合:我太天真了,以为卸载就能解决问题

"ACE 是吧,控制面板卸载,搞定"

打开控制面板 → 程序和功能 → 找 AntiCheat Expert → 没有

行吧,那我去搜。系统盘搜了一圈,在 C:\Program Files\AntiCheatExpert\ 找到了:

bash 复制代码
AntiCheatExpert/
├── ACE-BASE.sys       # 基础驱动
├── ACE-CORE*.sys      # 核心驱动(备份了三份你敢信)
├── ACE-GAME.sys       # 游戏保护驱动
├── ACE-Service64.exe  # 服务进程
├── SGuard/
│   └── x64/
│       ├── SGuard64.exe      # 护卫进程
│       ├── SGuardSvc64.exe   # 护卫服务
│       └── Uninstall64.exe   # 卸载器(真有!)

这不就是全家桶嘛,删就完了!

结果:删不掉。 文件被内核驱动锁着,提示"权限不足"。

那我就安排重启删除

Windows 有个机制叫 PendingFileRenameOperations,能在系统启动前把锁着的文件删掉。我写了脚本把 22 个 ACE 文件全部加入"重启删除清单",重启------

干净了。 那一瞬间我笑得像个孩子。


第二回合:我打开游戏,它回来了

第二天,打开无畏契约,想爽一把。

然后任务管理器里,SGuard64.exe 又出现了

我当时表情:

???

查了一通,破案了------

ACE 根本不是独立安装的程序。 它是游戏本体的组成部分,藏在游戏目录里:

复制代码
游戏目录\live\ShooterGame\Binaries\Win64\AntiCheatExpert\

里面有 ACE-Setup64.exe------一个静默安装器

你每次打开游戏,它干这几件事:

复制代码
游戏启动
  ↓
ACE-Setup64.exe 自动执行(你完全无感)
  ↓
把驱动复制到 C:\Windows\system32\drivers\
  ↓
创建 C:\Program Files\AntiCheatExpert\
  ↓
注册服务 → 启动服务 → 加载内核驱动
  ↓
SGuard64.exe 开始全核扫描你的电脑 🤡

而且我 D 盘上有两份游戏副本(之前重装过),两份里各有一套 ACE 安装器,双重火力。

也就是说,只要你还玩这游戏,ACE 就永生不死。你删一百次,它第一百零一次复活。


第三回合:打不过就加入------锁死它

卸载是不可能的,这辈子都不可能。那我换个思路:

我不删你了。但你在我电脑上跑,得按我的规矩来。

思路

  1. 优先级降到最低:CPU 有空闲才轮到你,别跟我抢资源
  2. 锁到单核:16 个核心只给你 1 个,剩下的别碰
  3. 自动化:开机自动蹲守,SGuard64.exe 一出现就按死

方案选型

方案 可行性
删文件 ❌ 游戏启动自动恢复
删服务 ❌ 同上
防火墙封网络 ⚠️ 治标不治本,内核驱动照样扫本地
改服务权限 ⚠️ 可能导致游戏打不开
进程优先级+CPU亲和性 ✅ 不破坏游戏,只是限制资源

最终选了最后一个。


终极方案:一劳永逸锁死 ACE

原理

PowerShell 脚本常驻后台,用 WMI 实时监听进程创建事件。一旦检测到 SGuard64.exe 启动,立刻:

powershell 复制代码
$proc.PriorityClass = 'Idle'          # 优先级拉到最低
$proc.ProcessorAffinity = 1           # 只给用 CPU 0(单核)

然后丢到 Windows 启动文件夹,开机自动运行。

操作用了多久?

30 秒。双击一下,完事儿。


兄弟你跟我的步骤走(2 步搞定)

第一步:下载脚本

两个文件放同一文件夹,随便放哪里都行:

  • 锁死你ACE.ps1 --- PowerShell 核心脚本
  • 安装-开机自动锁.vbs --- 一键安装器

注意:.ps1 文件和 .vbs 文件必须在同一个文件夹里!

第二步:双击安装

双击 安装-开机自动锁.vbs,弹窗提示"安装完成"就 OK 了。

它会自动把启动项添加到 Windows,下次开机生效。

怎么验证生效?

  1. 打开无畏契约
  2. 打开任务管理器 → 详细信息
  3. 找到 SGuard64.exe
  4. 右键 → 设置优先级 → 应该显示 "低"(脚本设的 Idle)
  5. 右键 → 设置相关性 → 应该只勾了 CPU 0

完事儿。


写在最后

我折腾这一圈最大的感受是:

现代游戏的"安全系统"已经越过界了。

反作弊我不反对,但我花钱买的电脑,CPU 核心应该先服务我的游戏画面,而不是被反作弊占满导致掉帧------这不讽刺吗?为了保护游戏体验的工具,反而毁了游戏体验。

在厂商学会收敛之前,就用魔法打败魔法吧。


附:脚本地址

两个文件我已经打包好了,需要的小伙伴直接拿:

  • GitHub:(你可以贴你的仓库链接)
  • 或者直接拿代码自己新建两个文件也行,贴下面了

锁死你ACE.ps1

powershell 复制代码
# ======================================================
#  锁死你ACE --- 自动限制 SGuard64.exe 优先级和 CPU
# ======================================================

$TARGET = "SGuard64"
$CHECK_INTERVAL = 3  # 每 3 秒轮询兜底

# 防止重复运行
$me = [System.Diagnostics.Process]::GetCurrentProcess()
$others = Get-Process -Name $me.ProcessName -ErrorAction SilentlyContinue |
    Where-Object { $_.Id -ne $me.Id -and $_.StartTime -gt (Get-Date).AddMinutes(-1) }
if ($others) { exit }

Write-Host "锁死你ACE 已就绪 --- 目标: $TARGET.exe" -ForegroundColor Cyan

$alreadyDone = @{}

function Nerf-Process ($proc) {
    $pid = $proc.Id
    if ($alreadyDone.ContainsKey($pid)) { return }
    try {
        $proc.PriorityClass = 'Idle'
        $proc.ProcessorAffinity = 1
        $alreadyDone[$pid] = $true
        Write-Host "$(Get-Date -Format 'HH:mm:ss') | 锁死 $TARGET.exe (PID:$pid) --- Priority:Idle | CPU:0" -ForegroundColor Green
    } catch { }
}

# WMI 事件监听
$query = "SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName = '$TARGET.exe'"
$watcher = New-Object System.Management.ManagementEventWatcher
$watcher.Query = $query
$watcher.Options.Timeout = [System.Management.ManagementOptions]::Infinite
$job = Register-ObjectEvent -InputObject $watcher -EventName "EventArrived" -Action {
    $proc = Get-Process -Id $args[0].NewEvent.ProcessID -ErrorAction SilentlyContinue
    if ($proc) { & $args[1] $proc }
} -ArgumentList @($null, ${function:Nerf-Process}) -ErrorAction SilentlyContinue

# 定时轮询兜底
while ($true) {
    $procs = Get-Process -Name $TARGET -ErrorAction SilentlyContinue
    foreach ($p in $procs) { Nerf-Process $p }
    Start-Sleep -Seconds $CHECK_INTERVAL
}

安装-开机自动锁.vbs

vbscript 复制代码
Dim fso, scriptDir, ps1Source, startupPath, vbsDest, shell, shortcut

Set fso = CreateObject("Scripting.FileSystemObject")
scriptDir = fso.GetParentFolderName(WScript.ScriptFullName)
ps1Source = scriptDir & "\锁死你ACE.ps1"
startupPath = CreateObject("Wscript.Shell").SpecialFolders("Startup")

' 复制自身到启动文件夹
vbsDest = startupPath & "\锁死你ACE.vbs"
fso.CopyFile WScript.ScriptFullName, vbsDest, True

' 创建快捷方式指向 PS1(双保险)
Set shell = CreateObject("WScript.Shell")
Set shortcut = shell.CreateShortcut(startupPath & "\锁死你ACE.lnk")
shortcut.TargetPath = "powershell.exe"
shortcut.Arguments = "-WindowStyle Hidden -ExecutionPolicy Bypass -File """ & ps1Source & """"
shortcut.WindowStyle = 7
shortcut.WorkingDirectory = scriptDir
shortcut.Save

MsgBox "安装完成!下次开机自动生效。", vbInformation, "锁死你ACE"

如果这篇文章帮到了你,点个赞让更多兄弟看到 🙏

相关推荐
MicrosoftReactor1 小时前
技术速递|从一次性提示到标准化工作流:如何在 GitHub Copilot CLI 中使用自定义智能体
github·copilot·cli·智能体
OpenIM2 小时前
增量版本同步能力介绍 | OpenIM
开源·github·信息与通信
lpfasd12314 小时前
2026年第24周科技社区趋势周报
github
今夕资源网17 小时前
github开源 网页在线音频转文本工具 node.js+html源码
github·音频转文本·音频转字幕·音频转srt·音频转srt字幕文件·音频转lrc·音频转txt
得要找到一束光18 小时前
git详细命令
git·github
LeahDizon19 小时前
AI Coding 协作实践方案
程序员·github·代码规范
2601_9618752420 小时前
花生十三公考课程|网课|视频
数据库·windows·git·svn·eclipse·github
带娃的IT创业者1 天前
GitHub 热门: coleam00/Archon —— 当 AI Agent 学会自我进化
人工智能·github·开源项目·ai agent·智能体·自我进化
lpfasd1231 天前
2026年第24周GitHub趋势周报
github