这次我们来看一个组合玩法:Cheat Engine + AI 编程。Cheat Engine(简称 CE)是一个开源的内存调试工具,AI 编程工具则让你用自然语言生成和修改代码。这两个东西放在一起,能组成一套适合零基础同学的“底层编程入门课”:用 CE 把“内存地址、指针、偏移量、基址”这些抽象概念变成可视化操作,再让 AI 帮你写脚本、解释报错、生成批量任务。如果你手里只有一台普通 Windows 电脑,没有独立显卡,这套学习路径基本没有门槛。
为什么值得试?核心原因有三个。第一,CE 自带官方教学程序 Tutorial,跟着关卡走,几分钟就能完成第一次内存扫描,看到数值从“游戏里的一行 UI”变成“内存中的一个地址”。第二,AI 编程工具可以让过去半小时才能查明白的 Lua 脚本语法,在几分钟内生成并跑通。第三,这套组合不只是“改数值”,而是让你实际接触进程内存、指针追踪、汇编指令和脚本自动化,对以后学逆向、学 C/C++、学调试都很有帮助。
本文会用一台普通 Windows 电脑,从零开始:安装 CE、选择 AI 编程工具、跑通第一次内存扫描、用指针找到稳定地址、用 AI 生成 CE Lua 脚本,并完成一个简单的批量修改自动化示例。同时会专门说明使用边界和合规要求,哪些场景能玩、哪些场景绝对不能碰。
1. CE + AI 编程核心能力速览
| 能力项 | 说明 |
|---|---|
| 工具组合 | Cheat Engine(开源内存调试工具)+ AI 编程工具(Cursor / Copilot / Claude 等) |
| 核心用途 | 学习内存结构与指针概念、辅助编写调试脚本、自动化内存分析 |
| 操作系统 | Windows;CE 主要支持 Windows,Linux 下可用 Wine 但体验一般 |
| 硬件需求 | 普通 x86_64 CPU、2GB 内存即可运行,不依赖 GPU,无显存要求 |
| 安装方式 | 官网下载安装包,按向导安装 |
| 启动方式 | 桌面图标启动 CE;AI 编程工具按各自官方客户端启动 |
| 脚本接口 | CE 提供 Lua 脚本接口和 Auto Assembler(AA)脚本 |
| 批量任务 | CE Lua 可批量处理地址和重复写入;AI 可批量生成代码框架 |
| 典型场景 | 单机程序调试、CTF/逆向入门、编程辅助、自动化测试学习 |
从表格能看出,这个组合最友好的地方是没有显卡门槛。CE 是轻量桌面工具,市面上主流的 AI 编程助手也是云端服务,本地不需要部署大模型,普通办公本就能跑。
2. 这个组合能解决什么问题
先拆开看两个工具的定位。
Cheat Engine 解决的是“看不进内存”的问题。平时写代码,变量、数组、结构体在内存里怎么排,很难直观感知。CE 附加到一个进程后,可以直接扫描内存中的数值,查看汇编指令,跟踪指针链。当你亲手把一个“游戏里的血量”从 100 改成 9999,并且看着它在内存地址里变化时,“内存布局”这个概念就落地了。
AI 编程解决的是“写不出脚本”的问题。CE 的 Lua 脚本和 AA 脚本本身有一定学习成本,零基础玩家第一次看到writeInteger、getAddress、aobscan这些 API 会很不适应。AI 编程工具可以充当随叫随到的老师:你描述需求,它生成脚本;你贴报错,它解释原因;你问概念,它用例子说明。
两者结合,等于有了“实验器材”和“辅导员”。适合的人群包括:
- 想理解指针、地址、偏移量底层含义的编程新手。
- 想学 CE 但卡在“扫描出地址又变了”这一步的自学者。
- 想用 AI 快速生成自动化调试脚本的测试或开发人员。
- 对逆向工程、CTF 比赛中内存分析感兴趣的进阶玩家。
不适合的人也要说清楚:想修改在线游戏、绕过付费机制、破坏他人数据、在没有授权的软件上做攻击性测试的人,不应该学这套内容。工具本身没有善恶属性,使用边界在人的选择上。
3. 必须遵守的安全边界与合规使用
这篇文章的所有示例,只允许在单机测试程序、自有软件或获得授权的实验环境中进行。CE 自带的教学关卡 Tutorial 就是一个专门用来练习的官方目标程序,学习阶段优先用它,不要急着拿其他程序做实验。
使用 CE 和相关脚本时,遵守以下边界:
- 不要对在线游戏、多人竞技游戏使用内存修改,这通常违反服务条款,可能导致账号封禁,严重时引发法律纠纷。
- 不要用于篡改商业软件、绕过付费系统、窃取用户数据或侵犯他人隐私。
- 不要从未知来源下载所谓“CE 压缩包”“老版本破解包”,这类文件很可能捆绑恶意程序。请从 Cheat Engine 官方网站或官方 GitHub Releases 获取最新版本。
- 在 CTF 比赛、课程实验、公司内部测试等场景使用前,先确认实验环境是否允许调试和修改目标进程。
- 涉及人脸、声音、版权素材、账号数据等内容时,必须确认你拥有合法使用和修改的授权。
合规不是套话,而是工程实践的前提。把 CE 当“内存显微镜”来学底层原理,这个方向是正向且有价值的;把 CE 当“破坏工具”来滥用,既没有技术深度,也会给自己带来麻烦。
4. 环境准备与前置条件
4.1 硬件和系统要求
CE 对系统要求很低,Windows 7 以上系统基本都能跑。建议使用 Windows 10 或 Windows 11,64 位系统体验最完整。CPU 没有特殊要求,内存建议不低于 2GB,磁盘剩余空间 500MB 左右即可。
AI 编程工具方面,如果用 Cursor、GitHub Copilot、Claude 网页版这类云端服务,本地不需要 GPU,不需要配置 CUDA。有人会问“需不需要大显存”,答案是:这个入门课不涉及本地大模型推理,所以不需要考虑显存。
4.2 安装 Cheat Engine
从官网下载最新版本安装包。安装过程中需要注意一点:安装向导可能会默认勾选一些可选组件或推广软件,建议手动取消额外勾选,只保留主程序。安装完成后,桌面会出现 Cheat Engine 图标,同时安装目录里会有一个Tutorial-x86_64.exe,这就是官方教学程序。
启动 CE 后,界面主要分为几块:左侧是“目标进程列表”,中间是扫描区,底部是地址列表,菜单栏里可以打开“Lua Engine”脚本控制台。第一次打开时如果杀毒软件拦截,可以用官网安装包重新安装,并在正规渠道确认文件签名。
4.3 选择并安装 AI 编程工具
AI 编程工具的选择范围很大,常见的有:
- Cursor:基于 VS Code 的 AI 编辑器,免费版就能用,支持聊天、补全、代码生成。
- GitHub Copilot:老牌 AI 编程助手,官方插件支持 VS Code、JetBrains 系列。
- Claude 网页端 / API:适合直接贴报错、问概念,也可以让我先生成完整脚本。
- 通义灵码等国内 AI 编程插件:安装方便,支持中英文,普通用户门槛低。
入门阶段不用纠结“哪个最强”,选一个自己用得顺手的就行。我的建议是:编辑器里装一个 Cursor 或 AI 插件,浏览器里留一个 Claude 或同类对话网页,前者负责写代码,后者负责解答概念。
4.4 准备一个测试目标
学习阶段最好的目标程序是 CE 自带的 Tutorial。它分多个关卡,从精确值扫描、未知初始值扫描、浮点扫描,一直做到指针和汇编代码定位,完全是为 CE 教学设计的。
如果你不想用 Tutorial,也可以自己写一个简单的程序。比如用 Python 写一个循环变量,或者用 C 语言写一个简单的计数器,编译成可执行文件后作为调试对象。自己写的程序没有任何合规风险,还能顺便复习编程知识。
5. 第一次实战:用 CE 完成内存扫描
安装好 CE 后,先跑通最经典的流程:“精确值扫描 + 修改内存”。这个过程能让你理解“变量在内存里是怎么存、怎么找的”。
5.1 附加目标进程
启动 CE,打开 Tutorial。回到 CE 窗口,点击左上角的电脑图标(Select a process),在进程列表中找到Tutorial-x86_64.exe,点击“Open”附加。
注意:如果附加失败,试试右键以管理员身份运行 CE。CE 读取进程内存需要系统权限,权限不足时会失败。
附加成功后,CE 主界面右下角会显示目标进程的信息。
5.2 精确值扫描:Tutorial 第 1 关
Tutorial 第一关会告诉你:给一个 Health 值,初始是 100,点击“Hit me”会减少它。目标是把这个值找出来并改成 999。
操作步骤:
- 在 Tutorial 中记下当前 Health 数值,例如 100。
- 在 CE 的
Value输入框中输入100,Scan Type选择Exact Value,Value Type选择4 Bytes或All。 - 点击
First Scan,左侧会出现大量匹配结果。 - 回到 Tutorial,点击按钮让数值减少,比如变成 99。
- 回到 CE,将
Value改为99,点击Next Scan。 - 重复“修改数值 -> Next Scan”的过程,直到结果只剩 1 到 2 个地址。
- 双击这个地址,添加到下方地址列表。
- 在地址列表里双击
Value列,把数值改成999。 - 回到 Tutorial,点击检查按钮,第一关通过。
这个过程的本质是:通过不断缩小匹配范围,定位到真正保存该数值的内存地址。你会直观看到“变量”不是一个抽象概念,而是某个地址上一段连续字节。
5.3 应对动态地址:指针与偏移量
如果你直接重启 Tutorial,再重复上面的扫描,会发现上一次找到的地址已经失效。这就是动态地址:操作系统每次给进程分配的内存基址可能不同,游戏里很多对象也是运行时动态创建。
CE 的解决方案是“指针扫描”。找到当前数值的地址后,右键点击该地址,选择Find out what writes to this address,然后回到 Tutorial 点击按钮改变数值。CE 会捕获到执行写入的汇编指令,例如mov [rax+18], edx。这里的rax通常指向某个对象,18是偏移量。
接下来右键点击地址,选择Pointer scan for this address,CE 会扫描指向该地址的指针链。扫描完成后,找到一条以绿色显示的地址,那就是静态基址。把“基址 + 偏移量”组合起来,就能得到一个稳定地址,即使重启进程也能定位到正确位置。
对初学者来说,指针这个概念第一次变得“看得见”。理解指针链时,可以让 AI 帮你画一个简单的数据关系图,也可以这样问 AI:“请用通俗的语言解释什么是指针、基址和偏移量,最好结合一个游戏角色属性的例子。”
5.4 用 Lua 脚本写入数值
地址找到后,可以在菜单栏点Table -> Lua Engine打开 Lua 控制台,直接执行脚本。这个脚本读取当前附加进程,然后向指定地址写入新值:
-- 在 CE 的 Lua 控制台执行 -- 需要先附加目标进程 local pid = getOpenedProcessID() if pid == 0 then print("请先附加目标进程") return end -- 地址来自前面扫描结果,请替换为你自己的地址 local addr = 0x017A2B3C local newValue = 999 writeInteger(addr, newValue) print(string.format("已写入地址 %X : %d", addr, newValue))执行后,如果地址有效,Tutorial 中的数值会被改掉。这个示例体现了 CE 脚本化的基本思路:附加进程 → 定位地址 → 写入数据。
需要说明的是,addr要替换成你自己扫描出来的地址,不能直接运行。CE 的 Lua API 在不同版本里有些差异,以帮助文档中的Lua API说明为准。
6. 用 AI 编程工具辅助学习与开发
现在把 AI 编程工具引入学习流程。AI 能解决的核心问题有三个:解释概念、生成脚本、调试报错。
6.1 AI 适合解决哪些问题
在 CE 学习过程中,你可能会遇到这些场景:
- 看到
mov [rax+18], edx这样的汇编代码,不知道什么意思。 - 想写一个脚本批量修改多个地址,但不知道 CE Lua API 怎么用。
- 脚本运行时报错,比如
writeInteger参数不对,不知道哪里写错。 - 想理解“锁定数值”和“自动写入”的区别,但教程讲得不够细。
这些问题非常适合丢给 AI。因为它们是标准技术问题,AI 有大量训练数据支撑,回答的准确率很高。
6.2 提示词模板
用好 AI 编程工具的关键是提示词。下面是我常用的模板思路:
你是 Cheat Engine 脚本专家。我当前附加的进程是 tutorial-x86_64.exe,已经通过扫描找到一个 4 字节地址,值是 100。请帮我写一个 Lua 脚本: 1. 将该地址的值改为 500; 2. 每隔 3 秒自动写入一次; 3. 输出每次写入结果。 等我提供具体地址后,脚本中请用变量保存地址,方便我替换。写提示词时注意三点:角色设定、任务目标、输入条件。告诉 AI 你用的是 CE Lua 环境,它会优先输出可运行的 CE 脚本,而不是普通 Python 代码。
6.3 让 AI 解释概念
如果你完全不懂指针,可以这样问:
我是编程零基础。请用生活化的例子解释:指针、基址、偏移量是什么?为什么调试游戏时,一个角色血量的内存地址每次启动都会变化?AI 通常会给出类似“指针就像门牌号,基址是路名,偏移量是房间号”的解释。虽然不完全严谨,但对入门者建立起第一印象很有帮助。
6.4 让 AI 生成 CE 脚本
在 5.4 节的 Lua 脚本基础上,让 AI 帮你扩展功能。例如:
请帮我把上面的 Lua 脚本改成批量模式:有一个地址列表,每个地址都写入一个新值;写入前先判断进程是否已附加;如果写入失败,打印错误信息并跳过。AI 生成代码后,不要直接运行,先看一遍。遇到不理解的地方继续提问:“这一行writeInteger(addr, newValue)的作用是什么?可不可以改成writeFloat?”
6.5 让 AI 调试报错
CE Lua 控制台报错时,直接把报错信息和相关脚本一起贴给 AI:
我在 CE Lua 控制台运行这段脚本: <粘贴脚本> 报错: <粘贴报错信息> 请帮我找出错误原因并修正。这个工作流比手动翻文档高效很多。我也是这样建议学员的:AI 是辅导员,不是代写机器。每次让 AI 生成代码后,必须要求它解释关键行,确保你理解后再拿去用。
7. 接口 API 与批量任务自动化
CE 的 Lua 接口就是它的“API”。通过 Lua,你可以实现自动附加进程、按地址列表批量写入、定时锁定数值、记录变化趋势等任务。这套能力在学习自动化测试和脚本编程时非常有用。
7.1 CE 常用 Lua API
入门阶段常用的几类:
| 函数 | 作用 |
|---|---|
getOpenedProcessID() | 获取当前附加进程的 PID |
openProcess(pid) | 打开指定 PID 的进程 |
writeInteger(address, value) | 向指定地址写入 4 字节整数 |
writeFloat(address, value) | 向指定地址写入浮点数 |
readInteger(address) | 从指定地址读取 4 字节整数 |
getAddress("module+offset") | 解析模块名+偏移量的地址 |
具体规则以 CE 帮助文档中的 Lua API 章节为准。AI 在生成脚本时一般会主动使用这些函数,你只需要提醒它“按 CE 官方 Lua API 生成”。
7.2 批量修改多个地址
假设你想同时修改一组地址的数值,用 Lua 循环是最直接的做法:
-- 批量修改示例:对多个地址写入同一个值 local addresses = { 0x017A2B3C, 0x017A2B40, 0x017A2B44, } local newValue = 888 for i, addr in ipairs(addresses) do writeInteger(addr, newValue) print(string.format("地址 %X 已写入 %d", addr, newValue)) end这个脚本展示了“把重复操作编程化”的思路。如果地址数量很大,可以放在一个表里,或者从外部文件读取。AI 可以帮你把“从文本文件读取地址列表”的逻辑补全。
7.3 定期写入与状态监控
如果你需要让某个地址每几秒保持一个值,可以写一个循环:
-- 每隔 3 秒写入一次,按 Esc 结束 local addr = 0x017A2B3C local value = 500 while true do writeInteger(addr, value) print("已写入 ", value) sleep(3000) -- 单位:毫秒 end这个功能等同于 CE 地址列表里的“Active 锁定”,但脚本方式更灵活,可以加上条件判断、日志记录和异常处理。
再次强调:这套自动化能力只应在你自己编写或获得授权的测试程序上使用。不要在在线游戏、他人软件上运行任何自动化写入脚本。
7.4 用 AI 生成外部监控脚本
除了 CE 内置的 Lua,AI 还可以帮你生成 Python 外部监控脚本。比如说,你想用 Python 读取某个 CE 扫描到的地址值,并输出成日志。常见库是pymem。但这类外部读写内存的代码确实容易被滥用,所以请保证目标进程是你自己编写的程序,或者明确允许调试的教学程序。
如果你确定目标合规,可以让 AI 生成类似框架:
请用 Python 写一个内存读取脚本:使用 pymem 附加到指定进程,读取一个 4 字节地址的值,每秒打印一次,直到用户终止。AI 会生成对应代码。你只需要把 CE 扫描得到的地址替换进去就行。这个方向适合想深入学 Python 和自动化测试的读者。
8. 资源占用与性能观察
CE 本身是轻量级工具,资源占用非常低。正常启动后,CE 进程的内存占用只有几十 MB 到一两百 MB,对现代电脑几乎无感。它不调用 GPU,没有显存占用,这一点在本文开头就说过。
真正影响性能的是扫描过程。当你对一个大型进程执行First Scan时,CE 会读取目标进程的内存页,此时 CPU 会有短暂波动,扫描耗时取决于目标进程的内存大小和扫描类型。观察性能有几种方法:
- 打开任务管理器,分别查看 CE 进程和测试进程的 CPU、内存占用。
- 在 CE 左下角观察扫描耗时和匹配结果数量。
- 如果扫描一次耗时太长,可以把
Value Type收窄到你需要的类型,比如只扫4 Bytes。 - 知道地址范围后,可以在
Memory Scan Options里设置扫描范围,减少无效工作。
AI 编程工具的占用则取决于客户端类型。VS Code 类编辑器加上 AI 插件,内存占用一般比空白编辑器多几百 MB,属于正常范围。云端对话网页只占用浏览器内存,你的电脑不需要为运行大模型承担压力。
这里有一个实用经验:第一次扫描前先关闭不必要的程序,给系统留出余量。特别是当你用 CE 调试大型程序时,内存不足会拖慢整个流程。
9. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| CE 附加进程失败 | 权限不足 | 提示错误时查看具体信息 | 右键以管理员身份运行 CE |
| 扫描结果为 0 | 数值类型选错 | 确认目标数值是整数还是浮点数 | 切换 Value Type 为4 Bytes、8 Bytes或Float |
| 地址每次重启都变 | 动态地址 | 重新扫描并观察地址变化 | 使用指针扫描,找绿色基址 |
| 修改值后目标程序崩溃 | 写入地址错误或类型不符 | 检查地址是否有效、写入类型是否匹配 | 回滚操作,改用只读测试,先确认地址类型 |
| AI 生成的 Lua 脚本运行报错 | API 名称或版本不匹配 | 复制报错信息给 AI 看 | 让 AI 按 CE 官方 Lua API 修正 |
| 杀毒软件拦截 CE | 误报或安装包来源不明 | 确认安装包来自官网 | 使用官网最新版并恢复被隔离的文件 |
| 指针扫描结果太多 | 扫描深度和指针数量设置过大 | 调低最大偏移量、递归深度 | 使用更精确的偏移范围重新扫描 |
| 批量脚本卡住 | 脚本死循环或地址无效 | 在循环中加入打印和超时 | 检查地址列表,添加 sleep 和异常处理 |
实际遇到问题时的排查顺序建议是:先看 CE 附加进程是否成功,再看扫描类型是否正确,最后检查地址和值类型。大多数入门问题都出在这三步。
10. 最佳实践与学习路径
这里给出一条可复制的学习路径,按顺序走下来会比较顺:
- 跑通 CE 官方 Tutorial 前 6 关。重点理解精确扫描、未知初始值扫描、浮点数扫描、代码找字节、指针和指针扫描。
- 让 AI 解释每关原理。每过一关,都要能用一句话说清楚“这一关在做什么”,说不清楚就问 AI。
- 用自己的测试程序练习。自己写一个简单的程序,放一个变量,用 CE 扫描它,再尝试用 Lua 读取和修改。
- 让 AI 生成脚本并阅读。从“单地址修改”开始,逐步增加批量、定时、日志功能。
- 保留最小可用配置。把常用的 CE Lua 脚本存成一个模板文件,方便以后复用。
- 分目录管理素材。模型文件、输入素材、输出结果分开存放;脚本也按日期或功能建立版本记录。
- 控制实验范围。每一项技术验证都限定在授权环境中进行,不要随手拿同事的软件或公网服务做实验。
给 AI 写提示词时,也可以引入“最小可行产品”思路:先让 AI 生成一个能跑的最小脚本,跑通后再逐步加功能。不要一上来就要 AI 生成一个几百行的完整工具,那样出错难定位,AI 自己也容易蒙。
11. 总结与下一步
这个组合最值得尝试的点在于:它把抽象的内存概念变成一个可见、可操作、可验证的过程。你不需要拥有高端显卡,不需要准备大型数据集,只要一台普通 Windows 电脑,装一个 CE,配一个 AI 编程助手,就能开始动手实验。
最先应该验证的功能是:用 CE 扫描 Tutorial 第一关的数值,并成功修改它。这一步通过后,你再学习指针、Lua 脚本和批量任务,都会顺利很多。
最容易踩的坑有三个:第一是 CE 没有以管理员身份运行,导致附加失败;第二是扫描类型选错,导致结果为零;第三是拿在线游戏做实验,这不仅会封号,还可能引发法律风险。前两个问题查报错就能解决,第三个问题靠自觉。
后续可以继续扩展的方向包括:学习 Auto Assembler 脚本、分析汇编指令、把 CE 与 Python 自动化测试框架结合、研究游戏开发中常见的内存分配方式。你会发现,这个从“改数值”开始的入门路径,最终通向的是操作系统、编译原理和调试器设计等更硬核的知识。