Cheat Engine Tutorial 闯关手记 第六关

本文详细介绍了如何通过代码注入技巧,将游戏中的减血代码更改为加血代码,实现修改器补丁的制作,适用于任何电脑平台。
转载自 76512

 

结合第四关与第五关的教程,可以将数值存储的真正地址找出来,锁定数值或修改游戏中的代码,如果你想制作在任何电脑上都能使用的修改器补丁,那么这两关的学习至少是个前题。

       本关的说明解释如下:

       步骤 7:代码注入 (PW=013370)

       代码注入是将一小段代码注入到目标进程中的技巧,然后使这个进程执行你写入的代码。

       在这一步教程中,你将有一个血值和一个每按一次将减少1点血值的按钮,你的任务是利用 代码注入 ,使得每按一次按钮增加2点的血值。

       开始查找这个地址,然后查看是什么在改写它("查找写入此地址的代码")。

       当你看到那条减少数值的汇编代码已经后,选择 "显示反汇编程序" , 然后打开 自动汇编窗口 (菜单-工具->自动汇编 或 按下快捷键 Ctrl+a ),选择 "模板" 中的 "代码注入" 。CE将自动生成一部分汇编代码并为你输入指令做好准备(如果CE没有给出正确的地址,你可以手工输入它)。

       注意 alloc 这部分代码,它会为你的代码分配出一小块空白的内存,过去,在 Win2000 之前的系统,这种行为存在安全隐患,很可能导致系统崩溃,幸运的是,这种情况在 win2000 以后的操作系统得到改善

       也要注意 line newmem 这部分代码,原代码,以及用文本 "此处放置你的代码" 标示出的空白部分,正如你猜测的,在这儿可以写下每次增加2点血值的代码。

       推荐你使用 "ADD" 汇编指令,下面是一些示例:

       "ADD [00901234],9" 使 [00901234] 地址的值增加9
        "ADD [ESP+4],9"   使地址指针 [ESP+4] 的值增加9

       在本关的情况下,你可以使用相同的手法去处理 减血值那条原代码方栝号之间的那部分。

       提示:

       推荐你从原代码中删除减血值的那行代码, 否则你得加3点生命值(你增加了3点,原代码减去1点,最终结果才会增加2点),这样看上去很容易让人迷惑,但最终方案还是由你来决定好了。

       提示:

       某些游戏中,原代码可能在多条指令之外,有时候(并非一向如此),它可能由不同的地方跳转至你的指令中并结束运行,其结果可能引起未知的错误;如果出现了这种情况,通常应当查看附近的那些跳转指令,进行修改,或者在尝试使用不同地址进行 代码注入,确认无误后便可以将你修改的代码注入原代码中了。

       本关的教程应当是第四关的补充,在第四关找到代码只是简单的改为空指令,游戏运行到你修改后的指令什么都不会做,比如,按照这样的方法,我们可以制作买东西不需要花钱的,又或是不掉血的修改补丁;这一次,我们深入一点,熟悉更多的汇编指令,如果弄明白,便可以制作出买东西倒找你钱,又或是越战血越多的补丁了。

       这次我们不啰嗦,按着前几关的介绍,查找到数值地址,右键 "查找写入该地址的代码" ,更改血值后,来到下图这一步:

       点击 "显示反汇编" ,打开 "内存查看器" 窗口,如下图:


       在 工具 菜单中选择 "自动汇编 或 按下快捷键 Ctrl+a ",如下图:


       按下图打开 "代码注入" :


       跳出地址填写窗口,如下图:


       点击 确定 ,自动汇编已帮我们创建了一部分的代码,如下图:


       能看懂汇编的,就不用我多解释了,这是一段很简单的代码,CE帮我们先开出了一小块内存用于注入我们自己的代码,然后在原地址处插入跳转语句,跳入我们输入的代码段,执行完毕后再跳转回原代码继续执行后边的代码。

       现在我们要做的就是将加血的代码输入在图中 newmem 的位置,如下图代码所示:


       你可以按照说明中所说的那样,在 newmem 区域,写入 "add [ebx+00000310],3",加3的原因是因为在执行完我们输入的代码后,原代码还要再减去1;当然,你也可以灵活运用我们的知识,直接将原代码改为 "add [ebx+00000310],2",那么在 newmem 区域就不用输写任何代码了,如下图:


       OK,写完代码,可以点击 "执行" 按钮了,弹出确认对话框,直按点击 "是",弹出 注入成功的窗口,并提示我们,新的代码段放置的位置,如下图:

       "确定" ,关闭 "自动汇编" 窗口,在 "内存查看器" 窗口 中的汇编代码部分,可以看到,原代码已被修改,如下图:


       回到 Tutorial.exe 窗口 ,点 "Hit me" ,增加了2点血值,next 按钮也可以点击了,记下第七关的密码(PW=525927),我们休息一下~


