杰瑞科技汇

Cheat Engine教程怎么用?能教我吗?

重要声明:学习与道德

在开始之前,必须强调:

Cheat Engine教程怎么用?能教我吗?-图1
(图片来源网络,侵删)
  1. 仅供学习:本教程旨在帮助你理解游戏内存修改的原理,用于学习和研究,请勿在多人在线游戏(如《英雄联盟》、《CS:GO》、《原神》等)上使用Cheat Engine作弊,这会导致你的账号被永久封禁
  2. 风险自负:使用Cheat Engine修改单机游戏可能会导致游戏崩溃、存档损坏或出现意想不到的错误,请务必备份你的游戏存档
  3. 尊重开发者:支持你喜欢的游戏开发者,购买正版游戏。

第一部分:基础入门

什么是Cheat Engine?

Cheat Engine(作弊引擎)是一个开源的内存扫描和调试工具,它的主要功能是:

  • 扫描和修改内存:找到游戏中存储数值(如金钱、生命值、弹药)的内存地址,并实时修改它们。
  • 代码注入:向游戏进程中注入自定义的代码,实现更复杂的功能(如无限无敌、自动攻击)。
  • 代码查找:通过分析汇编代码,找到控制游戏逻辑的关键点。
  • 调试:像开发者一样调试游戏,观察函数调用和变量变化。

安装与界面

  • 下载:从官方网站 https://www.cheatengine.org/ 下载最新版本。
  • 安装:直接运行安装程序,一路“Next”即可,建议不要安装任何附带的可选软件。
  • 启动:首次运行时,可能会被杀毒软件误报,这是因为CE的行为类似于病毒(注入进程、读写内存),你需要添加CE到杀毒软件的白名单,或者在受控环境中运行。

主界面介绍

  • 进程选择器:选择你要修改的游戏进程,你可以点击“闪烁的电脑”图标,或者在列表中手动选择。
  • 扫描区域:在这里输入你已知的数值(比如你当前有1000金币),然后点击“初次扫描”或“再次扫描”。
  • 地址列表:这里会显示所有匹配的内存地址,双击地址可以将其添加到下方的“受监视的地址”列表。
  • 受监视的地址/数值列表:这里是你修改数值的核心区域,你可以在这里添加、修改、冻结地址。
  • 工具栏:包含各种功能,如内存查看器、汇编器、堆栈查看器等。

第二部分:核心功能详解

数值扫描(最基础的功能)

这是CE最强大的功能之一,让你能找到游戏中几乎任何可见的数值。

实例:修改单机游戏里的金钱

Cheat Engine教程怎么用?能教我吗?-图2
(图片来源网络,侵删)

假设一个游戏,你一开始有1000金币

  • 步骤1:启动游戏和CE

    1. 启动你的游戏。
    2. 打开Cheat Engine,在进程列表中选择你的游戏进程(game.exe)。
  • 步骤2:初次扫描

    1. 在CE的“扫描区域”输入 1000
    2. 选择数据类型(通常是 4字节,这是最常用的)。
    3. 点击 “初次扫描” (First Scan)

    CE会开始扫描游戏进程的所有内存,寻找值为1000的地址,这个过程可能需要几秒到几分钟,取决于你的内存大小。

    Cheat Engine教程怎么用?能教我吗?-图3
    (图片来源网络,侵删)
  • 步骤3:再次扫描

    1. 回到游戏中,花掉或获得一些金币,比如现在你变成了950金币
    2. 切回CE,在“扫描区域”输入新的数值 950
    3. 点击 “再次扫描” (Next Scan)

    CE会从上一次找到的结果中,筛选出值变为950的地址,现在地址列表中的结果应该会少很多。

  • 步骤4:锁定地址

    1. 重复步骤3几次,每次改变游戏中的金钱值,然后在CE中“再次扫描”。
    2. 当地址列表中只剩下一个或几个地址时,就说明你找到了目标。
    3. 双击这个地址,它会自动添加到下方的“受监视的地址”列表。
    4. 在下方的列表中,找到你添加的地址,勾选 “激活” (Active) 选项,或者直接点击 “冻结” (Freeze) 旁边的锁定图标。

    无论你在游戏中怎么花钱,金钱值都会被锁定在你设定的值!

