在這裡要談到的是沒有被壓縮、加殼的標準檔案資源在中文化時遇上的問題.
在進行軟體中文化的時候往往遇上了經人手小心翻譯後,在執行測試過程中完
成的檔案出現「程式弁遄v失效,「弁鄋篻龠窗v內容、選單字串、圖像出
現遺失無法顯示,通常這類情況就是在中文化過程中,誤將關連到執行程式
內的「指令」、「專用名稱」翻譯或修改變更,令程式執行時無法辨認或載
入「指令」進行順序執行或必要的工作.
上面情況簡單地說就是當我們在中文化時某一個「字詞」在翻譯後做成程式
執行固障,而這個固障 bug 就是牽涉到程式的執行「指令」,在遇到了這個
問題或檔案亦非特殊的格式的時候,我們仍然可以依實際情況去將程式加以
修改來解決問題,首先我們要確定在檔案中文化時出現不容修改的「字詞」
,在確定後先筆錄記下目標「字詞」.
首先我們要下載一個《偏移量轉換器》:
《偏移量轉換器》0.94B 繁體版
《偏移量轉換器》
一個由 梁利鋒 先生開發的可進行 RVA 和 File Offset 之間轉換的工具,使用時
必須先安裝了 DirectX.
( A ) 修改是安裝程式 Wise Inatallation System/Wise32.exe 例子 :
1. Wise32.exe 內選單項目英文「 Name」因是在執行時使用到「指令」是不容修
改變更,首先使用 Hex workshop 十六進位編輯器載入原檔搜尋「Name」在編輯
器內位址所在結果是共有二處地方 :
213B40:Name
DAB361:Event Name
2. 為了方便識認,分別先修改成 Nam1、Event Nam2 回存.
3. 執行「偏移量轉換器」讀入原檔 Wise32.exe .
4. 在實偏移欄位輸入第一個「 Name」位址數值 : 213B40
5. 可以見到轉換後的數值是 : 404B61
6. 返回 16 進位編輯器程式,選取使用 16-進位輸入從上「向下」搜尋 403B61 ,例子是
有幾處「指向」名稱 213B40 : Nam1.
6. 按先後修改「指向」後執行原檔 Wise32.exe 幾次確認,原來是 88AB3 指向第一個
213B40 的 Nam1,須然顯示出名稱「 Nam1」但程式就是出現「選單弁遄v遺失了 .
7. 因此在 88AB3 位置將 403B61 改成 DAB361 「指向」借用另一個非指令「名稱 」
Nam2 ,再執行程式「選單弁遄v已經正常了.
8. 到此就是將 403B61 改成 DAB361 就是完成了選單內指向的新位置名稱「 Nam2 」.
9. 最後在十六進位編輯器內將 Nam1 和 Event Nam2 的 Nam2 分別修改成中文「名稱」
回存,當然也可以將 Event Nam2 翻譯成「事件名稱」,只要將「指向」的偏移減少
二個位元組改為 D8B361 就可以.
其實亦可以將「名稱」放到程式其他方,只要偏移量準確的指向到目的「名稱」位置,
效果都是一樣,修改後 Wise32.exe 可以正常執行也可顯示中文「名稱」了!
作者:UCEC