[教程]从零开始学会NS金手指 原理到制作

bt365体育平台3 2025-08-24 19:02:24 admin 7534 457
[教程]从零开始学会NS金手指 原理到制作

从零开始学会NS金手指 原理到制作

我的目标就是 我要为我自己做一个ARMS的金手指

顺便告诉大家 原理和实现方法

原理部分 非常重要的基础理论 是学习金手指制作的内功心法

1、数据类型

所有数据都是由某个数据类型构成

有1字节 2字节 4字节 8字节的区别

可以记载的数据量 不一样 比如1字节 只能记录256个数据 即0-255

相关数据请自行百度学习 篇幅问题这里只做概述

2、基址 偏移量

从修改器开始到现在 游戏的变革 导致每次开局游戏 游戏地址都会变化

所以使用了 C++指针的概念 作为偏移前的 基址(全称从来没有人告诉过我 我一直称之为“基础地址”)

在PC端的 常用表达式为 [00041000]+2FC 这样的表达式& N* t0 U9 u9 D" r' D

其中 00041000 为基址

2FC 为偏移量

篇幅问题 想了解更多的 请自行百度 这里只是让你知道知道有那么个概念

我们的目标是做金手指的

3、SXos金手指的9个运算符

0:写入内存

1:条件语句

2:条件语句的结束

3:循环

4:加载寄存器的值

5:从内存加载寄存器值

6:将值存储到寄存器的存储器地址

7:应用算术运算进行注册

8:检查按下的按钮

下面我要直接用现成的金手指 来解说 这9个运算符号的作用了

更多的关于运算符的使用 请看我附件上传的SXos金手指使用说明书 的google汉化版本

这个是 玛丽 奥德赛 的金币金手指代码

[9999 Gold Coins]

580f0000 0264af58

780f0000 004ff8a0

640f0000 00000000 0000270f

要制作金手指 首先要知道这个金手指的结构是什么

AAAAAAAA BBBBBBBB

首先A字段 是命令声明符号 这段话说明了 这一行的代码 所使用的 命令 和 长度等声明

B字段 就很简单了 就是 地址

580f0000 0264af58

第一段580f0000 5:从内存加载寄存器值

读取8字节 数据从寄存器

第二段0264af58 要读取的地址位置0264af58

780f0000 004ff8a0

第一段780f0000 7:应用算术运算进行注册

780 7进行运算处理 8代表了 还是8个字节 这里注意这个0 这里它表示是要做加法运算

第二段是要加上多大的数值 就是偏移量

然后 这里总结一下 这样一来就实现了PC端常见的表达式的这样一个运算

[0264af58]+004ff8a0

这么一来 我们也就算清楚了 真正的地址位置 到底是在哪里?

640f0000 00000000 0000270f

第三句就是写入数据

第一段640f0000 6:将值存储到寄存器的存储器地址

不知道为什么 这里选择写入的4字节 我觉得应该是金币只能够9999 270f是十六进制的 9999

理论上这个640f0000和680f0000 是一样的效果 又或者是只会写入声明的长度 后面的8字节数据是预留的

第二段 00000000 0000270f 这个要作为一个整体看 这是一个8字节长度的整数

前面4字节是00000000 是空的 可以不理会 后面4字节 0000270f就是 10进制的9999了

未完待续...因为我还没开始做呢 目前先讲解一下原理

金手指制作.7z

(4.7 KB, 下载次数: 341)

2019-10-14 19:11 上传

点击文件名下载附件

下载积分: 金钱 -1

制作部分 这里就相对的简单了 但是不了解原理的话看着直接就是懵的

1、搜索地址

模糊搜索 和 精确搜索 在搜索内存的时候有着这样的两种搜索模式

一种是绝对的 已知的值 另外的就是 不知道的的 只知道可能是往某个方向变化的值

可以使用逻辑关系符表达 大于、小于、等于、不等于、区间值(0-100之间) 、增加、减少了多少(绝对量)

2、确定地址

首先就是要进入SXos搜索了 这里不演示复杂的搜索方法

使用绝对化的 可视的数值进行搜索

093036anbzx8k8keyqbmyd.jpg (69.78 KB, 下载次数: 58)

下载附件

2019-10-14 19:13 上传

选用的游戏是 神臂斗士

我的内存卡是exFat的 使用金手指 会出现警告提示

exfat SDcard not supported yed(大意 仍然不支持exfat格式的内存卡)

我们选择lgnore warning(忽略错误) 不管他 我又不读写内存卡 对吧?

打开之后会询问你 使用模糊搜索还是准确搜索 模糊搜索是需要读写内存卡的 我这里不用

我们选择 exact 精确搜索 输入对应的数值

这里需要把10进制转换为16进制来搜索 这里是教做金手指的 详细的转换方法 自行百度

093047lfmx47xnmekfkfl6.jpg (58.13 KB, 下载次数: 57)

下载附件

2019-10-14 19:13 上传

093104il4vvz222v8zl4lg.jpg (67 KB, 下载次数: 67)

下载附件

2019-10-14 19:13 上传

093120iyav28hn1haj17za.jpg (60.7 KB, 下载次数: 63)

下载附件

2019-10-14 19:13 上传

一般来说 第一次搜索之后会出现

too many hits left (太多 点击左键继续)

这里它告诉你 找到的地址太多了 不能够给你显示查看 请继续确定地址到小范围内

直到出现

you can now view the candidate list(你现在能够查看数据列表)

那么我们就过去看看 是什么一个情况

093131q35598pd5t0srk5k.jpg (58.21 KB, 下载次数: 59)

下载附件

2019-10-14 19:13 上传

093212zq4v4vf4rjdlkedv.jpg (67.92 KB, 下载次数: 65)

下载附件

2019-10-14 19:13 上传

因为找到了4个地址 我也不确定 谁是对的

干脆全改了 直接编辑RAM 运行内存 修改为 bd 06(原本bd 05 对应10进制整数1469)

bd 06 对应10进制整数1725 我修改了一下 返回界面查看 确实就修改成功了 这就是我们要找到的地址数据

093141p3322oog33g3299a.jpg (94.08 KB, 下载次数: 62)

下载附件

2019-10-14 19:13 上传

093226pbxbfdxo563bhaah.jpg (76 KB, 下载次数: 58)

下载附件

2019-10-14 19:13 上传

最后我还调皮的改了一下 bd ff = 65469 再度确认了 这个是没问题的

093230gyhh7va0773ys0zs.jpg (76.07 KB, 下载次数: 68)

下载附件

2019-10-14 19:13 上传

3、理清编写表达式的逻辑

最后我们直接编写表达式 来进行制作 不过我最终的金手指并没有做出来

为什么呢?因为这里的地址有两种状态 我没有进一步的寻找 准确的静态地址(这个太费时间了 就交给以后的我慢慢完成吧)

MAIN = 可靠的静态地址

HEAP = 动态地址

刚刚我们找到的 地址里 能够成功修改 游戏的数据的 实际上是HEAP动态地址 他是不可靠的

每次启动游戏 都要使用上诉提及的 通过静态地址 重定位的方式来找到 HEAP动态地址 然后计算偏移值确定最终地址

理论上 HEAP动态地址 是允许多次偏移的 所以也会有可能在以后的游戏出现 [[00041000]+2fc]+100 这类的多级偏移

4、完成编写

最后 我就开始 直接写了最好使用英文来写(这个地址 目前应是可以准确读取 金币数量的)

写入更改数量应该是不行的 请自行测试 教学结束了(遇到不懂的 地方请百度和查看我上传的使用说明书)

[Max Gold]

580F0000 014c7de0

620F0000 0000FFFF

相关推荐