问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

《挺进地牢》修改器开发技术揭秘

创作时间:
作者:
@小白创作中心

《挺进地牢》修改器开发技术揭秘

引用
百度
12
来源
1.
https://baike.baidu.com/item/%E6%8C%BA%E8%BF%9B%E5%9C%B0%E7%89%A2/19519746
2.
https://www.18183.com/gonglue/202211/4273732.html
3.
https://www.gamersky.com/handbook/201604/738105.shtml
4.
https://blog.csdn.net/weixin_43166958/article/details/113628773
5.
https://store.steampowered.com/app/311690/_/?l=schinese
6.
https://blog.csdn.net/shulianghan/article/details/121314138
7.
https://blog.csdn.net/qq_20173195/article/details/126119851
8.
https://www.bilibili.com/video/BV1Ui4y1b7zb/
9.
https://www.cnblogs.com/LyShark/p/10799926.html
10.
https://zh.wikipedia.org/wiki/%E6%8C%BA%E9%80%B2%E5%9C%B0%E7%89%A2
11.
https://www.bilibili.com/read/cv3459856/
12.
https://www.cnblogs.com/LyShark/p/17727115.html

《挺进地牢》(Enter the Gungeon)是由Dodge Roll开发的一款射击冒险游戏,玩家需要控制角色进行地牢式的RPG探险。游戏采用像素风格画面,给人一种复古的感觉。虽然游戏看上去没有大作酷炫,但游戏内容非常有趣,玩家需要充分利用场景中的各种要素,如引爆炸药桶、推倒桌子当做掩护等。

在游戏开发和测试过程中,修改器是一个非常有用的工具。它可以帮助开发者调试游戏逻辑,测试不同场景下的游戏表现,甚至用于游戏玩法的研究和分析。本文将详细介绍如何使用Cheat Engine和C++开发《挺进地牢》的修改器。

使用Cheat Engine进行内存扫描

Cheat Engine(简称CE)是一个功能强大的开源作弊工具,它集成了内存扫描、十六进制编辑和动态调试等功能。CE可以帮助我们定位游戏中关键数据的内存地址,这是开发修改器的第一步。

环境准备

  1. 下载并解压Cheat Engine,运行Cheat Engine.exe(32位系统使用cheatengine-i386.exe)。
  2. 选择Edit -> Settings,将语言设置为中文,重启软件。
  3. 以管理员权限运行CE修改器。

精确扫描数值

以《挺进地牢》为例,假设我们需要找到玩家的生命值地址:

  1. 启动游戏,进入游戏界面。
  2. 在CE中点击打开进程,选择游戏的进程。
  3. 在CE的主界面,输入玩家当前的生命值(例如100),选择4字节类型,点击首次扫描
  4. 每次玩家生命值发生变化时(例如减少到95),在CE中输入新的数值,点击再次扫描
  5. 重复上述步骤,直到找到唯一的地址。

未知数值扫描

如果游戏中的数值是未知的(例如血条形式),可以使用未知数值扫描:

  1. 在CE中选择新扫描 -> 未知初始数值
  2. 每次数值发生变化时(例如点击"打我"按钮),在CE中选择相应的变化类型(增加、减少或不变)进行扫描。
  3. 通过反复筛选,最终找到目标地址。

浮点数扫描

有些游戏使用浮点数存储数值,例如生命值或弹药:

  1. 在CE中选择浮点数类型。
  2. 输入观察到的浮点数值(例如97.0000),点击首次扫描
  3. 数值发生变化后,再次扫描,直到找到目标地址。

C++代码实现进程读写

找到关键数据的内存地址后,我们可以通过C++代码实现对游戏进程的读写操作。以下是一个简单的示例,展示如何使用Windows API实现进程读写:

#include <windows.h>
#include <iostream>

// 进程名
const char* processName = "EnterTheGungeon.exe";

// 需要修改的地址和值
DWORD address = 0x12345678; // 替换为实际地址
int newValue = 1000; // 新的生命值

int main() {
    // 获取游戏进程ID
    DWORD processId = 0;
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (snapshot != INVALID_HANDLE_VALUE) {
        PROCESSENTRY32 processEntry;
        processEntry.dwSize = sizeof(PROCESSENTRY32);
        if (Process32First(snapshot, &processEntry)) {
            do {
                if (strcmp(processEntry.szExeFile, processName) == 0) {
                    processId = processEntry.th32ProcessID;
                    break;
                }
            } while (Process32Next(snapshot, &processEntry));
        }
        CloseHandle(snapshot);
    }

    if (processId == 0) {
        std::cout << "未找到游戏进程" << std::endl;
        return 1;
    }

    // 打开游戏进程
    HANDLE processHandle = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, processId);
    if (processHandle == NULL) {
        std::cout << "无法打开游戏进程" << std::endl;
        return 1;
    }

    // 写入新值
    if (WriteProcessMemory(processHandle, (LPVOID)address, &newValue, sizeof(newValue), NULL)) {
        std::cout << "修改成功" << std::endl;
    } else {
        std::cout << "修改失败" << std::endl;
    }

    // 关闭句柄
    CloseHandle(processHandle);

    return 0;
}

合法性和伦理性

虽然修改器开发是一项有趣的技术活动,但我们也需要明确其合法边界:

  1. 开发修改器用于个人学习和游戏测试是合法的,但将其用于商业用途或在线作弊是违法的。
  2. 分享和传播修改器可能侵犯游戏开发商的权益,需要谨慎处理。
  3. 在使用修改器时,要确保不损害其他玩家的游戏体验。

通过合法和负责任的方式使用技术,我们才能在探索游戏世界的同时,保持对法律和道德的尊重。

通过本文的介绍,相信你已经对《挺进地牢》修改器的开发有了基本的了解。无论是出于学习目的还是游戏测试需求,掌握这些技术都能帮助你更好地理解游戏开发的底层逻辑。记住,技术本身是中立的,关键在于我们如何使用它。在探索游戏世界的同时,也要遵守法律和道德规范,做一个负责任的技术使用者。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号