2021-5-9 15:30 /
首先 GARbro 已经可以提取里面的大部分封包了,包括 .004 .arc .bin .xsa 等,详见 Github 上的源代码。
然后可以确认到脚本文件为 HD/CDFiles/*.cd。
对于 0.cd:
根据流程来到 sub_406550 并找到字符串 0.cd,跟进 sub_4BCBF0 发现是 CreateFile 系列操作,然后进入 sub_4BCB20。


照抄解密即可。
解出来的 0.cd 格式比较漂亮,前 4byte 为记录总数(0xxx.cd 数量),然后接下来每 4byte 为 offset,拉到底下看字符串推测是将篇章名与 0xxx.cd 对应起来的功能。
对于 1.cd:看起来并不重要,就不管了(
对于 0xxx.cd:
从 GetGlyphOutlineA 的调用回溯(md找了很久)来到 sub_494E20,并进入 sub_4A2F50。


其实这个时候还不能确定它到底在干什么,于是就试着解了一下。

可以发现竟然解出文本了!
每段文本前面一堆 SSS 大概是被无故 xor 上 0x53 的正常字节。把它还原(4byte),可以发现刚好就是这段文本的总字节数。
尝试直接修改文本字节,可以正常显示。尝试修改文本前的 4byte 总字节数并添加字节进去,失败了。而且这程序还直接崩溃了。大概是哪里有越界。如果不把前面那堆莫名其妙的东西分析清楚的话,就目前而言文本的修改是不现实的。
继续翻找,从 sub_406550 进入 sub_470D90 找到 %04d.cd,再进入 sub_4BAC10。

可以发现从 0x20 开始往后面读了 260 字节。干什么的??解出来发现含有类似于 <类似于标题的东西>.rio 的字符串,暂时意义不明。
还看到有很多类似于 or 0x10,and 0x80 的神秘操作,就没有一个个去试了。
时间有限,我的分析就到此为止。感觉还没到最关键的地方,自己就快被*挂了。接下来的方向大概会是转向分析程序到底如何解析这种编译好的脚本文件。鉴于里面一堆结构体只能被表示成 [a/v+xx] 这种形式,且最主要的是我比较菜,无可奈何只能止步于此(并且会坑上好几个月)。希望有大佬能抽出点时间来玩玩
Tags: 游戏
#1 - 2021-5-10 21:03
#1-1 - 2021-5-22 12:37
mnihyc
这位是真大佬 orz
#2 - 2021-5-11 01:37
(我来这世界只是为了好好看看它)
楼主好,想请教一下vnr提取这游戏文本是老是有上次文本遗留,这个能有什么解决办法吗?麻烦了。
#2-1 - 2021-5-22 12:39
mnihyc
我自己用vnr也会这样,暂且没想出有解决方法
#2-2 - 2021-9-12 00:14
思根叶
菓子 说: 用MisakaHookFinder
-> 添加指定特殊码 -> /HS932#-18@E7728:Farthest2015.exe
多谢,有时间研究下这个御坂翻译器。
#3 - 2021-6-20 16:35

关联条目