CheatMaker 论坛

注册

 

发新话题 回复该主题

关于天地创造几种HACK效果的探讨! [复制链接]

1#
在看了银河兄在公众号发布的《天地创造》HACK Rom的文章后,正好我本人也非常喜欢这个游戏,借这个机会以银河发布的Rom为榜样,一边回顾游戏一边尝试看自己是否也能做出相应的效果出来。必竟还是水平不足,在花了好几天时间后,除了全屏攻击,绝大部份的效果都能实现了。但和银河兄的Rom对比来看,稍有点不一样,为了能知其所以然,所以想就这方面的问题向银河兄请教或探讨一下。

像金钱不减、生命不减这种比较简单就直接略过了,首先从无敌效果开始说起。得益于之前研究STG游戏《重装战机Strike Gunner》的心得,在摸索此游戏无敌效果的过程中,一共实现了三种不同效果的无敌。第一种我命名为“格档无敌”,效果为接触敌人时,会不断响起格档成功的音效,但我方人物是没有任何影响和伤害的,且不会影响初始剧情。第二种无敌则必需被敌人打中一次才会生效,不仅效果不算完美,而且会影响初始的砸门剧情(门砸不开),但不影响后面剧情。而第三种则是最完美的,就像STG游戏那样,人物似乎在另一个空间,敌方角色不会对我方造成任何影响。从目前测试到第二章来看,对剧情还没有不利的影响。本来还有一种金手指无敌想用按键开关来实现,但正如银河兄在某论坛所说,此游戏用了这么大的容量,居然很难找到大段的空白地址来转移程序,加上扩容不便(本人也不会)所以就放弃了。真不知是怎么把程序写这么满的。

不过,在用模拟器双开分别测试时,发现银河兄和我所有的无敌效果都无法对试练塔2一处敌人的无法移动魔法免疫,即便用修改所得的,能免疫所有异常效果的守护铠甲也没有用。此外,在面对后面守护者的睡眠魔法时,我的格挡无敌和完美无敌都没有效果,而银河兄的却可以。截止到第二章为止,小结我和银河兄的无敌效果区别:我的版本不会影响剧情,但无法免疫睡眠魔法,会在攻略迷宫时造成一些影响。而银河兄的版本会因为无法触碰宝箱导致无法完成初始剧情,只能用存档跳过。由于时间有限,目前只测试到第二章开头,是否会对后续剧情造成影响还不可知。

因此,关于无敌想了解一下银河兄的版本是怎么一回事,实现过程是怎样的?是什么原因导致无法触碰剧情宝箱呢?是以生命值减少或变动为突破口的吗?能否在此基础上,增加对魔法免疫的效果呢?如果可能想结合两者的优点,实现一个真正完美无缺的无敌效果。

接下来还想就“必定爆击”效果继续探讨一下。像这类的ARPG或仙剑类的RPG,关于爆击一般都和运气(LUCK)属性相关,正好此游戏除了攻击和防御外,就剩运气属性了。按此推测,果然找到了读取运气值的代码。可惜本人水平有限,只能用HOOK代码的方法,强行写入一个较大的数值来实现,无法找到关键判断或跳转。因此,本人的爆击效果出现的机率大概在99%左右,不算完美。所以这方面也想请银河兄谈谈实现过程是怎样的,是以什么方式为突破口的。

以上两种主要是想了解银河兄在思路方面有什么不同,以及在调试中,如何定位关键代码或跳转的经验。而关于全屏攻击则完全心有余而力不足了,偏偏这个功能又是我这种喜欢ARPG类游戏最想实现的,仅次于无敌。虽然很久之前看过52秘籍论坛高手大象曾经发布的,PC平台某游戏的全屏攻击视频教程,但PC平台得益于强大的CE和OD,分析起来会非常方便,在SFC平台上就没这么好的调试软件了。因此,关于全屏攻击希望银河兄能详细地讲一讲是怎么实现这样一种“逆天”效果的。想尽可能多了解一点,以后好运用到同类的其他游戏中去。

最后还想说一下,在闯试练塔时,遇到那种会掉下去的洞穴有没有什么方法对付(没办法,手残党)?仅仅不掉落似乎还不行,后面的迷宫还必需掉落才能找到正确的路。经测试,穿墙效果无用。此外,之前的生命不减对这里也无效。

