一个门外汉解密一个UNITY游戏dsm文本的经验总结
游戏名称叫[180525] [Regina] 寝取られループ ~今日知らない男に股を開く妻~一个NTR游戏
由于unity游戏使用了mono框架,而这个框架的游戏是通过一个即时生成的函数来输出文本的,而且地址老是变化,所以使用VNR往往无法固定一个合适的文本提取位置。这种游戏对VNR极其不友好,所以我干脆直接翻译游戏。
Unity和我之前翻译的tyranobuilder难度上了一个层级,tyranobuilder直接解包就能看到文本而unity游戏则不是这么简单。
首先打开data文件夹,虽然data文件夹里一看就是素材文件,但都是打不开的二进制文件,也不知道文本在不在这里面。一般的提取工具都没法提取。
查了半天有人说unity游戏的文本一般在一个dll文件里
.\Managed\Assembly-CSharp.dll
image
参考https://www.bilibili.com/video/av47403783 我反编译了dll文件,但里面并没有文本文件,也没有写着文本的函数,只找到一个显然是加载对话文本的文件LoadScenarioScript.cs,里面1千多行代码完全不知道是啥玩儿。。。。
但是我找到了几个函数:[图片上传中...(image-c74b6c-1585283964572-6)]
果然文本是加密在了data文件夹里,就是data/data.dsm,现在就简单了,我按照他的函数解码了文本文件:
image
nice!
原本的文本出来了,那接下来就简单了,翻译文本然后加密回去替换就搞定了,连打包都不用!
最后说几句,现在官方已经不跟新VNR了(毕竟原来就是几个大学生搞出来的),贴吧里有一堆小修小补,最核心的文本提取模块几乎没人维护,随着时间的推移,新引擎的出现VNR会越来越没法用,难受啊,写毕业论文去了。。