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

17
回复
27368
查看
  [复制链接]
  • TA的每日心情
    奋斗
    2024-1-15 14:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    1113

    主题

    -6

    回帖

    900

    积分

    VIP会员

    Rank: 5Rank: 5

    积分
    900
    发表于 2019-10-14 19:17:33 | 显示全部楼层 |阅读模式
    从零开始学会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, 下载次数: 339)

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

    1、搜索地址
    模糊搜索 和 精确搜索    在搜索内存的时候有着这样的两种搜索模式
    一种是绝对的 已知的值  另外的就是 不知道的的  只知道可能是往某个方向变化的值
    可以使用逻辑关系符表达 大于、小于、等于、不等于、区间值(0-100之间)  、增加、减少了多少(绝对量)


    2、确定地址
    首先就是要进入SXos搜索了  这里不演示复杂的搜索方法
    使用绝对化的 可视的数值进行搜索
    093036anbzx8k8keyqbmyd.jpg
    选用的游戏是 神臂斗士

    我的内存卡是exFat的  使用金手指 会出现警告提示
    exfat SDcard not supported yed(大意 仍然不支持exfat格式的内存卡)
    我们选择lgnore warning(忽略错误)  不管他  我又不读写内存卡 对吧?


    打开之后会询问你 使用模糊搜索还是准确搜索  模糊搜索是需要读写内存卡的  我这里不用
    我们选择 exact 精确搜索   输入对应的数值


    这里需要把10进制转换为16进制来搜索  这里是教做金手指的 详细的转换方法  自行百度
    093047lfmx47xnmekfkfl6.jpg
    093104il4vvz222v8zl4lg.jpg
    093120iyav28hn1haj17za.jpg

    一般来说 第一次搜索之后会出现
    too many hits left (太多 点击左键继续)
    这里它告诉你  找到的地址太多了 不能够给你显示查看  请继续确定地址到小范围内


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


    那么我们就过去看看  是什么一个情况
    093131q35598pd5t0srk5k.jpg

    093212zq4v4vf4rjdlkedv.jpg

    因为找到了4个地址  我也不确定  谁是对的
    干脆全改了   直接编辑RAM 运行内存  修改为 bd 06(原本bd 05 对应10进制整数1469)
    bd 06 对应10进制整数1725  我修改了一下  返回界面查看 确实就修改成功了  这就是我们要找到的地址数据

    093141p3322oog33g3299a.jpg
    093226pbxbfdxo563bhaah.jpg

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


    093230gyhh7va0773ys0zs.jpg

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

    最后我们直接编写表达式 来进行制作 不过我最终的金手指并没有做出来
    为什么呢?因为这里的地址有两种状态  我没有进一步的寻找  准确的静态地址(这个太费时间了  就交给以后的我慢慢完成吧)

    MAIN  =  可靠的静态地址
    HEAP  =  动态地址

    刚刚我们找到的  地址里 能够成功修改 游戏的数据的 实际上是HEAP动态地址 他是不可靠的
    每次启动游戏 都要使用上诉提及的  通过静态地址 重定位的方式来找到 HEAP动态地址 然后计算偏移值确定最终地址
    理论上  HEAP动态地址 是允许多次偏移的  所以也会有可能在以后的游戏出现 [[00041000]+2fc]+100  这类的多级偏移

    4、完成编写

    最后 我就开始 直接写了最好使用英文来写(这个地址 目前应是可以准确读取 金币数量的)
    写入更改数量应该是不行的  请自行测试  教学结束了(遇到不懂的 地方请百度和查看我上传的使用说明书)
    [Max Gold]
    580F0000 014c7de0
    620F0000 0000FFFF



    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    23

    回帖

    72

    积分

    游戏段位 · 白银

    Rank: 2

    积分
    72
    发表于 2020-2-20 15:23:50 | 显示全部楼层
    真心牛皮
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    84

    回帖

    198

    积分

    游戏段位 · 白银

    Rank: 2

    积分
    198
    发表于 2020-3-11 14:42:51 | 显示全部楼层
    我下载了AB,2个宝可梦金手指,2份金手指中,A能遇闪光,B不能,B能经验倍数,A不能。然后我将AB能用的代码黏贴复制在新的txt文件中,居然不能使用(或者直接在原来的金手指txt文件中添加或删除的话会直接出红色代码死机),请问是咋回事啊?


    我下载了AB,2个宝可梦金手指,2份金手指中,A能遇闪光,B不能,B能经验倍数,A不能。然后我将AB能用的代码黏贴复制在新的txt文件中,居然不能使用(或者直接在原来的金手指txt文件中添加或删除的话会直接出红色代码死机),请问是咋回事啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-12-4 23:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    61

    回帖

    145

    积分

    游戏段位 · 白银

    Rank: 2

    积分
    145
    发表于 2020-6-26 23:11:00 | 显示全部楼层
    eye2049 发表于 2020-3-11 14:42
    我下载了AB,2个宝可梦金手指,2份金手指中,A能遇闪光,B不能,B能经验倍数,A不能。然后我将AB能用的代码 ...

    不要用文本文档编辑,而是使用EditPlus 5编辑;

    编辑完成后另存为副本,确保编码为UTF-8,这样系统才能识别金手指。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    32

    回帖

    117

    积分

    游戏段位 · 白银

    Rank: 2

    积分
    117
    发表于 2020-7-6 11:00:30 | 显示全部楼层
    EditPlus 5编辑
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    21

    回帖

    63

    积分

    游戏段位 · 白银

    Rank: 2

    积分
    63
    发表于 2020-7-27 16:30:12 | 显示全部楼层
    老板NB,授人以鱼
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    22

    回帖

    60

    积分

    VIP会员

    Rank: 5Rank: 5

    积分
    60
    发表于 2020-9-2 23:50:26 | 显示全部楼层
    1.2.0 使用老板的穿墙很好用,特别有些东西复制出来,不小心扔在地上,捡不起来必须穿墙捡。但是现在升级到1.4.2了 。游戏地址更新了,新的地址老板如何找到能否说一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    22

    回帖

    60

    积分

    VIP会员

    Rank: 5Rank: 5

    积分
    60
    发表于 2020-9-2 23:52:34 | 显示全部楼层
    动物森友会 1.2.0 使用老板的穿墙很好用,特别有些东西复制出来,不小心扔在地上,捡不起来必须穿墙捡。但是现在升级到1.4.2了 。游戏地址更新了,新的地址老板如何找到能否说一下,这个是老板提供的1.2.0
    [穿墙 L+Y开启]
    80000048
    04000000 00E95E50 12800014
    20000000

    [穿墙 L+A关闭]
    80000041
    04000000 00E95E50 B9538014
    20000000
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    26

    回帖

    103

    积分

    游戏段位 · 白银

    Rank: 2

    积分
    103
    发表于 2020-9-4 14:11:45 | 显示全部楼层
    求更新帖子  找静态
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    7

    回帖

    32

    积分

    游戏段位 · 青铜

    Rank: 1

    积分
    32
    发表于 2020-10-26 13:41:05 | 显示全部楼层
    看了LZ的帖子,我只想说一句很好很强大!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关注我们:易贷与你快乐分享

    官方微信

    APP下载

    全国服务热线:

    400-000-6618

    地址:成都市锦江区东华正街42号广电仕百达国际大厦25楼

    邮编:610066 Email:mail@yidai.com

    Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.  威海迪恩网络科技有限公司 版权所有   浙ICP备14539863号

    上海易贷网金融信息服务有限公司  沪ICP备15020893号-1

    Archiver-手机版-小黑屋- 杭州摩登天下网络技术工作室 |网站地图 

    上海金融信息行业协会理事单位 | 上海市信息服务业行业协会会员单位 | 上海市网络信贷服务业企业联盟单位