数据类型说明

  • 4字节:最常见,用于整数(如金钱、生命值、弹药数)。
  • 2字节:用于较小的整数。
  • 浮点数:用于带小数的数值(如经验值百分比、移动速度)。
  • 字节:用于0-255的数值。
  • 字符串:用于文本(如玩家名字、对话内容)。
  • 字节数组:用于扫描一串特定的字节,用于更高级的查找。

指针扫描(解决数值消失问题)

你找到的地址在你重新进入关卡、读档或死亡后会改变,导致你的修改失效,这是因为游戏使用了指针

  • 什么是指针? 指针就像一个“地址的地址”,它不直接存储你的金钱值,而是存储一个内存地址,而这个地址才真正存储着你的金钱值,每次游戏加载时,指针本身可能会改变,但它指向的那个结构(金钱值)的位置是相对固定的。

  • 如何找到指针? 假设你通过数值扫描找到了金钱地址,但重启游戏后它变了。

    1. 添加地址到列表:将找到的地址添加到“受监视的地址”列表。
    2. 右键 -> 查找访问代码:在列表中右键点击你的地址,选择“查找访问代码”。
    3. 触发访问:在游戏中花费或获得金钱,这会触发一个断点,CE会暂停游戏并显示是哪段代码(汇编指令)在访问这个地址。
    4. 分析代码:在弹出的窗口中,你会看到类似 mov eax, [ecx+8] 的指令。[ecx+8] 就是一个指针表达式。ECX 寄存器里存放的是指针的地址。
    5. 查找指针:右键点击 ECX,选择“在内存中查找” -> “访问过的地址”,然后点击“确定”。
    6. 指针扫描:在新的窗口中,点击“扫描”,CE会开始寻找指向ECX的指针,扫描完成后,它会给你一个“指针路径”,game.exe+123456 -> +8
    7. 使用指针:你不需要再扫描那个不稳定的地址了,你可以直接在CE的地址列表中输入 game.exe+123456,然后在其偏移量+8处修改金钱值,这样即使重启游戏,只要game.exe+123456这个基址不变,你的修改就依然有效。

扫码功能(扫描未知数值)

有时候你不知道一个数值具体是多少,但知道它变大了或变小了。

  • 实例:找到血量
    1. 不输入任何值,直接点击“扫描”,获取所有内存地址的快照。
    2. 回到游戏中,受到伤害,血量减少。
    3. 切回CE,选择 “较少的值” (Decreased value),然后点击“再次扫描”。
    4. 重复几次,地址列表就会精简到只剩几个,其中一个很可能就是你的血量。

第三部分:高级功能

汇编器与代码注入

这是CE最强大的功能,可以实现数值扫描做不到的事情。

  • 什么是汇编? 汇编是CPU能直接理解的低级语言,修改汇编代码就是直接修改游戏的底层逻辑。

  • 常用汇编指令

    • MOV:移动数据。MOV EAX, 100 将100赋值给寄存器EAX。
    • ADD:加法。ADD EAX, 5 将EAX的值加5。
    • SUB:减法。SUB EAX, 5 将EAX的值减5。
    • JMP:跳转。JMP address 直接跳转到指定地址执行。
    • CMP:比较。CMP EAX, 0 比较EAX和0是否相等。
    • JE / JNE:如果相等/不相等则跳转。
  • 实例:制作无限生命

    1. 使用数值扫描找到你的生命值地址。
    2. 右键点击该地址,选择“将地址分配到汇编器”。
    3. 在弹出的汇编器窗口中,你会看到类似 mov [eax+10], ecx 的指令,这是游戏在更新你生命值的代码。
    4. NOP(无操作):最简单的方法是选中这行代码,然后点击工具栏的 NOP 按钮,NOP会替换掉原指令,使这条指令“什么都不做”,这样游戏就无法再修改你的生命值了。
    5. 代码注入:更灵活的方法是点击 “代码注入” (Code Injection) 按钮,选择一个游戏模块(如 game.exe),然后输入你自己的汇编代码,注入 MOV [eax+10], 100,这样你的生命值就会被强制设置为100。

