判斷資源的位置和資源類型

偉乾 (漢化新世紀)

    現在軟體開發工具很多,編譯出來的軟體的資源類型也是各種各樣。用一種方法、一個工具來中文化不同類型的軟體是不現實的。我們必鬚根據不同的資源類型,採用不同的方法進行中文化。
  (一) 資源的類型
      通常軟體中需要中文化的資源,是放在.exe和.dll格式的文件中,有些軟體的資源放在專門的語系文件中,一般都是純文字文件,副檔名五花八們,隨作者喜歡。     
  個別軟體的資源,作者在編譯時就隱藏起來,根本無法找到。碰到這樣的軟體,除了反編譯,沒有別的方法了,不過這種情況比較罕見。找到需要中文化的資源位置後,還需查清楚資源的類型。
      從中文化的角度看,資源的類型可分為 6種:
  1VC類標準資源 (包括Menu、Dialog、String、message table資源) ;
  2Delphi類標準資源 (Rcdata資源) ;
  3非標準的Unicode字符 (主要是一些VB編譯的程式,程式的Unicode字符不出現在Menu、Dialog、String等資源中,有少數VC、Delphi編譯的程式含有少量這樣的字符) ;
  4非標準的Ascii字符 (指的是不出現在String、Rcdata等資源中Ascii字符) ;
  5語系文件 (一般指包含語系資源的純文字文件,副檔名多由作者隨意取) ;
  6其它 (包括Batmap資源中的文字等等) 。
  這裡的資源分類,純粹是從中文化的角度,所謂的標準資源,只是我們中文化起來比較方便而已: -)
       下面,我們通過具體的軟體中文化實戰講解如何判斷資源的位置和類型。
       準備工具: eXeScope 5.12 或 Resource Hacker 2.4.0.2
                 Hex WorkShop 3.02
      由於大多數軟體的資源都放在exe或dll文件中,我們尋找資源一般都是先看看在exe\dll文件中是否存在需要中文化的資源和資源的具體類型: -)
      我們可以使用exe資源查看修改軟體: eXeScope 或 Resource Hacker ,將軟體目錄的所有的exe
  dll文件開啟,一一查看裡面的資源,看看是否有我們需要中文化的資源 (Nenu、Dialog、String或Rcdata等) 。 

 

       (1) 實戰一: 判斷程式 Opera 的資源      
  執行eXescope,選擇選單"文件|開啟"或工具欄的開啟按鈕,出現"開啟"對話框,在"搜索"標籤項選擇Opera程式的目錄,Opera目錄的所有exe、dll文件和幾目錄都顯示了。 (如圖 1)

      一一選擇當前目錄和幾目錄所有的exe、dll文件開啟,查看是否有需要中文化的資源。我們首先選擇開啟文件  "Opeay32.dll",在eXeScope的信息清單視窗顯示"Opeay32.dll"的文件頭、匯入、匯出等信息,沒有中文化需要的資源 (resourse) 信息 (如圖 2) ,表明在這個文件中沒有我們要找到東西,pass。

      開啟下一個文件"Opera.exe",在信息清單視窗顯示有"Resource"資源項。單擊"Resource"資源項左邊的標誌 + ,顯示文件"Opera.exe"的具體資源項。其中 Menu、Dialog、String和Rcdata 屬於前面說過的第 1、2類資源。 (如圖 3)

      查看這幾個資源的具體內容,單擊"Menu"資源左邊的標誌 + ,出現很多幾項。單擊選擇任一幾項,在eXeScope右邊的信息顯示視窗顯示這"Menu"幾項的資源內容 (如圖 4) 。我們現在證實了這個文件裡有我們需要中文化的資源,您可以直接在這裡修改中文化,也可以使用其它中文化工具中文化。

      按照以上方法,繼續把其它的exe,dll文件開啟,區分那些有資源的,那些沒有資源的。我們另建一個目錄,把需要中文化的文件全部複製過去,就可以進行下一步的中文化工作了。     
      我們舉的例子Opera,是標準的VC資源,裡面的rcdata資源非常簡單,與標準的delphi資源裡面的rcdata資源差別很大。下面,我們再舉一個標準的delphi資源例子。

     (2)   實戰二: 判斷程式 browsermaster 的資源     
     開啟文件"bmstrj.exe",顯示只有String、Rcdata資源項,而沒有Menu、Dialog資源項。這個就是典型的delphi/c++Build編譯程式的資源特點,需要中文化的資源主要在Rcdata中。選擇具體Rcdata幾項,在信息顯示視窗顯示具體Rcdata幾項 (窗體) 的內容 (如圖 5) 。同樣,可以在這裡修改中文化,也可以用其它中文化工具中文化。

      注意: 1.有時使用eXeScope開啟文件時,會出現以下的錯誤信息 (如圖 6) 。可能程式正執行或文件設了只讀內容,此時關閉該程式或把該文件去掉只讀內容即可 !

           2.開啟文件正常,可以看到具體的資源項和資源幾項,但單擊資源幾項,想查看幾項的內容時,出現這樣的信息視窗 (如圖7) ,無法查看資源幾項內容。這是因為文件使用了一些壓縮加殼軟體加密過,這就需要對文件進行解壓脫殼處理後,才能中文化。這樣的程式很多,如Acdsee,Winxfile等等。

      (3)  實戰三: 判斷程式 Vopt99 的資源

      Vopt99是用VB編譯的程式,資源類型與上面兩個例子不同。我們開啟Vopt99目錄的exe,dll文件,都找不到menu、Dialog、
  String或Rcdata之類的資源。 (如圖 8)

      在Vopt99的執行界面 (如圖 9) ,記下&Defrag 和 Files and Folders 兩個字符串。您一定奇怪: 選單顯示的是Defrag,為何在前面加一個'&' ? 這是Windows標準選單的一種預設的快捷方式,您看到Defrag選單的D字母下面有下劃線,表示用戶同時按下Alt和帶下劃線的字母時,就可以選擇相應的選單項。表現在資源字符中,就是在字母前面加「&」。

      使用16進制編輯軟體 Hex WorkShop  開啟Vopt程式的主文件Vopt99.exe,選擇選單「編輯|尋找」,出現「尋找」對話框,在類型標籤選擇「純文字字符串」,值標籤填寫「&Defrag」,選項標籤選擇「ASCII 字符串」,按「確定」。 (如圖 10)

      程式找到一個「&Defrag」字符串,高亮顯示。按「F3」繼續尋找下一個,我們找到兩個「&Defrag」字符串。 (如圖11,圖12)


      分別選改這兩個字符串為「&Defra1」「&Defra2」,保存。執行Vopt99程式,會看到修改後的效果,證實這兩個字符串是需要中文化的資源。 (如圖 13)  

      按以上方法,搜索字符串「Files and Folders 」,沒有找到字符串。我們在選項標籤改選擇Unicode 字符串,按「確定」按鈕。 (如圖 14)

      程式找到一個「Files and Folders 」字符串,高亮顯示。按「F3」繼續尋找下一個,文件只有這個字符。 (如圖 15)

      注意: 1.在Vopt99這個例子中,需要中文化的資源有「非標準的Unicode字符」和「ASCII 字符」兩種;           
            2.一般尋找文件的中文化資源,發現沒有1VC類標準資源 (包括Menu、Dialog、String資源) 和2Delphi類標準資源 (Rcdata資源) ,只需要使用Hex  WorkShop 開啟程式的主文件,尋找有沒有界面出現的字符,而不用一一開啟所有的exe和 dll文件,因為一般程式的「非標準的Unicode字符」和「ASCII 字符」都在主文件中。           
            3.中文化時,發現有些程式VC類標準資源和Delphi類標準資源這兩類都進行了中文化,執行時還是有英文出現,這是因為文件裡存在少量的「ASCII 字符」資源需要中文化,個別情況下,是因為存在少量的「非標準的Unicode字符」資源需要中文化。

      (4)  實戰四: 判斷程式 CompuPic 的資源
      我們首先看看程式CompuPic是否是第 1或 2種資源,用 eXeScope開啟程式CompuPic目錄的文件,只發現有一個Dialog幾項 (如圖  16) 。但這個程式不可能只有這點資源,一定還有其它資源類型。

       執行CompuPic程式 (如圖 17) ,選取選單出現的字符串,我們這次選取複雜一點的「D&isconnect Network Drive」。使用16進制編輯軟體 Hex WorkShop 開啟CompuPic程式的主文件,尋找「D&isconnect Network Drive」。在選項標籤不論選擇Unicode 字符串或ASCII 字符,都沒有找到字符串「D&isconnect Network Drive」。開啟其它exe,dll文件,結果都一樣,沒有找到字符串「D&isconnect Network   Drive」。說明這個程式存在其它的資源類型,我們繼續找。

      這裡可使用Windows的尋找功能,選擇「開始|尋找|文件或文件夾」。 (如圖 18)

      出現「尋找對話框」後,在「包含文字」標籤下填寫「D&isconnect Network Drive」,搜索標籤選擇CompuPic所在的目錄,注意「包含幾文件夾」標籤要選定,按「開始尋找」。發現在幾目錄ENGLISH中 main.msg文件包含這個字符串 (如圖 19) 。開啟這個文件,發現是純文字格式的文件,就是我們前面說的第5中資源類型: 語系文件。

