在塞尔达传说:旷野之息
中,神庙在地图上有四种状态:
- 从未访问过。地图上不会出现图标。
- 访问过但是未激活。图标呈黄色,无法传送。
- 神庙已激活但未通关。图标呈外蓝内黄,可以传送。
- 神庙已通关。图标呈蓝色,可以传送。
我第一直觉就是这是个枚举类型,于是找了几个小时 0123、1234 这些数字,始终没有找到地址。最后无奈对比存档文件发现地图上点亮神庙的依据是访问次数是否大于零。访问过才会出现在地图上,也就是说数据结构并不是我想的那样是一个简单的枚举类型。
查找内存地址
对于从未访问过的神庙搜索 0 即可,但是这样肯定不好找,有两个方法定位:
- 先模糊搜索,然后离神庙远一点,再靠近神庙,这样访问次数就会+1。
- 用 存档编辑器 修改神庙访问次数(方法见文章末尾链接)。改为一个特殊的数字,这样就比较好搜。
我搜索到迦奥玛·阿萨神庙
本次的地址为heap+AB30D710
,数据类型为u32
。而heap
地址当然是不可靠的,我们需要找到存储在main
中的指针。
查找指针
使用 Breeze 设置一个写入断点,断点在main+1218ACC
。
用 IDA 定位到main+1218ACC
,看看这段伪代码:
从代码看,最后一次偏移量是0x1C
,后面找指针时就找结尾是0x1C
的就行了。
根据附近的代码来看,指针深度至少在 3 层,类似这样:
1 | [[[main+xxxx] + F0] - 58] + 1C |
再次搬出 Breeze,添加目标地址到书签中,然后按下Memory Explorer
打开内存窗口
点击Jump Forward
点击Start
开始搜索
在搜索结果中看到了第一条数据的偏移量是 0x1C(图片中的 d=1c),大概率是找到了,继续Next depth
第二次搜索结果中看到了第一条数据的偏移量是 0x58(图片中的 d=58),感觉离成功越来越近了,继续Next depth
一般来说指针最多就四层或五层,我这里找到四层时就找到了,看图片中 BM 不等于0,说明找到了对应的地址并添加到了书签
然后关闭游戏,重新启动游戏,这是为了让内存地址变化,以便验证指针的正确性。到 Breeze 书签中校对值是否正确,找出最后偏移为 0x1C 的可用指针。
编程经验告诉我,相同的数据 99% 的情况下都是在一起的。发现[[main+2CA6460]+240]+???
是一个指针数组,只需要遍历这个数组就能找到所有地点访问次数的地址了。
地点数据
包含:
- 15 座塔
- 137 座神庙(多一个?)
- 4 个神兽
前面两个神庙指针链不同,可能是没找对位置。
地点名称 | 访问次数 |
---|---|
托·库摩神庙 | [[main+2CBDB88]+F0]+1C |
席亚·米乌神庙 | [[main+2CBDB88]+D8]+2C |
卡玛·拉席神庙 | [[[[main+2CA6460]+240]+10]+58]+1C |
乌塔·多神庙 | [[[[main+2CA6460]+240]+18]+58]+1C |
卡·奥裘神庙 | [[[[main+2CA6460]+240]+20]+58]+1C |
基玛·科萨萨神庙 | [[[[main+2CA6460]+240]+28]+58]+1C |
基玛·兹斯神庙 | [[[[main+2CA6460]+240]+30]+58]+1C |
塔塔卡玛·希米利神庙 | [[[[main+2CA6460]+240]+38]+58]+1C |
托·卡尤神庙 | [[[[main+2CA6460]+240]+40]+58]+1C |
哈瓦·卡伊神庙 | [[[[main+2CA6460]+240]+48]+58]+1C |
妙斯·希诺神庙 | [[[[main+2CA6460]+240]+50]+58]+1C |
飞行训练场 | [[[[main+2CA6460]+240]+58]+58]+1C |
夏·塔瓦神庙 | [[[[main+2CA6460]+240]+60]+58]+1C |
诺伊艾·罗吉神庙 | [[[[main+2CA6460]+240]+68]+58]+1C |
[[[[main+2CA6460]+240]+70]+58]+1C | |
利特村 | [[[[main+2CA6460]+240]+78]+58]+1C |
利特驿站 | [[[[main+2CA6460]+240]+80]+58]+1C |
阿科·瓦塔神庙 | [[[[main+2CA6460]+240]+88]+58]+1C |
沃力达·诺神庙 | [[[[main+2CA6460]+240]+90]+58]+1C |
[[[[main+2CA6460]+240]+98]+58]+1C | |
[[[[main+2CA6460]+240]+A0]+58]+1C | |
[[[[main+2CA6460]+240]+A8]+58]+1C | |
神兽瓦·梅德 | [[[[main+2CA6460]+240]+B0]+58]+1C |
提纳·裘扎神庙 | [[[[main+2CA6460]+240]+B8]+58]+1C |
塔邦挞之塔 | [[[[main+2CA6460]+240]+C0]+58]+1C |
基哈·乌神庙 | [[[[main+2CA6460]+240]+C8]+58]+1C |
基希罗特·摩神庙 | [[[[main+2CA6460]+240]+D0]+58]+1C |
格鲁德之塔 | [[[[main+2CA6460]+240]+D8]+58]+1C |
库伊·塔卡神庙 | [[[[main+2CA6460]+240]+E0]+58]+1C |
希·基托神庙 | [[[[main+2CA6460]+240]+E8]+58]+1C |
萨萨·卡伊神庙 | [[[[main+2CA6460]+240]+F0]+58]+1C |
依盖队基地 | [[[[main+2CA6460]+240]+F8]+58]+1C |
格鲁德小镇 | [[[[main+2CA6460]+240]+100]+58]+1C |
卡拉卡拉集市 | [[[[main+2CA6460]+240]+108]+58]+1C |
[[[[main+2CA6460]+240]+110]+58]+1C | |
[[[[main+2CA6460]+240]+118]+58]+1C | |
[[[[main+2CA6460]+240]+120]+58]+1C | |
[[[[main+2CA6460]+240]+128]+58]+1C | |
[[[[main+2CA6460]+240]+130]+58]+1C | |
[[[[main+2CA6460]+240]+138]+58]+1C | |
[[[[main+2CA6460]+240]+140]+58]+1C | |
[[[[main+2CA6460]+240]+148]+58]+1C | |
[[[[main+2CA6460]+240]+150]+58]+1C | |
[[[[main+2CA6460]+240]+158]+58]+1C | |
[[[[main+2CA6460]+240]+160]+58]+1C | |
[[[[main+2CA6460]+240]+168]+58]+1C | |
达科·塔瓦神庙 | [[[[main+2CA6460]+240]+170]+58]+1C |
古科·齐塞神庙 | [[[[main+2CA6460]+240]+178]+58]+1C |
拉丘·乌罗神庙 | [[[[main+2CA6460]+240]+180]+58]+1C |
夏达·阿达神庙 | [[[[main+2CA6460]+240]+188]+58]+1C |
基哈·托乌萨神庙 | [[[[main+2CA6460]+240]+190]+58]+1C |
拉·库阿神庙 | [[[[main+2CA6460]+240]+198]+58]+1C |
拉诺·库席神庙 | [[[[main+2CA6460]+240]+1A0]+58]+1C |
海布拉之塔 | [[[[main+2CA6460]+240]+1A8]+58]+1C |
诺基·米席神庙 | [[[[main+2CA6460]+240]+1B0]+58]+1C |
迦奥玛·阿萨神庙 | [[[[main+2CA6460]+240]+1B8]+58]+1C |
多恩巴·塔神庙 | [[[[main+2CA6460]+240]+1C0]+58]+1C |
希利特·古奥玛神庙 | [[[[main+2CA6460]+240]+1C8]+58]+1C |
塔邦达大桥驿站 | [[[[main+2CA6460]+240]+1D0]+58]+1C |
夏奥·耀神庙 | [[[[main+2CA6460]+240]+1D8]+58]+1C |
托·雅萨神庙 | [[[[main+2CA6460]+240]+1E0]+58]+1C |
摩·拉塔尼阿神庙 | [[[[main+2CA6460]+240]+1E8]+58]+1C |
米达·罗基神庙 | [[[[main+2CA6460]+240]+1F0]+58]+1C |
究尼·希神庙 | [[[[main+2CA6460]+240]+1F8]+58]+1C |
格鲁德峡谷驿站 | [[[[main+2CA6460]+240]+200]+58]+1C |
荒野之塔 | [[[[main+2CA6460]+240]+208]+58]+1C |
克·诺伊神庙 | [[[[main+2CA6460]+240]+210]+58]+1C |
神兽瓦·娜波力斯 | [[[[main+2CA6460]+240]+218]+58]+1C |
裘希·奥神庙 | [[[[main+2CA6460]+240]+220]+58]+1C |
克贝·塔瓦神庙 | [[[[main+2CA6460]+240]+228]+58]+1C |
密·苏神庙 | [[[[main+2CA6460]+240]+230]+58]+1C |
[[[[main+2CA6460]+240]+238]+58]+1C | |
夏·格玛神庙 | [[[[main+2CA6460]+240]+240]+58]+1C |
雪原驿站 | [[[[main+2CA6460]+240]+248]+58]+1C |
利·摩纳神庙 | [[[[main+2CA6460]+240]+250]+58]+1C |
忘却神殿 | [[[[main+2CA6460]+240]+258]+58]+1C |
罗纳·卡塔神庙 | [[[[main+2CA6460]+240]+260]+58]+1C |
玛丽塔驿站 | [[[[main+2CA6460]+240]+268]+58]+1C |
玛·诺拉神庙 | [[[[main+2CA6460]+240]+270]+58]+1C |
蒙亚·托玛神庙 | [[[[main+2CA6460]+240]+278]+58]+1C |
基瓦·扎塔斯神庙 | [[[[main+2CA6460]+240]+280]+58]+1C |
丘陵之塔 | [[[[main+2CA6460]+240]+288]+58]+1C |
希·达哥兹神庙 | [[[[main+2CA6460]+240]+290]+58]+1C |
复苏神庙 | [[[[main+2CA6460]+240]+298]+58]+1C |
平原外围的驿站 | [[[[main+2CA6460]+240]+2A0]+58]+1C |
鲁耀·塔乌神庙 | [[[[main+2CA6460]+240]+2A8]+58]+1C |
达·卡索神庙 | [[[[main+2CA6460]+240]+2B0]+58]+1C |
图米·恩科神庙 | [[[[main+2CA6460]+240]+2B8]+58]+1C |
艾茨·科力玛神庙 | [[[[main+2CA6460]+240]+2C0]+58]+1C |
吉诺·耀神庙 | [[[[main+2CA6460]+240]+2C8]+58]+1C |
斯玛·萨玛神庙 | [[[[main+2CA6460]+240]+2D0]+58]+1C |
迪拉·玛神庙 | [[[[main+2CA6460]+240]+2D8]+58]+1C |
卡扎·托基神庙 | [[[[main+2CA6460]+240]+2E0]+58]+1C |
达·乔卡席神庙 | [[[[main+2CA6460]+240]+2E8]+58]+1C |
萨斯·科萨神庙 | [[[[main+2CA6460]+240]+2F0]+58]+1C |
尼阿·奈阿神庙 | [[[[main+2CA6460]+240]+2F8]+58]+1C |
卡塔·丘基神庙 | [[[[main+2CA6460]+240]+300]+58]+1C |
海拉鲁城堡 | [[[[main+2CA6460]+240]+308]+58]+1C |
亚卡·玛塔神庙 | [[[[main+2CA6460]+240]+310]+58]+1C |
平原之塔 | [[[[main+2CA6460]+240]+318]+58]+1C |
加·巴希夫神庙 | [[[[main+2CA6460]+240]+320]+58]+1C |
玛·奥努神庙 | [[[[main+2CA6460]+240]+328]+58]+1C |
罗希塔·奇古神庙 | [[[[main+2CA6460]+240]+330]+58]+1C |
耀瓦卡·伊尔塔神庙 | [[[[main+2CA6460]+240]+338]+58]+1C |
初始之塔 | [[[[main+2CA6460]+240]+340]+58]+1C |
露奈·科力巴神庙 | [[[[main+2CA6460]+240]+348]+58]+1C |
湖之塔 | [[[[main+2CA6460]+240]+350]+58]+1C |
瓦·摩达伊神庙 | [[[[main+2CA6460]+240]+358]+58]+1C |
亚·纳迦神庙 | [[[[main+2CA6460]+240]+360]+58]+1C |
伊奥·索奥神庙 | [[[[main+2CA6460]+240]+368]+58]+1C |
基托·瓦瓦伊神庙 | [[[[main+2CA6460]+240]+370]+58]+1C |
克洛格森林 | [[[[main+2CA6460]+240]+378]+58]+1C |
基耀·乌神庙 | [[[[main+2CA6460]+240]+380]+58]+1C |
[[[[main+2CA6460]+240]+388]+58]+1C | |
[[[[main+2CA6460]+240]+390]+58]+1C | |
玛姆·拉诺神庙 | [[[[main+2CA6460]+240]+398]+58]+1C |
森岭之塔 | [[[[main+2CA6460]+240]+3A0]+58]+1C |
库恩·希达吉神庙 | [[[[main+2CA6460]+240]+3A8]+58]+1C |
纳米卡·奥兹神庙 | [[[[main+2CA6460]+240]+3B0]+58]+1C |
湿地驿站 | [[[[main+2CA6460]+240]+3B8]+58]+1C |
卡亚·米瓦神庙 | [[[[main+2CA6460]+240]+3C0]+58]+1C |
席罗·席拉神庙 | [[[[main+2CA6460]+240]+3C8]+58]+1C |
河畔驿站 | [[[[main+2CA6460]+240]+3D0]+58]+1C |
瓦哥·卡塔神庙 | [[[[main+2CA6460]+240]+3D8]+58]+1C |
瓦希·辽科神庙 | [[[[main+2CA6460]+240]+3E0]+58]+1C |
普玛·尼特神庙 | [[[[main+2CA6460]+240]+3E8]+58]+1C |
希·库乔夫神庙 | [[[[main+2CA6460]+240]+3F0]+58]+1C |
高原驿站 | [[[[main+2CA6460]+240]+3F8]+58]+1C |
卡奥·玛卡神庙 | [[[[main+2CA6460]+240]+400]+58]+1C |
希·塔塔恩科神庙 | [[[[main+2CA6460]+240]+408]+58]+1C |
晓拉·哈神庙 | [[[[main+2CA6460]+240]+410]+58]+1C |
鼓隆城 | [[[[main+2CA6460]+240]+418]+58]+1C |
[[[[main+2CA6460]+240]+420]+58]+1C | |
[[[[main+2CA6460]+240]+428]+58]+1C | |
[[[[main+2CA6460]+240]+430]+58]+1C | |
希摩·依托塞神庙 | [[[[main+2CA6460]+240]+438]+58]+1C |
[[[[main+2CA6460]+240]+440]+58]+1C | |
废弃的北部矿坑 | [[[[main+2CA6460]+240]+448]+58]+1C |
森岭驿站 | [[[[main+2CA6460]+240]+450]+58]+1C |
南部采矿场 | [[[[main+2CA6460]+240]+458]+58]+1C |
米罗·茨席神庙 | [[[[main+2CA6460]+240]+460]+58]+1C |
丘·拉姆席神庙 | [[[[main+2CA6460]+240]+468]+58]+1C |
协莫·拉塔神庙 | [[[[main+2CA6460]+240]+470]+58]+1C |
达塔·库斯神庙 | [[[[main+2CA6460]+240]+478]+58]+1C |
塔罗·尼席神庙 | [[[[main+2CA6460]+240]+480]+58]+1C |
[[[[main+2CA6460]+240]+488]+58]+1C | |
[[[[main+2CA6460]+240]+490]+58]+1C | |
[[[[main+2CA6460]+240]+498]+58]+1C | |
[[[[main+2CA6460]+240]+4A0]+58]+1C | |
[[[[main+2CA6460]+240]+4A8]+58]+1C | |
双子山之塔 | [[[[main+2CA6460]+240]+4B0]+58]+1C |
希贝·尼亚斯神庙 | [[[[main+2CA6460]+240]+4B8]+58]+1C |
希贝·尼罗神庙 | [[[[main+2CA6460]+240]+4C0]+58]+1C |
哈尤·达玛神庙 | [[[[main+2CA6460]+240]+4C8]+58]+1C |
利·达席神庙 | [[[[main+2CA6460]+240]+4D0]+58]+1C |
双子驿站 | [[[[main+2CA6460]+240]+4D8]+58]+1C |
托托·伊萨神庙 | [[[[main+2CA6460]+240]+4E0]+58]+1C |
晓达·萨神庙 | [[[[main+2CA6460]+240]+4E8]+58]+1C |
湖畔驿站 | [[[[main+2CA6460]+240]+4F0]+58]+1C |
塞伊·乌托神庙 | [[[[main+2CA6460]+240]+4F8]+58]+1C |
费罗尼之塔 | [[[[main+2CA6460]+240]+500]+58]+1C |
卡米拉·奥姆纳神庙 | [[[[main+2CA6460]+240]+508]+58]+1C |
古·阿齐托神庙 | [[[[main+2CA6460]+240]+510]+58]+1C |
夏德·罗恩神庙 | [[[[main+2CA6460]+240]+518]+58]+1C |
达卡·卡神庙 | [[[[main+2CA6460]+240]+520]+58]+1C |
克哈·拉玛神庙 | [[[[main+2CA6460]+240]+528]+58]+1C |
神兽瓦·鲁达尼亚 | [[[[main+2CA6460]+240]+530]+58]+1C |
[[[[main+2CA6460]+240]+538]+58]+1C | |
利诺·希米卡神庙 | [[[[main+2CA6460]+240]+540]+58]+1C |
山麓驿站 | [[[[main+2CA6460]+240]+548]+58]+1C |
奥尔汀之塔 | [[[[main+2CA6460]+240]+550]+58]+1C |
摩阿·基希托神庙 | [[[[main+2CA6460]+240]+558]+58]+1C |
萨·达究神庙 | [[[[main+2CA6460]+240]+560]+58]+1C |
塔·姆尔神庙 | [[[[main+2CA6460]+240]+568]+58]+1C |
萨奥·科席神庙 | [[[[main+2CA6460]+240]+570]+58]+1C |
拉聂尔之塔 | [[[[main+2CA6460]+240]+578]+58]+1C |
拉纳·罗基神庙 | [[[[main+2CA6460]+240]+580]+58]+1C |
米兹·耀神庙 | [[[[main+2CA6460]+240]+588]+58]+1C |
[[[[main+2CA6460]+240]+590]+58]+1C | |
达乌·纳艾神庙 | [[[[main+2CA6460]+240]+598]+58]+1C |
卡姆·尤奥神庙 | [[[[main+2CA6460]+240]+5A0]+58]+1C |
哈诺特之塔 | [[[[main+2CA6460]+240]+5A8]+58]+1C |
塔瓦·吉努神庙 | [[[[main+2CA6460]+240]+5B0]+58]+1C |
亚奥·玛耀神庙 | [[[[main+2CA6460]+240]+5B8]+58]+1C |
丘卡·纳塔神庙 | [[[[main+2CA6460]+240]+5C0]+58]+1C |
[[[[main+2CA6460]+240]+5C8]+58]+1C | |
[[[[main+2CA6460]+240]+5D0]+58]+1C | |
兹纳·卡伊神庙 | [[[[main+2CA6460]+240]+5D8]+58]+1C |
茨茨阿·尼玛神庙 | [[[[main+2CA6460]+240]+5E0]+58]+1C |
南阿卡莱驿站 | [[[[main+2CA6460]+240]+5E8]+58]+1C |
阿卡莱之塔 | [[[[main+2CA6460]+240]+5F0]+58]+1C |
达席·希诺神庙 | [[[[main+2CA6460]+240]+5F8]+58]+1C |
吉兹·卡夫伊神庙 | [[[[main+2CA6460]+240]+600]+58]+1C |
一始村 | [[[[main+2CA6460]+240]+608]+58]+1C |
[[[[main+2CA6460]+240]+610]+58]+1C | |
[[[[main+2CA6460]+240]+618]+58]+1C | |
[[[[main+2CA6460]+240]+620]+58]+1C | |
[[[[main+2CA6460]+240]+628]+58]+1C | |
卓拉领地 | [[[[main+2CA6460]+240]+630]+58]+1C |
[[[[main+2CA6460]+240]+638]+58]+1C | |
[[[[main+2CA6460]+240]+640]+58]+1C | |
奈兹·耀玛神庙 | [[[[main+2CA6460]+240]+648]+58]+1C |
萨塔·卡达神庙 | [[[[main+2CA6460]+240]+650]+58]+1C |
玛乌·艾鲁亚神庙 | [[[[main+2CA6460]+240]+658]+58]+1C |
达·基基神庙 | [[[[main+2CA6460]+240]+660]+58]+1C |
神兽瓦·露塔 | [[[[main+2CA6460]+240]+668]+58]+1C |
鲁克·玛神庙 | [[[[main+2CA6460]+240]+670]+58]+1C |
吉塔·萨米神庙 | [[[[main+2CA6460]+240]+678]+58]+1C |
[[[[main+2CA6460]+240]+680]+58]+1C | |
哈特诺古代研究所 | [[[[main+2CA6460]+240]+688]+58]+1C |
[[[[main+2CA6460]+240]+690]+58]+1C | |
[[[[main+2CA6460]+240]+698]+58]+1C | |
[[[[main+2CA6460]+240]+6A0]+58]+1C | |
[[[[main+2CA6460]+240]+6A8]+58]+1C | |
米亚马·迦纳神庙 | [[[[main+2CA6460]+240]+6B0]+58]+1C |
沃托里村 | [[[[main+2CA6460]+240]+6B8]+58]+1C |
姆奥·吉姆神庙 | [[[[main+2CA6460]+240]+6C0]+58]+1C |
玛·卡亚神庙 | [[[[main+2CA6460]+240]+6C8]+58]+1C |
阿卡莱古代研究所 | [[[[main+2CA6460]+240]+6D0]+58]+1C |
图·卡罗神庙 | [[[[main+2CA6460]+240]+6D8]+58]+1C |
东阿卡莱驿站 | [[[[main+2CA6460]+240]+6E0]+58]+1C |
卡茨·托萨神庙 | [[[[main+2CA6460]+240]+6E8]+58]+1C |
利塔·兹摩神庙 | [[[[main+2CA6460]+240]+6F0]+58]+1C |
卡·姆神庙 | [[[[main+2CA6460]+240]+6F8]+58]+1C |
基奥·达夫纳神庙 | [[[[main+2CA6460]+240]+700]+58]+1C |
科尼·希卡神庙 | [[[[main+2CA6460]+240]+708]+58]+1C |
希·尤塔神庙 | [[[[main+2CA6460]+240]+710]+58]+1C |
塔诺·阿神庙 | [[[[main+2CA6460]+240]+718]+58]+1C |
洽斯·科塔神庙 | [[[[main+2CA6460]+240]+720]+58]+1C |
库古·齐德神庙 | [[[[main+2CA6460]+240]+728]+58]+1C |
显示神庙位置
我们可以将所有神庙访问次数写入大于零的值,这样地图上就能显示神庙了。但是这样做金手指太痛苦了,毕竟有一百多个神庙。。。而且为每个神庙做金手指容易出错。
更好的做法是修改程序逻辑,我们设置一个读断点,看看是哪里访问了次数数据。
游戏在main+109dfb0
处不停地读取地点神庙次数,接着有两处cmp xxx
语句,都是和次数有关的判断,都nop
掉。
再往下翻一点,还有一处
一共三处,都 nop 掉,抱着试试看的心理测试一下,结果瞎猫碰上死耗子,神庙全显示了!
金手指:
1 | [显示神庙位置] |
显示高塔位置
思路与神庙一样,在访问次数的地方设置读断点,断在了main+109FA30
处。代码和上面是一样的,nop 掉三处即可。
金手指:
1 | [显示高塔位置] |
显示古代研究所位置
思路与神庙一样,在访问次数的地方设置读断点,断在了main+10A2110
处。代码和上面是一样的,nop 掉三处即可。
金手指:
1 | [显示古代研究所位置] |
显示神兽位置
思路与神庙一样,在访问次数的地方设置读断点,断在了main+10A1950
处。代码和上面是一样的,nop 掉三处即可。
金手指:
1 | [显示神兽位置] |
显示功能 Flag
为了搞清楚控制显示的 flag 到底在哪,于是我查看了一下高塔相关的伪代码:
重点在偏移 0x3C 处,这是一个 u32 类型的 flag,其中就包括控制神庙是否显示、是否可传送等等功能!
这个函数是控制高塔显示与否的函数,从代码上可以与显示有关的 flag 在第 16、17 位。测试发现控制显示的 flag 是第 16 位(0x8000)。
flag 的指针链是什么呢?仔细观察代码就可以发现了,和访问次数的指针一样,只是少一级,比如:
1 | [[[[main+2CA6460]+240]+340]+58]+1C 初始之塔的次数地址 |
传送功能 Flag
经过反复对比、测试发现,传送 flag 在第 10 位(0x200)。
因为根据前面的经验,知道了这个游戏在渲染时不停的写入 flag,所以我们设置写入断点,会找到好几个地方写入,一个个翻一下有没有关于 0x200 立即数的操作,不意外的找到了:
来到 IDA 中看看清楚:
我们只需要修改 if 判断语句即可,让它始终写入传送 flag。
金手指
前面的金手指都是用的 nop 指令,发现一个小问题,对于托·库摩神庙
神庙有时候没有效果,有时候又能显示。
所以最终我改用了修改 flag 的方式做金手指,这样更稳妥。
1 | [显示神庙位置] |
相关资料
『塞尔达-旷野之息』神庙高塔全标记初始存档及修改方法
【金手指教程5】解鎖 FPS , MultiSearch 及 簡易找指針方法
【金手指教程6】对比存档找出想要的资料