Auto Assembler (自动汇编器)

这是一个强大的脚本工具,可以自动执行复杂的任务,如编写脚本、创建 trainers(外挂)。

  • 功能
    • 定义指针:通过脚本定义指针,方便以后使用。
    • 创建Cheat Table (CT文件):将你的所有修改(地址、指针、汇编脚本)保存为一个.CT文件,下次打开时,只需加载这个文件,就能一键应用所有修改。
    • 编写复杂脚本:实现条件判断、循环等逻辑。

脚本与Lua

CE内置了Lua脚本引擎,你可以用Lua语言编写更高级、更自动化的功能。

  • 如何使用

    1. 在CE中,点击工具栏的“Lua脚本”图标。

    2. 你可以在这里编写Lua代码,

      -- 这是一个简单的Lua脚本,它会每隔100毫秒将金钱值设置为999999
      local moneyAddress = 0x12345678 -- 替换成你的实际地址
      function updateMoney()
          writeInteger(moneyAddress, 999999)
      end
      -- 创建一个定时器
      createTimer(updateMoney, 100)
    3. 点击“执行”按钮来运行脚本。


第四部分:实战演练

假设我们要修改一个简单的游戏《植物大战僵尸》(以修改阳光为例)。

  1. 启动游戏和CE:打开PVZ,选择一个关卡,让游戏运行起来,打开CE,选择 PlantsVsZombies.exe 进程。
  2. 数值扫描:假设你当前有 150 阳光。
    • 在CE中输入 150,数据类型选 4字节,点击“初次扫描”。
    • 收集一些阳光,变成 250
    • 在CE中输入 250,点击“再次扫描”。
    • 再花掉一些阳光,变成 200
    • 在CE中输入 200,点击“再次扫描”。
    • 重复几次,直到地址列表只剩下几个地址。
  3. 测试并锁定:双击剩下的地址,添加到下方列表,修改其值为 99999,你会发现游戏中阳光瞬间变多,勾选“冻结”,锁定它。
  4. 寻找指针(可选):退出当前关卡,重新进入,你会发现阳光地址又变了,这时你需要用“指针扫描”功能来找到稳定的指针路径,并保存为脚本。
  5. 保存为CT文件:点击CE的“文件” -> “保存为”,将你的修改保存为 MyPVZCT.ct,下次打开时,只需加载这个文件,就能一键修改阳光。

第五部分:常见问题与技巧

  • Q: 扫描结果太多,无法精简?

    A: 尝试使用“模糊扫描”或“精确值/浮点/双字”等选项,或者使用“扫描变化值”功能。

  • Q: 修改了没反应,或者游戏闪退?

    A: 1. 数据类型可能选错了,2. 你可能修改了只读地址,3. 游戏有反作弊机制,检测到内存被修改就崩溃。

  • Q: 如何找到结构体/类成员?
    • A: 找到一个已知的成员地址后,右键 -> “查找访问代码”,观察汇编指令中的偏移量。[eax+0x10]+0x10 就是下一个成员的偏移。
  • Q: 什么是AOB扫描?

    A: AOB (Array of Bytes) 扫描,也叫字节数组扫描,当你不知道一个具体数值,但知道一段代码的“签名”时,可以用它来找到这段代码,这在编写高级脚本时非常有用。

Cheat Engine是一个非常强大的工具,但它的强大也伴随着复杂性,学习CE是一个循序渐进的过程:

  1. 从数值扫描开始,这是基础中的基础。
  2. 掌握指针,让你的修改更稳定。
  3. 学习汇编,解锁CE的全部潜能。
  4. 使用脚本和CT文件,让你的工作自动化。

最重要的是保持耐心和好奇心,多动手实践,多分析内存中的变化,祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