muki01/Game_Memory_Hacking_Tutorial
GitHub: muki01/Game_Memory_Hacking_Tutorial
面向新手的 Python 游戏内存修改教程,通过经典游戏的注释脚本讲解进程内存读写与逆向工程基础。
Stars: 2 | Forks: 1
# 🕹️ Game_Memory_Hacking_Tutorial





本仓库是一个对新手友好、内容全面的指南和脚本集合,旨在帮助大家学习游戏内存修改和逆向工程的基础知识。本项目的目标在于演示如何扫描进程内存、处理指针、使用 Cheat Engine 寻找静态 offset,以及在 runtime 动态读写数据。
其中包含了针对《侠盗猎车手:罪恶都市》(Grand Theft Auto: Vice City)、《侠盗猎车手:圣安地列斯》(GTA: San Andreas)、《古墓丽影》(Tomb Raider) 等经典游戏的简单且附带详细注释的概念验证脚本。
## 🧠 工作原理:核心概念
当游戏运行时,它会将临时数据(如生命值、弹药量、坐标)存储在系统的 RAM 中。内存修改的核心操作就是找到这些数据所在的内存地址,并使用外部脚本来修改它们。
### 1. 使用 Cheat Engine 查找地址
在编写脚本之前,我们必须先使用 **Cheat Engine** 找到内存地址:
* **静态 Offset(基于 Module):** 某些数值位于距离游戏主 module 固定偏移量的位置(例如 `tomb2.dll + 0x2CA416`)。这些数值很容易被锁定,因为我们的脚本会动态获取 module 的基地址。
* **动态 Pointer(玩家基地址):** 现代或复杂的结构在每次游戏启动时都会改变其存储位置。我们需要找到一个**基地址 Pointer**(例如 `PLAYER_BASE`)并配合使用 **Offset**(如 `HP_OFFSET = 0x22`),从而始终能够相对于玩家对象找到正确的数据。
### 2. Python 脚本如何操作 RAM
借助 `pymem` 库,我们的脚本会在一个持续循环中执行三个主要任务:
1. **打开进程句柄:** 附加到游戏进程(例如 `tomb123.exe`),以获取读写其内存的权限。
2. **读取 Pointer 路径:** 通过优先读取基地址 Pointer 来解析动态地址。
3. **写入 / 冻结数值:** 在游戏将数值扣减之前,持续使用我们期望的值覆盖目标内存地址(例如将生命值锁定在 `1000`)。
## 💻 代码示例:古墓丽影 II 终极修改器
下面我们来快速了解一下如何用 Python 构建一个基础的内存修改脚本。该脚本可以冻结弹药、通过 pointer 锁定生命值,并引入了自定义的飞行/悬浮机制。
```
import pymem
import pymem.process
import time
import keyboard
PROCESS_NAME = "tomb123.exe"
MODULE_NAME = "tomb2.dll"
# 通过 Cheat Engine 找到的 Offsets 和 Base Pointers
PLAYER_BASE = 0x025B23A0
HP_OFFSET = 0x22
AIR_OFFSET = 0x2CA416
def tomb_raider_ultimate_cheat():
pm = pymem.Pymem(PROCESS_NAME)
# Get the dynamic base address of the DLL
module = pymem.process.module_from_name(pm.process_handle, MODULE_NAME).lpBaseOfDll
print("[+] Trainer Active. Press 'X' to fly, 'Z' to hover.")
while True:
# 1. Freeze Static Value (Air/Oxygen)
pm.write_short(module + AIR_OFFSET, 1800)
# 2. Resolve Pointer for Dynamic Value (Health)
p_ptr = pm.read_longlong(module + PLAYER_BASE)
if p_ptr > 0:
pm.write_short(p_ptr + HP_OFFSET, 1000) # Lock HP to 1000
time.sleep(0.01) # Prevent high CPU usage
if __name__ == "__main__":
tomb_raider_ultimate_cheat()
```
## ⚙️ 项目结构与使用说明
每款游戏都有一个独立、简洁的脚本,旨在清晰展示附加到游戏进程、解析 pointer 以及修改特定参数(如无限弹药、无限生命或重力/飞行修改器)的完整过程。
### 🔹 核心要求
要测试或运行这些基础脚本,你需要通过终端安装内存操作封装库和输入处理库:
```
pip install pymem keyboard
```
### 🔹 仓库目录结构
这些脚本按照游戏名称进行了清晰的分类:
* **`gta_vice_city/`** -> 包含用于修改弹药、生命值或启用飞行机制的脚本。
* **`gta_san_andreas/`** -> 包含用于修改《圣安地列斯》数值的内存操作脚本。
* **`tomb_raider/`** -> 包含经典的《古墓丽影》内存修改工具(例如针对生命值的动态 pointer 处理、针对氧气值的静态 module)。
## 📱 图片与演示
⏳ **即将推出!** 我们将很快在这里添加 Cheat Engine 扫描截图、pointer 架构图,以及展示修改器实际运行效果的游戏 GIF 图。
## 🛠️ 涵盖的关键主题
* **进程附加:** 学习如何查找正在运行的游戏的进程 ID (PID),并使用 `pymem.Pymem` 安全地打开其虚拟内存空间的句柄。
* **内存读写:** 利用 Python (`write_short`、`write_int`、`read_longlong`) 中良好封装的基础系统 API 调用(如 `ReadProcessMemory` 和 `WriteProcessMemory`)。
* **Pointer 运算与 Offset:** 理解静态基地址 Pointer 和多级动态 offset 的工作原理,确保脚本在游戏重启或重新加载地图时依然能够正常运行。
* **修改器机制:** 实现高频循环 (`time.sleep(0.01)`) 以持续冻结或重写数值,从而维持无限状态(例如锁定氧气或弹药数量),并使用 `keyboard` 库追踪快捷键。
## 📬 联系方式
如需了解信息、求职机会、项目合作或赞助,您可以通过电子邮件与我联系。
📧 邮箱:muksin.muksin04@gmail.com
标签:Cheat Engine, Python, 云资产清单, 内存修改, 教程文档, 无后门, 游戏开发, 逆向工具, 逆向工程