日期:2020.07.23
博客期:178
星期四
【温馨提示】:
我现在把资源先放到开头,不想研究学习的就直接取用。如果修改器失效了,你们可以在博客园本页直接评论,也可以给我发邮件告诉我,就是不要到百度云上去说了,百度云我好久不登录一次的!大家给我发邮件的话,记得要注明是哪个游戏,内容当然是越详细越好啦!邮箱地址:nightskysxs@163.com
| 资源下载表 | |||
| 没有博客园账号的网友 |
百度网盘下载链接:https://pan.baidu.com/s/12kTl7v8z7Q3llqBz_tmnbA 提取码:rabi
Git Hub下载地址:https://github.com/TwoStarsGodNightSky/GameTrainer (Git Hub 暂不更新) |
||
| 有博客园账号的网友 | 版本 | CT文件 | 修改器 |
| 1.99s | 点我下载 | 点我下载 | |
| 1.99t | 点我下载 | 点我下载 | |
| 2.00 | 点我下载 | 点我下载 | |
博客防爬取部分:https://www.cnblogs.com/onepersonwholive/p/13369657.html
B 站测试视频 bv 号:BV1YU4y1s7Qx
前言
这个游戏最近刚接触到,我靠着自己不作弊的情况下就只能打到一部分,唉~我的躲弹幕类型游戏的投入确实不深,不要再说我游戏菜鸟了,我自己说了我自己,大家就不要说了。有好多人说你玩个游戏还用修改器,这样你玩不了多久就不想玩下去了。我个人认为大多数这些人都是自己通关了,想看别人受难。还有我只负责做修改器,别人用不用可不是我说了算的。所以我个人想说,你用了修改器和不用修改器是两种不同的体验,想一想你会无限跳就能提前跑到之前到达不了的地方,就会有不一样的通关路线,这对游戏是有帮助的。总之,做了修改器甚至能够丰富游戏性,让用户有不同体验的选择,这不是更好么?
修改内容(内部构造)
1、血量不减的思路
首先,如果会CE的基本操作的网友就可以直接搜索数值,进行锁定就可以了,这样我们可以找到基础的 HP 的位置,可以透过扫描或者多重地址的方法利用基质锁定位置,这样我们实际上就可以慢慢地打了,但是我不会。我就是能用汇编代码的地方坚决不找地址。我会先找到一个 HP 的普通地址(没有关联,就是地址)【要找那个不随其他变化而变化,且能引起其他变化的地址】。然后继续找修改它的地方,我找到的是 "rabiribi.exe"+8D368 的地址(你们可以打开 “查看内存”,右击选择“转到地址”,将上述地址写入,并转到对应地址)。可以看到如下几句:
汇编代码 实际效果
mov ecx,[ebp-10] // [ebp-10] = ecx
sub eax,ecx // eax = eax - ecx
mov [esi+edi+000004DC],eax // [esi+edi+000004DC] = eax
我们分析上述代码,我们找到这是血量减少的语句,[ebp-10] 是要减少多少血量,[esi+edi+000004DC] 是实际血量地址。
那么我们现在就有很多种办法进行修改,一是在整段话之前将 [ebp-10] 的值改为 0,即将 “mov [ebp-10],00000000”一句写入第一句之前;也可以在第一句之后加入“mov ecx,00000000”一句;也可以直接注释掉 “sub eax,ecx”一句或者改写成“sub eax,00000000”或者改写成“add eax,00000000” 等等,还可以注释掉后面的赋值一句。(这其实挺好理解的)无论哪一种都能达到我们生命不减少的目的。然后,我自己亲身测试了一下果然自己的生命没有减少,但是自己也无法减少敌人的血量,我的历史经验告诉我——遇到 共用代码段 了。(共用代码段就是敌人减少血量和自己减少血量所用函数相同,例如函数 def attack(Int code,Int damage) //code为生物所属ID,damage为减少的生命值)。所以遇到公用代码段,我最常用的方法就是修改公用代码利用判断语句区别传来的地址是敌人的还是自己的。使用这种方法就要找区别,我们可以在 mov [esi+edi+000004DC] 一句中加入断点,查看其各个寄存器的值,经过发现,只有当传入的地址是自己的血量值的时候 edi 寄存器的值才会是 0 ,所以我们针对 mov [esi+edi+000004DC] 一句中展开汇编:
1 [ENABLE] 2 //code from here to '[DISABLE]' will be used to enable the cheat 3 alloc(newmem,2048) 4 label(returnhere) 5 label(originalcode) 6 label(exit) 7 8 newmem: //this is allocated memory, you have read,write,execute access 9 //place your code here 10 11 originalcode: 12 cmp edi,0 13 je exit 14 mov [esi+edi+000004DC],eax 15 16 exit: 17 jmp returnhere 18 19 "rabiribi.exe"+8D368: 20 jmp newmem 21 nop 2 22 returnhere: 23 24 25 26 27 [DISABLE] 28 //code from here till the end of the code will be used to disable the cheat 29 dealloc(newmem) 30 "rabiribi.exe"+8D368: 31 mov [esi+edi+000004DC],eax 32 //Alt: db 89 84 3E DC 04 00 00