
1. 项目概述用CE撬开《永恒之金》的数据大门如果你玩过《Eternium》永恒之金这款手游大概率会对它精致的画面、流畅的打击感和“肝度”有深刻印象。作为一款ARPG角色的成长、装备的获取是核心乐趣但反复刷图积累资源的过程也常常让人感到疲惫。今天要聊的就是如何利用一个在PC单机游戏修改领域堪称“上古神器”的工具——Cheat Engine简称CE来对《永恒之金》的PC版本进行一些基础的数据探查与修改。这并非鼓励破坏游戏平衡而是从一个技术爱好者的角度去理解游戏数据在内存中的存储与运行逻辑就像拆开一个精密的钟表看看它的齿轮是如何咬合的。CE是一款开源的内存扫描与调试工具功能强大到令人敬畏从简单的数值修改到复杂的代码注入无所不能。而我们今天的目标相对温和定位并修改游戏中的一些基础数值例如金币、宝石数量或者角色的生命值、法力值。这个过程本身就是一次对计算机内存管理、数据存储格式和程序运行原理的生动实践。即使你从未接触过逆向工程跟着步骤走一遍也能获得巨大的成就感。需要明确的是我们的所有操作都基于个人学习与研究的目的在单机环境下进行绝不涉及任何在线游戏的作弊那不仅是违规的也毫无技术乐趣可言。2. 核心思路与准备工作理解“扫描-过滤-锁定”三部曲在动手之前我们必须理解CE修改游戏数值的核心逻辑。你可以把电脑的内存想象成一个超级大的、按顺序编号的货架内存地址游戏运行时的所有动态数据比如你当前有多少金币都存放在这些货架上。CE的工作就是帮你从数以亿计的货架中找到存放“金币数量”的那个特定货架。2.1 核心原理基于数值变化的精确筛选CE最常用、最经典的方法是“未知初始值”扫描和“数值变化”扫描。我们以修改金币为例首次扫描未知初始值当你打开游戏进入角色界面看到金币数是比如15342。你并不知道这个数字在内存中存放在哪里是什么格式。此时在CE中选择“未知初始值”扫描类型CE会记录下内存中所有可能的数据块。变化后再次扫描然后你回到游戏通过卖出一件装备让金币数发生变化变成15842增加了500。此时你回到CE将扫描类型改为“增加的数值”或“变动的数值”并输入变化后的值15842或直接选择“变动的数值”进行二次扫描。逐步筛选经过几次“让金币数变化 - 在CE中根据变化类型增加/减少/未变扫描”的操作后CE左侧的地址列表会越来越少最终可能只剩下几个甚至一个地址。这个地址极大概率就是存储你金币数值的真实内存地址。2.2 工具与环境准备工欲善其事必先利其器。以下是本次实操所需的全部准备Cheat Engine 7.5 汉化版这是我们的主力工具。选择7.5版本是因为它稳定且资源丰富。汉化版对新手尤其友好能降低理解门槛。务必从可信的源码网站或论坛下载以避免捆绑软件。《Eternium永恒之金》PC版确保你拥有游戏的PC版本通常通过Steam、官网或某些安卓模拟器内的PC版客户端获得。重点本文所述方法针对的是单机运行的PC客户端。游戏的部分数据如通过在线商店购买可能经过服务器验证无法本地修改。操作系统Windows 10 或 11。CE在Windows平台功能最完整。关闭所有不必要的程序尤其是杀毒软件或安全卫士它们可能会干扰CE对游戏进程的内存访问误报为病毒行为CE的某些操作模式确实类似病毒行为。在操作前最好将CE和游戏都添加到杀毒软件的白名单中或者临时关闭实时防护。注意使用CE修改在线游戏或任何游戏的多人模式是明确违反用户协议的行为会导致账号封禁。请仅在纯粹的单机模式或手游的单机版本如通过模拟器运行下进行学习研究。2.3 关键概念预热数值类型与内存存储在扫描前需要理解CE中的几个关键数据类型这决定了扫描的精度4字节Byte绝大多数现代游戏存储整数如金币、宝石、等级、生命值时使用的数据类型。例如数字15342在内存中就是以4字节的形式存储的。在扫描《永恒之金》这类游戏的基础数值时首次尝试应优先选择“4字节”。浮点数Float/双浮点数Double用于存储带小数的数值比如攻击速度、冷却缩减百分比、某些游戏中的精确生命值如100.5。《永恒之金》中像“伤害增加X%”这类属性很可能以浮点数存储。字符串String用于存储文本如角色名、物品名称。修改字符串需要格外小心长度不匹配可能导致游戏崩溃。所有类型当你不确定时可以选择此选项但首次扫描结果会非常庞大筛选效率低。3. 实战演练定位并修改金币与宝石理论铺垫完成现在让我们进入实战。假设我们的游戏角色当前拥有15342金币和127颗宝石。3.1 第一步附加CE到游戏进程完全关闭CE和《永恒之金》游戏客户端。首先启动《永恒之金》登录账号进入游戏主界面或角色管理界面确保能看到清晰的金币和宝石数量。然后以管理员身份运行Cheat Engine。这一点很重要管理员权限能让CE获得足够的内存访问权限。在CE主界面左上角点击闪烁的电脑图标“选择进程”按钮。在弹出的进程列表中找到《永恒之金》的进程。它的名称可能是Eternium.exe、Eternium-Win64-Shipping.exe或类似的名称。如果不确定可以观察进程列表中的图标或描述。选中它点击“打开”。3.2 第二步首次扫描与数值变动现在CE已经和游戏进程连接上了。我们开始寻找金币的地址确认数值在游戏内明确记下当前金币数15342。设置扫描参数在CE界面的“数值”输入框旁边将扫描类型设置为“精确数值”。在“数值”输入框中输入“15342”。将“数值类型”下拉菜单选择为“4字节”。这是最关键的一步假设其他选项保持默认。执行首次扫描点击“首次扫描”按钮。CE会开始工作状态栏会显示扫描进度。几秒后扫描完成。你会在CE左侧的地址列表中看到可能成千上万个结果。这很正常因为内存中值为15342的4字节数据块可能有很多。制造数值变化切回游戏想办法让金币数量发生变化。最稳妥的方法是去商店随便购买一个最便宜的商品比如一瓶药水。或者出售一件背包里的白色装备。假设我们出售了一件装备金币从15342变成了15842增加了500。执行再次扫描切回CE将“数值”输入框中的数字改为变化后的值“15842”。扫描类型仍然保持“精确数值”。点击“再次扫描”按钮。观察结果扫描完成后左侧的地址列表应该会大幅减少可能只剩下几十个甚至几个地址。重复步骤4和步骤5再次改变金币数量比如再卖一件装备变成16342然后在CE中输入新的数值“16342”点击“再次扫描”。3.3 第三步精确锁定与修改经过2-3次“变动-扫描”后地址列表很可能只剩下1个到3个地址。如何判断哪个是真正的金币地址添加到地址列表将剩下的这几个地址全部选中按住Ctrl键点击然后拖拽到CE界面下方的空白区域地址列表或者右键点击其中一个选择“将选中的地址添加到地址列表”。实时验证在下方的地址列表中你会看到添加的地址每个地址后面都有当前CE读取到的数值。切回游戏通过正常游戏行为让金币数自然变动比如捡起地上的金币。不要使用CE修改。切回CE观察地址列表中哪个地址的数值随着你游戏内金币数的变化而实时同步变化。那个地址就是真正的金币地址执行修改找到真地址后在地址列表的“数值”栏双击输入一个你想要的数字比如999999。按回车键。如果游戏是“暂停”的可能需要取消暂停或切回游戏刷新界面。切回游戏查看金币数量。如果成功金币数应该已经变成了999999。实操心得有时候真正的地址可能有两个一个用于显示一个用于实际计算。修改后如果游戏内显示变了但无法消费说明改的是显示地址。你需要找到那个“实际计算”的地址通常修改它之后显示地址也会同步更新。验证方法就是修改后尝试去商店消费看是否成功。3.4 第四步锁定数值与指针扫描进阶锁定数值在地址列表中找到金币地址最左侧有一个“激活”复选框。勾选它这个地址的数值就会被CE“锁定”即游戏程序试图改变它时CE会立刻将其改回你设定的值。比如你将金币锁定为999999那么无论你怎么花钱金币数都会瞬间变回999999。这常用于无限资源。理解指针游戏重启后刚才找到的内存地址十有八九会失效。因为动态内存分配数据每次加载的位置可能不同。为了制作重启游戏后依然有效的修改需要找到“指针”。指针是一个保存着目标地址我们金币的地址的内存地址本身。它通常位于相对固定的模块如游戏主模块Eternium.exe中。找到指向金币地址的指针我们就能“一劳永逸”。寻找指针简要步骤在找到的金币地址上右键选择“找出是什么改写了这个地址”。弹出一个新窗口然后回到游戏进行一次能让金币减少的操作如购买物品。新窗口会记录下一条汇编指令其中包含一个偏移量和基址。记下这条指令。右键金币地址选择“指针扫描”。这是一个更复杂但功能强大的功能它能帮你找出所有可能指向该地址的指针链。分析指针链找到基址是游戏主模块如Eternium.exeXXXXXX的指针将其保存下来下次游戏启动时只需添加这个指针地址就能直接定位到金币。4. 扩展应用修改生命值、法力值与技能冷却掌握了修改金币的方法修改其他数值就触类旁通了。但有些数值的扫描需要技巧。4.1 修改生命值HP与法力值Mana生命值和法力值通常是浮点数Float因为它们可能是像“542.3/1200”这样的显示形式。扫描方法方法与金币类似但“数值类型”应选择“浮点数”。制造变化让角色受到伤害生命值减少或释放技能法力值减少。注意有些游戏的生命值是“当前值/最大值”分开存储的。你可能找到两个地址一个是当前值一个是最大值。修改最大值能提升生命上限。精确扫描技巧由于浮点数在内存中存储的不是直观的十进制数而是IEEE 754标准直接输入“542.3”可能扫描不到。更可靠的方法是首次扫描选择“未知初始值”类型“浮点数”。让生命值减少后选择“减少的数值”进行再次扫描。让生命值恢复喝药水后选择“增加的数值”扫描。如此反复逐步筛选。也可以尝试“数值介于...之间”来缩小范围。4.2 修改技能冷却时间这是一个更有趣的挑战。技能冷却通常有两种实现方式倒计时器一个浮点数从冷却时间如5.0秒开始随时间递减到0。扫描这种类型需要先用“未知初始值浮点”扫描然后在冷却期间多次进行“减少的数值”扫描冷却结束时用“未变动的数值”或“变动的数值”扫描。时间戳记录技能释放结束的服务器或系统时间。修改这个的难度较大通常需要修改代码汇编指令来实现无冷却这涉及到CE的“代码注入”功能属于高级话题。一个取巧的方法如果你找到了法力值地址并且技能消耗法力你可以将法力值锁定为一个很大的数实现“无限蓝”间接达到频繁释放技能的效果。但这不改变冷却时间。5. 常见问题、疑难排查与安全须知即使按照步骤操作你也可能会遇到各种问题。下面是一些常见坑点及解决方案。5.1 扫描不到地址或地址过多/过少问题现象可能原因解决方案首次扫描后地址数就是01. 数值类型选错如该用4字节用了浮点。2. 游戏数值加密或不是简单存储。1. 尝试更换数值类型4字节、浮点、双浮点、8字节都试试。2. 尝试“未知初始值”扫描然后进行变化扫描。多次变化扫描后地址数依然成千上万1. 扫描范围过大默认是整个内存。2. 游戏数据存储在特定内存区域。1. 在首次扫描前在CE的“扫描设置”中尝试勾选“仅扫描可读写内存”或指定内存范围需要一定经验。2. 确保你的数值变化是显著且唯一的。比如金币从15342变15842这个“500”的增量可能太普通。尝试让数值发生更大或更奇特的变化。地址列表只剩下1个但修改后游戏内无变化1. 找到的是“显示地址”而非“计算地址”。2. 游戏有反修改机制检测到异常后自动纠正。1. 尝试修改后进行一个游戏内操作如消费看地址数值是否被游戏改回。如果是寻找其他同步变化的地址。2. 这可能是游戏服务器验证或本地校验。单机游戏较少见如遇到可能需要查找并修改校验代码这非常复杂。5.2 游戏崩溃或出现异常原因修改了不该修改的内存地址例如修改了代码段、或修改字符串时长度超出原有空间。预防只修改明确找到的、验证过的数据地址通过数值同步变化验证。修改前备份存档。这是最重要的习惯修改字符串要极其谨慎最好只修改内容不改变长度。使用CE的“内存查看”功能右键地址选择“浏览相关内存区域”观察周围数据如果全是规律的数字或明显的代码请远离。5.3 关于杀毒软件误报CE因其强大的内存修改能力被许多杀毒软件视为风险工具或黑客软件。这是正常现象。解决方案在操作期间将CE的安装目录和可执行文件添加到杀毒软件的信任区白名单。如果觉得麻烦可以在扫描/修改时临时关闭杀毒软件的实时防护操作完毕后再开启。务必从CE官网或知名开源平台下载CE以确保软件本身纯净。5.4 法律与道德边界必须再次强调单机游戏在你自己拥有的、离线的单机游戏上进行修改学习是完全合法的个人行为。网络游戏/多人模式绝对禁止。任何试图修改在线游戏客户端数据的行为不仅违反用户协议可能导致永久封号在有些地区还可能涉及法律问题。CE提供的技术能力不应该用于破坏他人的游戏体验或获取不公平优势。尊重开发者修改行为应止步于个人学习和研究。不要制作并传播破坏性修改器Trainer来牟利这侵犯了开发者的知识产权。6. 从修改到理解CE的更多可能性当你成功修改了几个基础数值后CE的世界才刚刚向你打开大门。你可以利用它做更多有趣的事情查找物品数组通过扫描你拥有的某种材料如“铁矿石”的数量找到其地址然后在内存浏览器中查看附近地址可能会发现一个结构化的数组里面按顺序存放了你背包里所有物品的ID和数量。这需要一定的数据结构知识例如每个物品可能用12个字节表示4字节ID4字节数量4字节属性。代码注入Code Injection这是CE的终极技能之一。例如你可以找到判断技能是否在冷却中的那段汇编代码将其修改为“直接跳转”从而实现真正的“无冷却施法”。这需要学习基础的x86/x64汇编语言。制作CT表Cheat Table将你找到的指针地址、修改脚本保存为一个.ct文件。下次游戏更新后只要游戏内存结构没大变你加载这个CT表就能一键激活所有修改。这是资深CE用户的常用方式。CE就像一把万能钥匙但它打开的不仅是游戏的“后门”更是计算机系统底层运行机制的大门。通过《永恒之金》这个具体的例子我们从简单的数值扫描入手实践了内存寻址、数据类型、指针等核心概念。这个过程里耐心和细致的观察比任何技巧都重要。每一次成功的扫描和修改都是对你逻辑思维和问题解决能力的一次锻炼。记住最重要的不是修改的结果而是你理解并走完这个过程的经历。