DotNet程序汉化过程--SnippetCompiler奇葩的字符串

时间:2024-01-21 23:00:51

开篇前言

汉化的过程总会遇到各种各样的问题,让人抓狂,这一篇我就来讲解一下一个特殊的单词的汉化以及我的“艰辛历程”。

起因介绍

SnippetCompiler有这么一个奇葩的字符串“查找>>”

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

通过精确的定位我找到了他所在的位置在这:

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

看到了没有,Replace不再是我们熟悉的ldstr “Replace”了,他成了一个二进制的数组了, 不用管他我们直接改就行,把他改为Replace生成ok,没有问题,打开一看也替换过来 了,点击测试一下出错了。

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

唉!看源码吧,哪里出问题了。

找到了单击事件那里

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

看到了没有,人家做了验证了,末尾必须要是\x00bb,nnd没办法了,改原来的二进制 数组吧。我这里也是找了好久才找到一个相对简单的办法,我称之为替换法,就是用其 他的字符串来替换这里。具体如下:

第一步:既然我们正在汉化SnippetCompiler那就用他好了。使用SnippetCompiler编写 如下代码

 using System;
using System.Collections.Generic;
public class MyClass
{
public static void Main()
{
string str="替换(&R)";
}
  }

生成一个*.exe文件去。

第二步:使用ildasm反编译生成的exe文件得到了一个il的文件,用记事本打开它,看到 了没

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

这个就是我们最终要替换的字符串,拿过去替一下保存试试。

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

最终结果:

看木有问题啊,单击也没事。

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

DotNet程序汉化过程--SnippetCompiler奇葩的字符串

成功。

虽然他肯定是有特定的算法来得到的二进制数组,但这里我就偷个懒了,用替换来得到,大家如果有兴趣可以自己尝试去解解看怎么算的。