<think>嗯,用户现在在询问Cheat Engine 7.4第四的教程或解决方案。首先,我需要回忆一下Cheat Engine这个软件的使用方法,特别是第七的结构。不过用户提到的是第四,可能是指教程中的第四步?因为通常Cheat Engine的教程卡是按步骤编号的,比如第一步到第七步,每步可能有不同的挑战。需要确认用户是否指的是教程的第四步,而不是某个版本中的第四。比如,Cheat Engine自带的教程有多个步骤,第四步可能涉及指针扫描或者更复杂的内存查找。 根据用户之前提供的引用内容,他们在之前的问题中提到了健康值的搜索方法,即通过首次扫描未知数值,然后射击靶子,搜索减少的数值,重复操作直到找到正确的地址。这可能是在教程的某一中,用户需要找到并修改目标的生命值或健康值。而第四可能涉及更复杂的机制,比如动态地址或者指针寻址,因为前面的步骤可能已经覆盖了基础扫描和变化值查找。 用户提供的引用[1]中提到了使用CE进行数值扫描的方法,包括首次扫描未知数值,射击后搜索减少的数值,并可能穿插不射中的操作来排除干扰。这可能与第四的挑战相,比如需要处理地址变化或者多层指针的问题。此外,引用[2]中提到的Secret对象的数据处理方式可能与当前问题无,但用户可能之前在讨论其他问题时提到了Kubernetes,但当前焦点是CE。 接下来,我需要确定第四的具体挑战是什么。通常,Cheat Engine教程的第四步会引入指针的概念,要求用户通过指针扫描来找到基址和偏移量,从而定位动态变化的内存地址。例如,当直接搜索健康值的地址后,发现每次重新开始游戏时地址会变化,这时候就需要通过指针来找到静态的基址,加上偏移量来定位实际存储数值的地址。 因此,解决方案可能包括以下步骤:首先找到健康值的当前地址,然后使用指针扫描工具来查找指向该地址的指针链,分析找到的指针结构,确定基址和偏移量,最后将地址添加到地址列表并进行锁定或修改。同时,用户可能需要处理多层指针或者多个偏移量,这时候需要耐心测试不同的组合。 另外,用户可能需要处理的是,当直接修改健康值后,游戏可能会检测到数值异常,导致需要绕过反作弊机制。但根据教程的设计,第四步更可能侧重于指针扫描而不是反作弊,所以重点应放在指针扫描步骤上。 总结下来,回答需要分步骤说明如何找到动态地址,如何使用指针扫描,如何确定正确的基址和偏移,以及如何验证和应用这些信息。同时,根据用户之前的引用,可能需要结合减少值扫描和排除干扰的方法,确保找到正确的指针链。 此外,用户可能需要相的扩展问题,比如如何处理多级指针、如何验证指针的正确性,或者在其他游戏中应用类似的方法。因此,生成的问题可以围绕指针扫描的优化、处理动态地址的其他方法,以及不同游戏中的应用场景展开。</think>根据Cheat Engine教程第四的常见设计特点(涉及动态地址与指针寻址),以下是分步解决方案: ### 核心步骤 1. **定位健康值动态地址** - 使用基础扫描:选择`未知初始值`→射击靶子→搜索`减少的数值`→重复直到找到当前地址[^1] - 确认地址有效性:修改数值观察靶子血条是否变化 2. **启动指针扫描** - 右键选中找到的地址→`找出是什么改写了这个地址` - 点击`Pointer scan`按钮→设置扫描范围(默认即可)→生成指针扫描结果 3. **分析指针链** - 筛选出绿色条目(静态基址) - 检查偏移量模式(如`base+10→+C→+4`) - 记录稳定的基址与偏移组合 4. **添加指针表达式** - 手动添加地址→勾选`Pointer`→输入`基址 + 偏移量链` - 示例表达式:`"game.exe"+3A45B0 + 10 + C` 5. **锁定数值** - 启用冻结功能→设置目标数值(如5000) - 验证:多次重置卡后血条仍保持锁定状态 ```python # 伪代码示例:指针解析过程 base_address = get_module_base("game.exe") offset_chain = [0x3A45B0, 0x10, 0xC] current_address = base_address for offset in offset_chain: current_address = read_memory(current_address + offset) health_value = read_memory(current_address) ``` ### 键验证点 - 重启游戏/卡后,指针表达式仍有效 - 修改数值后游戏无异常崩溃 - 冻结功能可抵抗血条自然衰减
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值