这里附上只添加了无敌效果的ROM以供参考。
https://pan.baidu.com/s/1a2ab3mmz9Krm2Vk6IF4cdg
最后编辑zsyf 最后编辑于 2018-05-05 18:26:14
分享 转发
TOP
2#

暴击思路:从敌人HP减少的程序入手比较快
逆向可得到暴击和非暴击的判定

全屏思路:也从敌人HP减少程序入手
结合攻击程序,看从攻击到敌人HP减少有哪些判定
如果未击中则不会引用敌人HP减少程序
击中则会引用敌人HP减少程序
TOP
3#

今天还真是不顺,风雪交加,打雷闪电,外加停电,一直到下午才恢复正常。

银河兄所说的思路和我想的差不多,在PC平台还好,借助强大的分析软件可以更快地定位到关键代码或跳转。比如像CE可以用“什么改写或访问了该内存地址”来找出相关代码,在OD中也可以用硬件断点、软件断点等不同手段来定位。但目前在SFC平台,用的最多的还是Snes9x Debug版。奈何本人水平有限,对这款软件在调试技巧方面的了解还有许多不足。

因此,关于爆击和全屏攻击,想请银河兄继续指点一下调试方面的具体操作技巧。例如怎样才能得到想要的代码,以及在使用LOG功能后,像这些动辄几十MB,甚至上百MB的文件中,用什么方法可以快速定位关键代码等等。特别是LOG功能,已经看到不少玩家说,有调试功能的模拟器中,LOG记录功能可谓是最重要的,甚至没有之一。但就是这么强的功能,却一直不能很好的掌握。

不过,像这种涉及到具体操作的,不知方不方便用文字描述,如果可以的话,想麻烦银河兄能直接录一个操作演示,或者在某次直接中演示一下也行,应该比直接用文字写方便一些吧。
TOP
4#

log功能最好用的地方是对比
比如记录两次log,一次成功一次不成功,可以对比分析代码执行找到一些关键判断
然后在这些判断前后调试
这样就不用通读整个函数
只需要分析部分函数就可以了

其实汇编的分析方法都是相同的
CE那种找到关键代码后同样是逆向分析
就是追溯程序最开始的入口
然后在这个入口开始来做正向分析
正向分析时log的好处就显而易见了
TOP
5#

这两天按照版大的提示又去尝试寻找银河版的爆击、无敌和全屏攻击,由于没有相关编程的底子,读起程序来非常吃力,还是没能找到这些效果的代码或跳转。因此,还得继续探讨和请教了。

像LOG记录的对比,这还是银河兄以前关于机战4的录像中,用不加幸运也能实现幸运效果的例子简单演示了一下,但本人想照此分析普通攻击和爆击的LOG记录时,看着几十光大小的文件,完全无从下手。后来阴差阳错找到运气属性相关的地址,才勉强实现一个99%的爆击效果。虽然有思路,但涉及到具体操作时,还是会有很大困难。

再比如全屏攻击,以前看PC平台的视频教程,是从怪物的坐标入手,找到循环判断我方武器和怪物距离的程序,再用一个长跳转跳过即可。可用此思路分析此游戏时,同样因为获取的LOG太大导致分析彻底失败。因此,关于全屏攻击非常、非常希望银河兄能再详细指点一下,希望据此能触类旁通,用在其他APRG游戏上。

另外一个可能在银河兄看来不值一提,但对本人来说却稍显得意的效果是穿墙。这个效果在本人心目中,是在无敌和全屏攻击之下,位例第三的,没办法,谁叫咱又是手残,又是路痴呢。有了这个功能,闯迷宫方便太多了。之所以得意,是因为之前只在PC平台上,用仙剑95柔情版实现过该功能,天地创造是第二款。而这方面有点瞎猫遇上死耗子,算是楞试出来的,不是真正读程序读出来的。所以,这方面也想听听银河兄的指点。

除了上面说的这些,还有一类的数据查找也是很佩服银河兄的,比如武器、防具或道具各种数据在Rom中的存储位置,不像动改,可以用各种变动来定位内存地址,这类数据都是静态的,没什么方法来过滤。除了某些游戏可以从动改内存地址查看排列方式,再去Rom中搜索这种不可靠的方法外,按道理应该是从程序逆向来分析得出。比如《天地创造》就比较简单,用附加攻击地址很容易得出武器攻击力的Rom地址。

