声明
教程仅供技术交流使用,严禁用于非法用途。
2021年2月8日留:因游戏版本更新原因,以下教程部分思路可能失效。具体情况请大家自行测试。
前言
大家六一儿童节快乐,本篇教程会简单介绍逃跑吧少年无限子弹无冷却等一系列子弹相关功能实现思路。
提示
游戏有驱动保护,本教程重点偏向于相关功能实现,不涉及如何对抗驱动。
前系列教程中有简单的过驱动方法,但是因为已经时隔几个月,现在是否还能使用请自行测试。
无限子弹实现思路(一)
1.附加游戏进程等一系列操作此处省略
2.如图所示 进入游戏购买武器后发现直接显示了子弹数量。
3.但是本游戏数值进行了加密,当然不能直接搜索4。该踩的坑我已经帮大家踩完了,这里直接告诉大家。本游戏数值加密大部分与444444相关。此时我们直接搜索444444
4.发射一颗子弹后我们搜索变动的数值。如图所示这里我们可以一眼就看出哪个值变动了。
5.拉下地址,右键
→找出是什么改写了这个地址
→再发射一颗子弹
6.这么多代码也不用一条一条分析了,我们往简单的来,直接nop
这条代码即可实现子弹数量的锁定
12AF252D - 8D 87 04010000 - lea eax,[edi+00000104]
12AF2533 - 8B 8D 04FFFFFF - mov ecx,[ebp-000000FC]
12AF2539 - 89 08 - mov [eax],ecx
12AF253B - 8B 8D 08FFFFFF - mov ecx,[ebp-000000F8]
12AF2541 - 89 48 04 - mov [eax+04],ecx //←此处对子弹数值进行改写
12AF2544 - 8B 8D 0CFFFFFF - mov ecx,[ebp-000000F4]
12AF254A - 89 48 08 - mov [eax+08],ecx
12AF254D - 8B 8D 10FFFFFF - mov ecx,[ebp-000000F0]
12AF2553 - 89 48 0C - mov [eax+0C],ecx
12AF2556 - 8B 8D 14FFFFFF - mov ecx,[ebp-000000EC]
12AF255C - 89 48 10 - mov [eax+10],ecx
12AF255F - 8D 87 04010000 - lea eax,[edi+00000104]
7.选中这行代码→右键
→使用空指令替换
8.返回游戏进行测试,如图所示子弹数量已经被锁定。无限子弹的目的已达成。
无限子弹实现思路(二)
经过上面的一波操作我们已经实现了对子弹数量的锁定,所以无限子弹其实已经完成了。这里我们再换另外一种思路实现无限子弹。
1.我们右键刚刚找到的子弹数量地址→浏览相关内存区域
。
2.内存浏览窗口→右键
→显示类型
→4字节(DEC)
3.如图所示 我们发现子弹数量地址附近又有一堆444444/444445
4.我们回到游戏 按下F建再购买一些子弹 来看看这些值的变动
5.我们发现其中一个值随着我们购买子弹后由444445变成了444446那么我们将这个值加入列表
6.我们尝试更改下这个地址的值 如图所示我们子弹数量明显增加
7.继续仿照思路一中的操作,右键
→找出是什么改写了这个地址
。然后我们返回游戏发射子弹(注意:记得把思路一中nop的代码还原)。
8.我们发现连续发射4发子弹后这里出现了一条代码。由此我们可以推测该地址对应的是弹夹数量
(1弹夹有4发子弹)
12AF2650 - 8D 87 18010000 - lea eax,[edi+00000118]
12AF2656 - 8B 8D 40FFFFFF - mov ecx,[ebp-000000C0]
12AF265C - 89 08 - mov [eax],ecx
12AF265E - 8B 8D 44FFFFFF - mov ecx,[ebp-000000BC]
12AF2664 - 89 48 04 - mov [eax+04],ecx//此处对弹夹数量进行改写
12AF2667 - 8B 8D 48FFFFFF - mov ecx,[ebp-000000B8]
12AF266D - 89 48 08 - mov [eax+08],ecx
12AF2670 - 8B 8D 4CFFFFFF - mov ecx,[ebp-000000B4]
12AF2676 - 89 48 0C - mov [eax+0C],ecx
12AF2679 - 8B 8D 50FFFFFF - mov ecx,[ebp-000000B0]
12AF267F - 89 48 10 - mov [eax+10],ecx
12AF2682 - 8B 47 5C - mov eax,[edi+5C]
9.继续仿照思路(一)中,直接用空指令替换这条代码,即可实现对弹夹数量的锁定。我们返回游戏测试发现4发子弹发射完成后子弹数量又变回了4发,证实了我们的猜想。
10.到这里我们成功通过两种思路实现了无限子弹
子弹无冷却实现思路(一)
前面我们已经实现了无限子弹,现在我们来尝试取消两次发射直接的冷却时间。下面直接开始操作。
1.我们打开游戏道具属性界面。如图所示清楚的告诉了我们攻击间隔的时间。
2.那么这里就很好办了,因为这里的数据没有进行加密我们可以直接用CE浮点搜索进行修改。
3.但是我们很快就发现一个问题,CE直接搜索1.1会有很多很多的数据,如果比较杠的话可以一个一个值去试。(滑稽~)这里我介绍另外一种方法。
4.通过上面的属性图可知武器发射间隔1.1秒每次升级减少0.06秒,我们这里直接用CE群组搜索(类似于手游修改器中的联合搜索)
5.相对于前面的上千条地址,现在是不是显得非常轻松~
6.经过测试,我们得知前面搜索中的第二组正是我们需要的。
7.注:此方法同样适用于本游戏中其他道具第一项属性,有兴趣可以自行研究。
子弹无冷却实现思路(二)
1.前面介绍了一种非常简单的方法实现子弹无冷却,直接搜索看见的数据即可,数组搜索的运用大大减少了我们排除错误地址的时间。下面我们尝试其他方法实现。
2.我们先回到无限子弹实现思路(二)
中的第三步。但是为了方便待会查看数据,我们吧显示类型切换为浮点数。
3.我们向上翻动几行,注意的是这里根据你窗口大小翻动的行数是不一定的。
4.然后我们返回游戏发射子弹,同时观察下面数据的变动。我们可以很明显的发现这个地址随着我们发现子弹后开始变动然后归零。
5.我们右键→将此地址添加到列表中→锁定数值
6.返回游戏测试效果。如图所示是无限子弹加上锁定刚刚数值的效果。很明显我们成功了。
未完待续