013Cheat Engine教程笔记

🎰-计算底层

1. CPU 本质 =只能做简单事情的逻辑电路=只能读 01 指令运行 01 数据=>计算机运行游戏=>内存存指令+数据

  • Cpu 本质
    • =只能做简单事情的逻辑电路=只认识 0、1
    • 用指令控制 Cpu, 读写数据
    • =只能一条条执行指令,根据指令读取数据
    • =指令和数据也是 0、1
  • 数据编码
    • 102 整数,负数,小数
  • 指令编码
    • 操作 6 位操作符
    • 位置 4 位存+取位置符
  • 一串编码分辨不出指令还是数据
    • (差不多,人和 cpu 都分辨不出)
    • 上下文判断
    • 数据修改、指令修改是差不多的
  • CPU 处理指令和数据就是全部功能了
    • 内存存数据和指令,用完放回去
    • 原来是由于硬件觉得上层组成部分

2. CE 工作原理=找内存中指令和数据位置,修改

  • 找到主角血量在内存中存储位置,冻结内容,就可以锁定血量
    • 或者不减血量
    • 原来 mod 都是这样做的
  • 工作原理
    • 监控一个 app 全部内存,任意修改内容
  • 使用思路
    • 数据修改
    • 指令修改
  • 通用步骤
    • 去哪里
    • 干什么

3. 让二进制更简洁=>显示十六进制

  • 二进制 01
    • 长度进行切分
      • 1 位/比特/bit
      • 8 字节/Byte/B
    • 十六进制 0-9 A-F
      • 一个十六进制=0-15=4 比特
        • 15=111 1111
      • 一个字节=2 个十六进制
      • int 4 字节 FFFF 0000
      • 让二进制编码更简洁的写法

📱-CE教程-下载-内存扫描,一次性修改数值

  • 去哪里:内存扫描器
  • 精确数值修改:干什么:CT
    • 一次性
    • 修改数值
    • 冻结位置
  • 查找
    • 未知数值修改:
      • 初次扫描类型:未知初始值(wins 大部分数值是 4 bytes)
      • 再次扫描:减少的数值
      • 打一次扫一次,数值在 0-500 之间的就是
      • 好像打游戏 hhh
    • 浮点数查找-修改-防改
      • 初次类型选:单精、双精 0-100 之间
      • 不断减少的数值
    • 不断变动地址数值查找-修改
      • 代码查找:
  • 实践盐河避难所
    • 数据类型:all
    • 精确值查找:属性界面
    • 血量:同时变化的
    • 显示的血量:缓慢变化又回去

🎰-计算机组成原理

1. 内存布局 =指针全局变量+连续存储堆或栈

  • 内存布局=指针(全局变量)+连续存储(堆或栈)
    • 从下往上看 从小到大
    • 指令 Text
    • 数据:全局变量、堆、栈(数据位置会发生变化,使用之后会回收)
    • 游戏是靠指针指向数据位置,知道去哪里找的
      • 追溯

📱-数据修改--追溯指针全局变量-记得锁定

1. 第五关方案

步骤
* Cheat Engine Tutorial Guide (x64) - Cheat Engine
* 调试器Help File:Debugger options - Cheat Engine
* 需要写指令。所以我们将寻找类似以下其中之一的东西
* mov [**],**
* 放到[ ** ]地址上
* MOV  eax, [ebx]把寄存器 ebx 数值的作为地址,把该地址的值赋予给 eax,比如 ebx=69 f 2 c 0,则相当于 mov eax,[69 f 2 c 0]
* add [**],**
* sub [**],**
* *** [**],**
* 汇编器Assembler - Cheat Engine 总结 The AI workspace that works for you. | Notion
* 编译器指令Assembler:Commands - Cheat Engine
* mov 目标,源
* 将第二个操作数(源操作数)复制到第一个操作数(目标操作数)
* 立即数、通用寄存器、段寄存器或内存位置
* 通用寄存器、段寄存器或内存位置,
* 两个操作数必须大小相同,可以是字节、字或双字
* 替换按钮会用 NOP 指令替换那一行代码。Assembler:Commands:NOP - Cheat Engine

2. 手动追溯

  • 首次查找
    • 找指针位置,看内容,知道血量地址
    • 指针也是数据,全局变量=>内存扫描器
      • 类型:4/8 字节=>看之前血量的地址( 8/ 2=4 位)
    • Hex 16 进制
  • 1直接搜地址
    • 但可能找到开头,出现位置偏移
  • 右键
    • 什么指令访问地址(访问=读+写)

3. 第六关指针 指令=数据来源+结果位置(存+取)

  • 过程Cheat Engine Tutorial Guide (x64) - Cheat Engine
    • 6 密码: 098712
    • 偏移量是 0
      • eax 的值放到 rdx 位置处,[ rdx +2 ] 就是偏移量是 2(16 进制位)
    • 精确初次扫描 16 进制(8 字节)
    • 双击地址,增加偏移量
      • 右键数值以 10 进制显示,修改成 5000

4. 步骤 8 多指针 525927

  • 手动追溯还是看地址值---改值
    • 记偏移量
    • 也可以 0 x 表示 16 进制
    • 改变指针可以看到值变化,静态指针对应的值不变
      • 右键可以看到静态指针地址
  • 自动追溯 --改指针重进---二次找值地址
    • 再次扫描 --真游戏可能扫几次
    • 指针地图
    • 最大偏移量 4 k 足够
    • 七-九级
    • 更改指针之后再次扫描

5. wiki 值类型指针类型

  • Pointers - Cheat Engine
    • 值类型Value Types - Cheat Engine
      • 类型=怎么使用决定其类型=都是字节存储
        • 在内存中实际上并没有类型,所有值类型都以字节形式存储
        • 决定其类型=进程如何使用这些值
      • 位(Bit) 无符号整数
      • 字节 1 Byte=8 Bit 有符号或无符号整数
        • 就像是基本数据单位
        • 可以表示256种不同的值(从 0000000011111111
        • 一个字节可以存储一个ASCII字符。
      • 字 Word =2 Byte=16 Bit 有符号或无符号整数
        • (CPU 是16 位时制定,尽管 64 位自然单位是 8 字节,为了最大兼容性固定为 2 字节)
        • 双字(Double Word, DWORD):4字节(32位)
      • 负数 =>有符号字节Signed Byte
      • ** 浮点,双精度** 单双精度浮点数
      • ** 文本/字符串** ASCII或Unicode编码的字符序列
      • 字节数组 Array of Bytes 任意长度的字节序列,通常以字符串形式表示。
    • 指针类型Pointers - Cheat Engine
      • 用于存储内存地址的值类型,通常用于访问和操作内存中的数据。
posted @ 2025-06-29 00:58  墨药  阅读(31)  评论(0)    收藏  举报