(5) 其它資源類型

有些軟體的英文字符比較特別,不是出現在以上的幾種資源類型中,而是在圖片中。對於VC編譯的程式來說,是存在Bitmap 資源中。如程式Ember的工具欄按鈕 (如圖 20) ,Remove IT99的其中一個界面 (如圖 21)

對於delphi編譯的程式來說,這種圖片資源是內嵌在Rcdata幾資源項中的,eXeScope程式是無法看到和修改這種資源類型的,只能用另一中文化工具 Language localizator 查看和修改。
程式winace的sfxlib.dll文件的資源比較特別 (如圖 22) ,有個SFX資源項,SFX的資源幾項匯出來,再用 eXeScope開啟 (如圖 23) ,可以看到好像一般的exe文件的資源。中文化時,我們先匯出來,中文化後再導進去。這個程式的SFX資源幾項都用 Petite壓縮程式加了密,首先需要脫殼後,才能進行中文化。

    一般來說,中文化的資源就是以上這幾種,只要您按照以上方法,一般都可以找到需要中文化的資源。不過我不能保證您一定能找到需要中文化的資源,因為有些程式編譯時,就對資源進行了處理,將資源隱藏起來,根本無法用上述方法找到。

疑難解答:
    1有朋友問,如果軟體的文件很多,用eXeScope一個個開啟,您想要了我的老命 ? 有沒有簡便的方法 ?
   
其實迅速排除無關的文件的方法還是有的,您執行程式,然後開啟程式的目錄,選擇全部文件,刪除。程式正在調用的文件,是無法刪除的,我們有時就是這樣做某某程式的精簡版。不過這個方法不太保險,在少數情況下,某些程式暫時沒有調用的文件被刪除,造成某些功能喪失,也使某些中文化資源遺漏。
    還有一種方法,可以快速找到某些中文化的資源在那個 (些) 文件中。如果資源類型是VC標準資源格式的選單、對話框、字符串、信息表,我們可以使用 PASS Resource Finder 工具,可以在指定目錄中尋找含有指定字符串的資源的文件,是在進行中文化之前用來定位資源所在的輔助中文化工具。如果是delphi標準格式的中文化資源,上述方法無能為力。因為Radata資源是  ASCII字符,所以我們可以使用上文說的「使用Windows的尋找功能」尋找純文字資源的方法,在指定目錄尋找含有指定字符串的資源的文件。

   2有中文化人問: 中文化某個軟體,主要的界面、對話框都中文化了,發現執行時還是有少數英文字符,我按照您說的上述方法尋找,把程式目錄裡的文件都開啟檢查,排除是非標準的unicode、ascii字符或純文字文件。
  
出現這種情況,在排除中文化人遺漏了ascii、unicode等原因。我們都知道,程式安裝時,有時會往註冊表、windows的system目錄下放文件或寫東西。有時候,某些個別中文化資源就在這些地方,您可以到這些地方找找。有一些軟體的安裝後,會往系統的右鍵選單添加命令,這些命令選單的中文化資源的文件,往往在system目錄裡。


    我們找到資源、瞭解了資源的類型,就可以使用不同的中文化工具進行中文化了。中文化並不是很困難的事情,需要的是您的認真態度、「咬文嚼字」的細心、耐心與責任心 ! 僅此而已……在以後的教學中,我們將由簡入深,系統講解中文化知識。為了使更多的電腦用戶掌握這門技術,我們把長期收集中文化教學資料和自己中文化心得重新總結,將通過大量的實例,以步步為營、手把手的教學方式,讓讀者輕鬆快速地掌握軟體中文化的技術和基本技巧。在本教學中引用了大量的他人的成果。本教學目前正在製作中。也歡迎您提出自己的建議和看法 (weiqian@21cn.com ) ,共同完善。如有錯誤歡迎指正 ! 有關軟體您可以到我們的總站--漢化新世紀 (hanzify.yeah.net) 下載 !


 



回教學