我应该如何对该文本编码进行逆向工程?

逆向工程 编码
2021-07-07 03:22:14

所以我试图将游戏的 PS4 版本翻译成 Vita 版本。脚本文件可以方便地解压缩,我能够将它们放入并顺利运行 - 太棒了!

但是,其他各种消息文件和任务摘要等就不是那么方便了。

这是十六进制编辑器中两个文件的比较: 在此处输入图片说明

起初我以为这是一个简单的字节对压缩,但显然不止于此,因为如果您查看与“让我们走吧!”相对应的地方!和“让我们这样做!” 它们根本不以相同的字符串开头。

我上传了一个文件的 PS4/Vita 版本,其中包含更易读的文本:https : //www.dropbox.com/s/bw0nvexyi9ww2be/hm%20vita ? dl =0 https://www.dropbox.com/s/sk74zadvndc8v9t /hm%20ps4?dl=0

通过它并寻找常见和重复出现的词,我发现了这个:

Goblin Thief
´0Ö0ê0ó0·0ü0Õ0
B430 D630 EA30 F330 B730 FC30 D530

Goblin Thief Archer
´0Ö0ê0ó0·0ü0Õ0¢0ü0Á0ã0ü0
B430 D630 EA30 F330 B730 FC30 D530 A230 FC30 C130 E330 FC30

Ancient Grief
¨0ó0·0§0ó0È0°0ê0ü0Õ0
A830 F330 B730 A730 F330 C830 B030 EA30 FC30 D530

Grief Screamer
°0ê0ü0Õ0¹0¯0ê0ü0Þ0ü0
B030 EA30 FC30 D530 B930 AF30 EA30 FC30 DE30 FC30

Grief
EA30 FC30 D530

Thief
B730 FC30 D530

所以你可以看到FC30 D530是“ief”。但后来我寻找更多出现的“gr”

Deep Grudge
Ç0£0ü0×0°0é0Ã0¸0
C730 A330 FC30 D730 B030 E930 C330 B830

而且您看不到以“悲伤”开头的 EA30。

我有一种感觉 FC30 可能是某种开关字节,大写指示或可能标记某种查找表的使用?同样有趣的是,所有只是目标/老板名称的台词都具有 --30 结构,但一些描述性段落似乎没有。

当然,另一个问题是 PS4 版本的未压缩英文文本与 Vita 版本的文本不会100% 完美匹配——毕竟这才是重点!所以即使当我看到“Deep Grudge”这个名字并注意到我没有看到任何看起来与“Grief”中的“Gr”相对应的东西时,我也不能确定他们没有改变PS4 版本中的名称。

有没有人对我应该如何处理这个问题有任何建议?如果我是对的并且实际上有某种压缩查找表业务正在进行,那么它可能实际上无法逆转,对吗?

1个回答

学习这种编码的方法是学习日语。:) 从文本文件 diff 的第一行,我们可以看到左侧的内容:

1131 3210 3130 3330 1021 0000 0000 0000  .12.1030.!......

在右边翻译成这个:

1100 3100 3200 1000 3100 3000 3300 3000  ..1.2....1.0.3.0.
1000 01ff 0000 0000 0000 0000 0000 0000  .................

这是一个非常强烈的暗示,左边的文件使用的是 8 位编码,右边的文件使用的是 16 位编码。数字以非常简单的方式翻译,但感叹号 ("!") 是0x21ASCII 或 UTF-8,但0x01ffUnicode“全角感叹号”编码为 UCS-2(即 UTF-16 编码为小-endian)。

因此,通过有关编码的提示,我们可以看到您已识别为“Goblin Thief”的十六进制

b430 d630 ea30 f330 b730 fc30 d530

译为ゴブリンシーフ,是英文单词“Goblin Thief”的片假名。对于日语使用者来说,使用片假名将外来词翻译成语音等价物是很常见的因此,逐个音节地取它,我们有:

ゴ  go
ブ  bu
リ  ri
ン  n
シ  shi
ー  (extended vowel)
フ  fu

因此,如果我们大声说出来,“go bu rin shi-i fu”听起来就像是日语母语人士所说的“Goblin Thief”。您可以尝试使用Google 翻译进行更多实验,看看和听到这听起来像什么。