史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   軟體中文化討論區 (http://forum.slime.com.tw/f52.html)
-   -   程式指令翻譯或修改例子 (http://forum.slime.com.tw/thread119362.html)

丹楓 2004-08-02 09:39 PM

程式指令翻譯或修改例子
 
在這裡要談到的是沒有被壓縮、加殼的標準檔案資源在中文化時遇上的問題.

在進行軟體中文化的時候往往遇上了經人手小心翻譯後,在執行測試過程中完
成的檔案出現「程式弁遄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


所有時間均為台北時間。現在的時間是 02:42 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1