程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> J2ME手機游戲漢化技術基礎

J2ME手機游戲漢化技術基礎

編輯:J2ME

對國外手機游戲進行的漢化,使用該技術甚至可以輔助換皮技術,對公司已有手機游戲進行技術處理,替換掉游戲中的故事介紹、公司名稱、公司標示,一切和原游戲有關的文字信息。

技術分析:

漢化分以下幾種情況,分別詳細說明。

1. 從內容上說

(1)對國外游戲的漢化。對國外游戲進行漢化,就是將非漢語翻譯過來,轉化為漢語。

(2)國內游戲的“漢化”。對國內游戲,就是更改游戲相關信息,配合換皮使用。

2. 從存儲方式說

(1)相關信息存儲在.class文件中。游戲相關信息存儲在程序中。

(2)相關信息存儲在單獨得資源文件中。如果沒有加密還不難,加了密,就看運氣好壞了。這裡只討論不加密的情況。

技術原理:對於存儲在資源文件中的游戲信息。只要替換掉就可以。對於存儲在程序中的游戲信息,是本教程討論的重點。在程序中的信息用相關工具打開 *.class文件找到所有包含游戲信息的類。

替換掉內容,就ok了。

漢化工具 :Java反編譯器、jdk 、winRAR、Uedit32。

如果有 Java IDE工具更好。

漢化流程:

1.創建一個 a.Java,內容如下:

public class a
{
static
{
String s= "一個不能少一個也不多";
System.exit (0);
}
}

程序非常簡單,到後面會用到,如果有IDE 就用IDE 編譯。

如果沒有IDE,用任何版本的 jdk(比如jdk1.3.1_16)編譯也可以。a.class文件備用。

2.用winRAR找到存有游戲信息的*.class文件。解壓該文件到任意位置,用Uedit32打開。可以看到*.class 文件的十六進制形式(截圖1)。

3.對於游戲信息是英文的,可以直接在十六進制右邊看到字符串。而對於游戲信息是漢語的,能看到不可讀的漢語(像亂碼)。我們就是要修改這些信息。先說漢語的情況,在.class文件中,我們最關心字符串的存儲格式,漢字在.class文件中以字符串長度的三倍字節存儲,比如10個漢字的字符串,在.class中就需要30個字節存儲字符串本身,而漢化就是替換掉相應字節存儲區,等長或不等長的字符串。等長只要替換掉就可以,不等長(外文轉漢語)需要更改字符串字節區域的長度屬性。見截圖1,陰影下的是十個漢字所占的字節,長度30個字節。紅色框內+紫色框是字節長度00 1E 轉化為十進制正好30。紫色框內在這裡為00,對我們沒有用。而相對於英文替換和漢語替換相似。不過要修改字節長度這個屬性值(字符串長度*3)適應新大小。

注意:一定要保證字符串字節區大小等於其相應長度屬性。

4.解壓存有游戲信息的*.class類。見截圖2。

5.找到相關漢字字節區域。見截圖3陰影所示30字節。

6.在前面a.Java文件中寫入你要替換的文本。編譯後,將a.class用Uedit32打開,可以看到漢字亂碼,相應粘貼到游戲的*.class的陰影位置,替換掉原來字節。

7.用winRAR 打開游戲文件,找到修改*.class文件的目錄,采用替換方式,加進修改後的*.class文件。

8. 將修改後的游戲傳到手機裡。可以看到被修改的信息。

截圖1 截圖2 截圖3

附例子:第一行被修改

修改前 修改後

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved