Pointer Searcher for SX OS工具为免费工具,为SXOS金手指功能寻找指针的工具
原帖下载:https://gbatemp.net/threads/572497/

本教程为个人记录 XBDE游戏的技能冷却为例子,教程为免费公开
单纯写这类特例金手指相信大部分人都感兴趣
教程前面为分析XBDE的技能冷却构架,后面是Pointer Searcher for SX OS的使用教程
前言:因为有人嫌弃某人做快餐金手指的冷却功能会让队友无脑只放一招不会AI配合连击,使用才拿干货出来做教程
XBDE里战斗中间的天赋计量表是积累方式进行运算的,这块技能在游戏里单独数据
技能UI呈现圆形计量,所以基本第一反应会想到是否是浮点
因为未知每增加一点的量是多少,只能从满状态、空状态和增长状态下寻找判断
还好SXOS的金手指搜索可通过增加&减少方式搜索
一般这类在游戏里也找不到具体数值的情况下只有一圈都判断为满值=100的浮点
浮点100十进制转换16进制=42 C8 00 00,这样很快就能找到了,在人物基础值位置附近
特殊技能位置可以用heap地址使用,天赋计量表值的例子到这结束

战技的冷却值寻找
在战技设定菜单里可以找到看到你的技能一些可见数值
一般冷却值都是从某个数值倒计时为0后就能使用的设定
但是这个变化的数值基本都是浮点
前期为了找游戏的冷却这点确实很花时间
通过SXOS金手指功能减少了多次搜索再配合浮点转换工具排查出有效的值和位置
amarec(20201006-150003)

可以看到游戏技能菜单里有个リキャストタイム(Re Cast Time)
你就知道了冷却时间值是多少了
尽量找整数的冷却秒数去搜索,因为上图排查14.6s实际内存显示为41 69 99 9A,转换工具会给你41 69 99 99的结果,你会搜不到结果出来
XBDE的技能冷却构架为“冷却倒计时/冷却时间上限”这样的形式呈现在内存里
所以你只要找对了其中一个技能的冷却位置就能排查找出其他技能的冷却位置

了解构架后你可以直接SXOS用64bit去搜索
XBDE游戏刚开始男主进入战斗的背刺技能冷却为20s,16进制=41 A0 00 00
所以可以直接搜41A0000000000000
使用技能后再搜索选择Different,基本就只有一个结果出现了
但是这个结果确保是41A00000xxxxxxxx这样(xx为倒计时剩余秒数都是未知的浮点基本41开头)
XBDE的技能冷却值找到了heap位置后是不能使用的
每次打开游戏或者更换存档读取存档都会更改位置
所以要对这个位置寻找指针

Pointer Searcher for SX OS搜索指针
初始个人用自己的工具配合CE找出的结果是
技能1 冷却倒计时 [main+1B46950]+38+10+30+288
技能1 冷却上限 [main+1B46950]+38+10+30+28C
技能2 冷却倒计时 [main+1B46950]+38+10+30+308
技能2 冷却上限 [main+1B46950]+38+10+30+30C
技能3 冷却倒计时 [main+1B46950]+38+10+30+388
技能3 冷却上限 [main+1B46950]+38+10+30+38C
技能4 冷却倒计时 [main+1B46950]+38+10+30+408
技能4 冷却上限 [main+1B46950]+38+10+30+40C
技能5 冷却倒计时 [main+1B46950]+38+10+30+488
技能5 冷却上限 [main+1B46950]+38+10+30+48C
技能6 冷却倒计时 [main+1B46950]+38+10+30+508
技能6 冷却上限 [main+1B46950]+38+10+30+50C
技能7 冷却倒计时 [main+1B46950]+38+10+30+588
技能7 冷却上限 [main+1B46950]+38+10+30+58C
技能8 冷却倒计时 [main+1B46950]+38+10+30+608
技能8 冷却上限 [main+1B46950]+38+10+30+60C
这个结果也是能用不过有问题,随时会让游戏奔溃退出,证明指针位置没有找对导致

XBDE技能排序图
图片1

目前已经清楚冷却值的构架后直接在SXOS搜索找到你的heap位置
1.记录下你的heap位置
2.再未改变heap位置的条件下Memory Dumper导出bin文件
3.因为XBDE换存档会改变heap位置请自行操作更换或退出游戏重新读取加载
4.记录每次更换存档变化的heap地址,并且对应heap的地址导出bin(记录&导出三次即可)
5.把bin文件从内存卡导出到电脑上
6.打开Pointer Searcher for SX OS
Pointer Searcher for SX OS
7.Path列下方#1空白处鼠标点击加载你第一个dump的bin文件并且在Target Address列对应填入找到的heap位置,格式为heap + xxxxxxxx
然后Value栏会出现64bit范围的数值给你参考是否填对了你找到的位置数值
8.点击Search on Dump #1后会出现结果,太多结果信息栏会显示too many results
如果直接出现几条结果的话其实不算好事,因为后面的#2 #3的用途就是拿来对比分析得出准确的指针
如果结果过少可以调整MAX Depth,Skipping nearby,Offset range三个值再点Search on Dump #1重新算结果
2
9.放上第二次第三次导出的bin文件在#2 #3上并且填写好对应heap位置,然后点Reduce by other Dump(s)
如果能出现一些结果的情况下基本都准了
去尝试测试每条结果是否有效可用

这边得出结果就是第一条[[[[MAIN+1B362B8]+5F0]+18]+30]+288可用不会奔溃游戏

Expression of Dump
这里可以填入你获得的指针结果来计算测试得出每个bin文件是否对应上了heap地址或值等
你可以尝试打开游戏不用搜索金手指直接dump出bin文件出来让Pointer Searcher for SX OS加载新的bin
选中新加载的bin后点击Anaylse后Target Address会自动填上heap
然后到SXOS定位到算出的heap位置看看内存参数是否和游戏现在的数值对等判断
当此功能还有更灵活的用法请自行发现使用
3
教程就到这里,剩下的细节各种知识怎么找想要改的地方请自行积累常识经验吧。 喜欢我的原创教程请关注微博 露易娘 等相关我个人的网站~