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

开篇前言

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

起因介绍

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

 

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

 

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

 

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

找到了单击事件那里

 

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

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

1 using System;
2 using System.Collections.Generic;
3 public class MyClass
4 {
5     public static void Main()
6     {
7         string str="替换(&R)";
8     }
9   }

生成一个*.exe文件去。

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

 

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

 

最终结果:

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

 

 

成功。

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

原文地址:https://www.cnblogs.com/GodFinal/p/3484053.html