以无间m寺为例简单讲解一下修改器制作
准备工具
- x86电脑一台
- 无间m寺 游戏一份
- Cheat Engine (旧版本也可,没有用到新特性)
准备动作:CE打开进程
调试器附加到进程,后面会需要调试功能,单纯的打开是不够的。
血量修改(无敌)
1.先定位血量的内存位置
数据类型:单浮点(float),明文无加密(显示1000就搜索1000)
基本操作不用多说,血量变动后只有一个结果: (末尾加 .0 可以提高精度)
2.查找改写血量的代码
游戏里故意被打一下,一般只会有一个结果:
3.尝试锁血,用空指令替换。
回到游戏中却发现,怪物同样不掉血了 😓
4.找到只访问自己血量的代码
找出什么访问了此地址
回到游戏中继续然后立即暂停,得到三条访问记录:
选中一条记录,点击右侧 显示反汇编程序 定位到代码,然后右键 --> 找出此代码访问的地址 ,回到游戏看看这条指令访问了哪些血量
我们运气很好,这条指令只访问主角的血量:
此处[rax+458] 即是我们主角的血量了
5.内存注入,让这条指令帮我们锁血
点击 工具 --> 自动汇编
模板 --> 全部注入 --> 确定 (注入点会自动填写为内存窗口的选中汇编指令)
[rax+000458] 是主角的血量,那我们只要在 newmem: 后写上
mov [rax+000458],(float)9999 //(float)代表浮点数,(int)表示十进制数,什么都不写表示十六进制数
这样的代码就能锁定血量为 浮点数 9999 了。锁定频率是被注入处的执行频率
点击 文件 --> 分配到当前的CT表 ,将我们写好的代码保存到主界面的表里去
可以看到,主界面下方多了一条 自动汇编脚本 ,这就是我们刚才写好的自动化注入脚本,点击左边的方框就能一键开启功能
双击 自动汇编脚本 几个字可以修改这个描述
6.启用脚本试试效果:
体力修改
1.找到体力的内存
数据类型:单浮点,明文无加密
非常简单,变动后只有一个结果,就不贴图了
2.查找改写体力的内存
操作同上,这次有两条代码,其中一条的执行次数 跟 游戏里消耗体力的次数一致,那就用这条了。
不用担心修改对怪物生效,因为怪物没有体力设定
3.编写自动注入脚本
操作同上,不过这次的注入不需要额外操作,只需要将原来的指令改为空指令即可
精简以后:
4.保存代码,测试
腐化值修改
1.找腐化值内存,查找改写此地址的代码
数据类型:单浮点,明文无加密
非常简单,只有一个值,一个代码,无需担心对怪物生效
2.编写自动汇编脚本
同体力,改成 90 即可
3.开启测试
水晶骷髅修改(双倍拾取 & 直接修改数量)
1.定位数据的内存
数据类型:4字节,明文无加密。
可能最终会有两个结果没法区分,尝试将两个结果修改为不同的数值,比如一个10,一个20,再去游戏里拾取一个骷髅,看看是变成11还是21,就能确定哪个地址是有效的了。
2.找改写数量的代码
拾取一个骷髅后得到一条代码:
3.代码注入,实现拾取双倍 or 任意倍率
阅读汇编, 容易知道:[r14+00168] 是拥有的数量,ebp 则是刚才拾取的数量 1。我们修改 ebp 的值就能实现多倍拾取了
注入代码的含义是 ebp*2 然后赋值给 ebp
4.人造指针,实现直接编辑数量
利用注入代码将 r14 的值保存下来便能免去找基址的过程
主界面 手动添加地址,将骷髅数量的 指针 加入CT表,方便编辑。勾选 指针。基址是刚才的符号 skull ,一级偏移就是 [r14 + 168] 里面的168,数据类型 4字节
确定后如图: 可以直接修改骷髅的数量,不需要找基址。(如果地址显示 P->000000168,得拾取一个骷髅才能刷新人造指针)
将这条地址拖到 骷髅数量修改 这个行上,使得它成为脚本的子项目
然后右键 骷髅数量修改 ,点击 群组配置 -> 此项目未激活时隐藏子项 。提升用户体验
话说
适度游戏益脑,过度修改益肝