这方面的经验也是来自于银河兄关于FC机战寻找精神消耗地址的教程,但用此思路去找SFC机战四的精神消耗地址却没有成功,同样去找《浪漫沙加3》的武器和防具地址时,由于此游戏的特殊隐藏属性,只勉强成功逆向到防具的地址,武器则彻底失败了,不知这两个难题银河兄什么时候有空能不能解决一下。

这几天为了巩固成果,又跟随银河兄的脚步分别研究了以前发布的STG游戏《战区88_Squadron》的无敌和最近的《马里奥全明星》无限跳及无敌。本来以为有过几次相关经验后,对《战区88》的无敌应该是不成问题的,可成功实现和银河兄一样的无敌效果后,却依然还是会被敌机撞死。仔细观察发现,敌军的子弹打不中,没有问题,但初始的四架敌机,前三架没有问题,第四架会被撞上,无敌没有效果,类似的情况后面还会遇到。没办法,此游戏难度还颇高,只得重新做了个闪烁无敌时间不减的无敌才完成通关。像一般STG类游戏是不推荐用闪烁无敌时间的,这样可能会在过关结算时遇到问题,还好此游戏例外。由于本人水平有限,真正完美的无敌也只能期待银河兄有没有时间解决了。

而马里奥的无限跳和无敌则完全把本人难住了,几天下来没有任何成果。最让人受打击的是,以前其他游戏的经验似乎都用不上,导致连突破口在哪都不知道。仔细想来,以前还真没调试过这类平台跳跃动作游戏。所以,为了能补上这块短版,请银河兄给点提示或指点吧,这里提前先拜谢了。
TOP
6#

横版清版的动作游戏并非所有游戏都好改全屏
比如cps游戏招式判定的处理程序都是分开的
并没有可以通用的方法
你需要理解汇编的程序流转
以及需要补一补Excel的只是
很多时候log的对比不可能靠眼睛
Excel就是最方便的对比工具
TOP
7#

这点也是非常佩服银河兄的,几乎在目前所有模拟成功的机种上,都有发布相关HACK作品。而本人还是有自知之明的,其他平台弄点XX不减还行,再高级的就无能为力了。因此,目前所有精力都放在SFC这个最喜欢的平台上,所以才会借这个机会讨教这么多关于SFC游戏的具体问题。

而银河兄所说的对于汇编程序流的理解,正是本人极力想提高的,奈何基础太薄弱,而且网上模拟器的调试中文资料也非常少,好不容易有高手愿意分享一些心得,还都是调试器比较方便的其他平台,SFC平台偶尔有一两个也只是XX不减或按键开关之类的,像银河兄这样强大的修改还真是少数中的少数。所以才会在上面同时提出几个游戏在HACK时遇到的疑难问题,希望能看银河兄具体是怎样理解的。

这里简单补充一下,目前最大的难题是《马里奥》,无敌按以前的经验应该是以命数减少为突破口,但此游戏似乎每帧都在不停地判断,无关的断点很多,导致无从下手。而无限跳则连控制跳跃的动态地址都没能找到,虽然找到了控制高度的地址,同样因为每帧判断的问题,不知该怎么下手。虽然感觉用LOG功能应该能记录到关键代码,但又回到之前的老话题——如何定位。至于用Excel来辅助判断以前还真没想过,不知该怎么操作呢?

《天地创造》的爆击已经放弃,无敌和全屏攻击期待能有进一步的指点。《浪漫沙加3》找武器的Rom来源地址还在继续研究,但已知的各种方法都用尽了,仍然没有成果,同样只能期待银河兄了。《战区88_Squadron》的不完美无敌如果银河兄不想修复的话,我就当作功课留待以后水平提升了再来解决吧。

话说,距离上次的关于模拟器调试录像教程已经过去几年了吧,如果什么时候能以SFC这一个平台再出一些比如无敌、无限跳、全屏攻击这类比较高级的视频教程就好了。
TOP
8#

高端专业贴。。拜读。
TOP
9#

《天地创造》的爆击,敌我双方都有效;全屏攻击对某些BOSS无效,打真假马利那里还过不了,全屏攻击会被判定打不到真身。
TOP
发新话题 回复该主题