【CE扫盲系列·第八弹】CE第八关:注入++: (密码=31337157)
ce吧
全部回复
仅看楼主
吧务
level 15
前言:本教程使用的工具为:
Cheat Engine 7.4 64位
官网网站为:https://cheatengine.org/
如果您没有CE,那么请参考这篇教程,他会教您如何下载并安装一个CE
https://tieba.baidu.com/p/8126971048?pid=146028156375&cid=0#146028156375
本教程修改游戏目标为:
Cheat Engine 7.4 自带的默认新手教程(64位游戏),如果您没有看过前面的教程,推荐您先看完前面的教程然后再观看此次教程。
2022年11月23日 10点11分 1
吧务
level 15
注:本教程旨在带领新人小白熟悉和使用CE,如您应该能够熟练掌握并使用CE,那么您可以略过本教程。
2022年11月23日 10点11分 2
吧务
level 15
这一关会用到前面第六关:代码注入的一点知识,难度并不是很高,如果能看懂第六关的操作的话,那么这一关问题其实并不大。
2022年11月23日 10点11分 3
吧务
level 15
这里我们先看游戏介绍:
步骤 9: 注入++: (密码=31337157)
这一步将会解释如何处理游戏中的共用代码, 这种代码是通用在除了自己以外的其他同类型对像上
常常你在修改游戏的时候, 你找到了一个单位的健康, 或是你自己角色的健康, 你会发现一种情况: 如果你把健康相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了。
在这种情况下, 你必须想办法区分自己与敌人。
有时候很简单, 你只要检查最前面的4个字节(函数指针表), 它通常指向一个独一无二的地址, 代表着游戏玩家角色,而有的时候它是一个团体号码, 或者也可能是一个指针, 它指向另一个指针, 该址针又指向下一个指针,搞不好还指向下下一个指针, 最后指向一个玩家名字。总之完全取决于游戏的复杂度, 以及你的运气
最简单的方法是以"找出是什么改写了这个地址"去找出游戏代码,然后使用"分析(新/旧)数据/结构"的功能去比较两种结构。(你的单位和敌人的单位)然后看看是不是可以找到一个区分两者的方法。
当你找到如何区分你和电脑单位的方法后,你可以注入一段自动汇编脚本来检查状态,然后看是要运行游戏的代码还是要做其他的修改。(例如一击必杀)
另外, 你还可以用这个方法去创建一般所说的"字节数组"的字串, 它可以用来搜寻并产生一份所有你的单位或是敌人单位的列表
在这个教程中, 我已经实现了你将会玩到的最惊人的游戏.
这个游戏有4个玩家。2个属于你的阵容, 另外两个属于电脑方。
你的任务是找到改写健康的代码, 并且修改以至于你可以获得胜利,但"绝不能"使用锁定HP的方法.
完成修改以后, 请按 "重新启动游戏并自动执行" 来测试你的修改是否正确
提示1: 健康是一个单浮点数
提示2: 解法不只一种
2022年11月23日 10点11分 4
吧务
level 15
可以看到,这里其实有两个不同的"队伍",或者说是不同的"阵营"。玩家1和2属于我方阵营,玩家3和4属于电脑阵营,我们要做的是击败电脑阵营。
这里我们用之前教的方法找到,玩家1和玩家3的血量看看。
注意:
CE提示里面说:
提示1: 健康是一个单浮点数
这可以帮助我们尽快找到地址,当然,如果没有这个提示,我们也是可以用"未知的初始值",搜索出来的。
玩家1的地址。
玩家3的地址。
2022年11月23日 10点11分 5
吧务
level 15
找到不同阵营玩家地址后,我们分别看看,是哪些代码修改这些不同"阵营"的健康值。
操作还是前面我们说过的,选择地址,右键,找出是什么改写了这个地址。
玩家1:
2022年11月23日 10点11分 6
吧务
level 15
然后可以看到这里有一条指令,还是相同的步骤接着我们找一下玩家3
玩家3:
2022年11月23日 10点11分 7
吧务
level 15
到这里我们可以发现。
修改玩家1和玩家3的代码是同一条指令。
这里我们可以推测一下,玩家2和玩家4的修改指令估计也是相同的,到这里我们可以得出一个结论:所有玩家修改血量的代码都是一致的。
这种情况也是游戏介绍里面说的:
常常你在修改游戏的时候, 你找到了一个单位的健康, 或是你自己角色的健康, 你会发现一种情况: 如果你把健康相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了。在这种情况下, 你必须想办法区分自己与敌人。
现在我们知道了,所有修改健康值的命令都是这条指令,那么我们现在只要找出有谁调用过这条指令,就能找出所有的玩家了。
回到游戏,我们点开这条指令。
然后选中这条指令,右键,选中,"找出指令访问的地址"。
然后会出现这样一个小窗口,接着我们回到游戏中,依次对每个玩家点击攻击。
操作完后,就可以看到每个玩家的地址了。但是只是知道这个是不够的,我们要怎么区分每个玩家的阵营呢从而达到
我方阵营的,被攻击健康值不会减少,电脑方阵营的,被攻击就会直接死亡的这种效果呢?
2022年11月23日 10点11分 8
吧务
level 15
我们选中我们找到的所有地址,然后点击"打开选中地址的分析数据"。
这里点击OK即可,如果你想换个名字的换可以自行操作。
经过CE分析后,我们就可以看到,每个地址的结构了,接下来我们再这里面找找,看看有没有能作为"队伍"或者"阵营"的标识的。
2022年11月23日 10点11分 9
我的没有0014这一行怎么办
2023年01月05日 01点01分
@🐒💨🎒asad 选择结构选项==>自动猜测偏移类型,然后起始偏移给14,区块大小给4就行了。
2023年01月06日 11点01分
@Ms本人不在 楼主大大,我也没有偏移14这一行,那请问是怎么判断出偏移14就是队伍标识的?[疑问]
2023年01月07日 11点01分
@此去一别经年 不一定要用14,其他能明显标识队伍的也可以用。
2023年01月07日 11点01分
吧务
level 15
可以看到。
这两个都是可以作为"阵营"和队伍的标识的,这里我选取1和2作为标识。回到反汇编界面
选择工具。然后选择自动汇编。
这里我们还是选择代码注入。
2022年11月23日 10点11分 10
吧务
level 15
注入完成后,接下来我们开始编写队伍判断的代码。
从这里我们可以知道,+8的代表健康值的代码,+14是代表队伍的代码。
接着我们定义几个数值,队伍代码为1(我方),我们把健康值设置为5000,记得,这是浮点的,所以要加float,队伍为2(电脑方)我们把健康值设置为0。
然后再把这个数值写入xmm0,然后在跳回源指令,最后实现扣血操作。
最后我们再判断一下队伍即可。01(我方)就执行team1,02(电脑)就执行team2
然后我们来试试看。
2022年11月23日 10点11分 11
吧务
level 15
这样游戏就通过了。
2022年11月23日 10点11分 12
您好,请问第二张图,底下地址内的已经锁定自动汇编脚本是怎么来的?我前面步骤全部一模一样,这一步卡着了,关卡过不去
2023年06月04日 03点06分
@galgame萌新 把编写好的自动汇编添加到CT表里面就行了,找到自动汇编文件那一栏,然后点击,选择"分配到当前CT表"即可。
2023年06月04日 17点06分
@galgame萌新 文件–>分配到当前CT表,这样就搞定了。
2023年06月04日 17点06分
@Ms本人不在 非常感谢!已经成功过关了!CE后续我再慢慢研究吧,对于我这种小白,还有很长的路呢
2023年06月05日 03点06分
吧务
level 15
这也是最后一关了,如果你能全部看完,相信你现在已经能够掌握CE的一点点小技巧了。
2022年11月23日 10点11分 13
level 11
[太开心][太开心][太开心]
2022年12月01日 16点12分 14
level 1
这关好难啊
2022年12月04日 07点12分 15
1 2 3 4 尾页