是存放遊戲所有英文指令碼的檔案,檔案內容是加密儲存的,用一般文字編輯器開啟是看不到任何可用資訊。解密內容的方法是對檔案所有位元組與0xDD進行異或操作。
以下是解密檔案的原始碼(C#):
private void button1_Click(object sender, System.EventArgs e)
{
// Create the reader for data.
FileStream fs = new FileStream("c:\\grim.tab", FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
FileStream fs2 = new FileStream("c:\\text.txt", FileMode.Create);
BinaryWriter w = new BinaryWriter(fs2);
fs.Position = 4;
while(fs.Position < fs.Length)
w.Write((byte)(r.ReadByte()^ 0xdd));
}
r.Close();
w.Close();
fs.Close();
fs2.Close();
解密後的檔案內容就是一般的文字,可以看到所有遊戲對話都在其中。下面節選檔案內容的2段進行分析:
sito030 Oh yeah, yeah. Yeah. That is what I told him.
sito031 Are you kidding me?
sito032 gave him the idea in the first place!
可以看出左邊是說話人的名稱標識,右邊是說話的內容,分割這兩者的是看似一個空格,其實是ASCII碼錶中的製表符Tab,16進製表示是0x09。
對遊戲角本的漢化修改此檔案的內容為中文就可以了,還有一點值得注意,修改完此檔案後無需再對其反加密,只要將解密的檔案儲存成以前加密檔案的檔名覆蓋即可。應該是遊戲執行時候會對檔案是否加密進行判斷
是存放遊戲所有英文指令碼的檔案,檔案內容是加密儲存的,用一般文字編輯器開啟是看不到任何可用資訊。解密內容的方法是對檔案所有位元組與0xDD進行異或操作。
以下是解密檔案的原始碼(C#):
private void button1_Click(object sender, System.EventArgs e)
{
// Create the reader for data.
FileStream fs = new FileStream("c:\\grim.tab", FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
FileStream fs2 = new FileStream("c:\\text.txt", FileMode.Create);
BinaryWriter w = new BinaryWriter(fs2);
fs.Position = 4;
while(fs.Position < fs.Length)
{
w.Write((byte)(r.ReadByte()^ 0xdd));
}
r.Close();
w.Close();
fs.Close();
fs2.Close();
}
解密後的檔案內容就是一般的文字,可以看到所有遊戲對話都在其中。下面節選檔案內容的2段進行分析:
sito030 Oh yeah, yeah. Yeah. That is what I told him.
sito031 Are you kidding me?
sito032 gave him the idea in the first place!
可以看出左邊是說話人的名稱標識,右邊是說話的內容,分割這兩者的是看似一個空格,其實是ASCII碼錶中的製表符Tab,16進製表示是0x09。
對遊戲角本的漢化修改此檔案的內容為中文就可以了,還有一點值得注意,修改完此檔案後無需再對其反加密,只要將解密的檔案儲存成以前加密檔案的檔名覆蓋即可。應該是遊戲執行時候會對檔案是否加密進行判斷