查看單個文章
舊 2004-08-02, 09:39 PM   #1
丹楓
版區管理員
 
丹楓 的頭像
榮譽勳章
UID - 20879
在線等級: 級別:48 | 在線時長:2592小時 | 升級還需:5小時級別:48 | 在線時長:2592小時 | 升級還需:5小時級別:48 | 在線時長:2592小時 | 升級還需:5小時
註冊日期: 2003-01-02
住址: 史萊姆團隊
文章: 6191
現金: 46090 金幣
資產: 50970 金幣
預設 程式指令翻譯或修改例子

在這裡要談到的是沒有被壓縮、加殼的標準檔案資源在中文化時遇上的問題.

在進行軟體中文化的時候往往遇上了經人手小心翻譯後,在執行測試過程中完
成的檔案出現「程式弁遄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
丹楓 目前離線  
送花文章: 3146, 收花文章: 4654 篇, 收花: 23984 次
回覆時引用此帖