peUgnMD.png

 找回密码
 立即注册

QQ登录

只需一步,快速开始

peUfSYR.png
查看: 32|回复: 0

Day 2 -- 精确狙击:如何一发命中内存中的数值

[复制链接]

861

主题

13

回帖

2757

积分

管理员

积分
2757
发表于 2026-3-29 16:26:35 | 显示全部楼层 |阅读模式
Day 2 -- 精确狙击:如何一发命中内存中的数值
Cheat Engine 从入门到住院 · Day 2

想象你是一个狙击手,目标是一栋大楼里的某个人。你知道他的身高是 175cm,但这栋大楼有一百万个房间。

怎么办?先用身高筛一遍,排除掉 99% 的人。然后让目标动一下——比如他蹲下来变成了 160cm——你再用新身高筛一遍。两三轮下来,目标就无处可藏了。

这就是 CE 精确扫描的核心思路。今天我们用 CE Tutorial 的 Step 2 来实战。

━━━━━━━━━━━━━━━━━━━━

本文你将学到

  • 精确数值扫描的原理和流程
  • 如何通过多次扫描缩小范围
  • Value Type(数值类型)的选择
  • 如何修改找到的数值
    阅读时间:10 分钟 | 实操时间:20 分钟 | 难度:入门

    ━━━━━━━━━━━━━━━━━━━━

    CE Tutorial Step 2:找到血量并改成 1000

    打开 CE Tutorial,进入 Step 2。窗口下方显示:
    1. Health: 100
    复制代码

    还有一个 "Hit me" 按钮。每点一次,血量就会减少一个随机值。

    你的任务:找到这个血量在内存中的地址,把它改成 1000。

    ━━━━━━━━━━━━━━━━━━━━

    第一步:确定搜索参数

    在 CE 主界面的扫描区域:

  • Value:输入
    1. 100
    复制代码
    (当前血量)
  • Scan Type:选择
    1. Exact Value
    复制代码
    (精确值)
  • Value Type:选择
    1. 4 Bytes
    复制代码
    (这是最常用的整数类型)

    为什么选 4 Bytes?因为绝大多数游戏用 32 位整数(4 字节)存储血量、金币这类数值。4 字节能表示的范围是 0 到 4,294,967,295(无符号)或 -2,147,483,648 到 2,147,483,647(有符号),对于游戏数值来说绰绰有余。

    如果你不确定类型,4 Bytes 几乎总是正确的第一选择。

    第二步:首次扫描

    点击 First Scan

    CE 会扫描 Tutorial 进程的整个内存空间,找出所有值等于 100 的 4 字节整数。

    结果?左边列表里出现了成千上万个地址。这很正常——内存里值为 100 的地方多了去了,不是只有血量才等于 100。

    这就像在整栋大楼里喊"身高 175 的人举手",举手的人可能有几千个。

    第三步:改变数值,再次扫描

    回到 Tutorial 窗口,点击 Hit me

    血量变了,比如变成了 96。

    回到 CE,在 Value 框里输入新的值
    1. 96
    复制代码
    ,然后点击 Next Scan

    这一步的意思是:在上一次的结果中,找出现在值等于 96 的地址。那些之前等于 100 但现在不等于 96 的地址就被淘汰了。

    结果列表一下子缩小了很多。

    第四步:重复,直到锁定目标

    再点几次 Hit me,每次记住新的血量值,输入 CE 再 Next Scan。

    两三轮之后,列表里应该只剩下 1-2 个地址了。这就是你的目标。

    如果剩下多个地址不确定哪个是,可以逐个双击添加到下方的地址列表,然后尝试修改——改对的那个就是。

    第五步:修改数值

    在下方的地址列表中,双击"Value"那一列,输入
    1. 1000
    复制代码
    ,点击 OK。

    回到 Tutorial 窗口,血量变成了 1000。点击 "Next" 按钮,Step 2 通关。

    就是这么简单。

    ━━━━━━━━━━━━━━━━━━━━

    原理解析:内存里的数值长什么样

    计算机内存可以想象成一个巨大的 Excel 表格,每一行有一个"地址"(行号)和一个"值"。程序运行时,变量就存储在这些格子里。
    1. 地址          值
    2. 0x00A1B2C0    100    <-- 可能是血量
    3. 0x00A1B2C4    500    <-- 可能是金币
    4. 0x00A1B2C8    3      <-- 可能是等级
    复制代码

    CE 的工作就是:扫描整个表格,找出值等于你指定数字的所有行。

    当血量从 100 变成 96 时,真正存储血量的那个地址的值也会从 100 变成 96。而其他碰巧等于 100 的地址不会跟着变。利用这个差异,你就能一步步缩小范围。

    这个方法在数学上叫"交集筛选"——每次扫描得到一个集合,取所有集合的交集,最终只剩下目标。

    ━━━━━━━━━━━━━━━━━━━━

    Value Type 选择指南

    不同的数值类型占用不同的字节数,选错了类型就找不到目标:

    | 类型 | 字节数 | 范围 | 适用场景 |
    |------|--------|------|----------|
    | Byte | 1 | 0-255 | 小数值,如等级、物品数量 |
    | 2 Bytes | 2 | 0-65535 | 中等数值 |
    | 4 Bytes | 4 | 0-约42亿 | 最常用,血量/金币/经验 |
    | 8 Bytes | 8 | 极大范围 | 大数值,某些 64 位游戏 |
    | Float | 4 | 浮点数 | 小数,如坐标/速度 |
    | Double | 8 | 高精度浮点 | 高精度小数 |
    | String | 不定 | 文本 | 角色名等字符串 |

    经验法则:不确定就选 4 Bytes。如果找不到,试试 Float。再找不到,考虑 2 Bytes 或 Double。

    ━━━━━━━━━━━━━━━━━━━━

    进阶技巧:冻结数值

    找到地址后,除了修改数值,你还可以冻结它。

    在地址列表中,勾选地址前面的小方框。这会让 CE 持续不断地把你设定的值写回去,即使游戏试图修改它。

    比如把血量改成 1000 然后冻结,游戏怎么扣血都没用,因为 CE 在以极高的频率把 1000 写回去。

    这就是所谓的"锁血"——游戏扣了血,CE 立刻写回来,快到你根本看不出血量变过。

    ━━━━━━━━━━━━━━━━━━━━

    常见问题

    Q:首次扫描结果太多怎么办?

    A:这是正常的。多点几次 Hit me,每次用新值做 Next Scan,结果会快速收敛。通常 3-4 轮就够了。

    Q:Next Scan 后结果变成 0 了怎么办?

    A:说明你输入的值不对,或者选错了 Value Type。点 New Scan 从头来过。最常见的原因是血量值看错了,或者游戏用的不是 4 Bytes 整数。

    Q:找到多个地址,不确定哪个是真的?

    A:全部添加到下方列表,逐个修改。改完后回游戏看效果——让血量真正变化的那个就是。有时候会有"影子地址"(显示用的缓存),改了没有实际效果。

    ━━━━━━━━━━━━━━━━━━━━

    小结

    今天我们掌握了 CE 最基础也最核心的技能——精确数值扫描:

  • 输入当前已知数值,首次扫描
  • 让数值变化,用新值做 Next Scan
  • 重复几轮,锁定目标地址
  • 修改或冻结数值

    这个流程你会在整个 CE 使用过程中反复用到,就像外科医生的"切开-分离-缝合"一样基础。

    但现实没这么简单。如果你根本不知道数值是多少呢?比如一个血条,没有显示具体数字,只有一根不断变短的横条?

    明天 Day 3,我们来挑战"未知初始值"的搜索——大海捞针的真正开始。
  • 您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    冒险岛079
    扫码关注微信公众号

    Archiver|手机版|小黑屋|风叶林

    GMT+8, 2026-5-4 22:32 , Processed in 0.153856 second(s), 20 queries .

    Powered by 风叶林

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表