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
- 让二进制编码更简洁的写法
- 一个十六进制=0-15=4 比特
- 长度进行切分
📱-CE教程-下载-内存扫描,一次性修改数值
- 去哪里:内存扫描器
- 下载
- 打开教程 help
- 挂载才能修改
- 如何筛选?筛选行为
- 挨打:不断掉血
- 精确数值修改:干什么: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 位)
- 类型: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种不同的值(从
00000000
到11111111
) - 一个字节可以存储一个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
- 用于存储内存地址的值类型,通常用于访问和操作内存中的数据。
- 值类型Value Types - Cheat Engine