diff --git "a/2024/08/25/\344\275\277\347\224\250libGDX\347\247\273\346\244\21520\345\271\264\345\211\215\347\232\204J2ME\346\270\270\346\210\217\343\200\212\344\270\255\345\233\275\350\267\263\346\243\213\343\200\213/index.html" "b/2024/08/25/\344\275\277\347\224\250libGDX\347\247\273\346\244\21520\345\271\264\345\211\215\347\232\204J2ME\346\270\270\346\210\217\343\200\212\344\270\255\345\233\275\350\267\263\346\243\213\343\200\213/index.html" index 0bc422f..c92891b 100644 --- "a/2024/08/25/\344\275\277\347\224\250libGDX\347\247\273\346\244\21520\345\271\264\345\211\215\347\232\204J2ME\346\270\270\346\210\217\343\200\212\344\270\255\345\233\275\350\267\263\346\243\213\343\200\213/index.html" +++ "b/2024/08/25/\344\275\277\347\224\250libGDX\347\247\273\346\244\21520\345\271\264\345\211\215\347\232\204J2ME\346\270\270\346\210\217\343\200\212\344\270\255\345\233\275\350\267\263\346\243\213\343\200\213/index.html" @@ -13,15 +13,14 @@ - - - - + + + - + - + @@ -108,15 +107,10 @@

查找游戏资源

我只记得这个游戏叫做《中国跳棋》,并且是十年前的Samsung手机内置的,于是在bilibili和抖音都搜索了一下,果然搜出了几个视频,都是展示在十几年前的手机上玩这个游戏的。从视频中我回忆起了一些关于这个游戏的具体信息,在互联网上进行了查找。不久我就在一个论坛(DOSPY论坛)上找到了这个游戏的相关资源:【稀有资源】中 国 跳 棋,游戏的形式是一个jar包。

使用模拟器运行J2ME游戏

十几年前按键手机和部分触屏手机上的很多游戏都是使用J2ME开发的,维基百科对于J2ME的介绍为:

1
Java ME以往称作J2ME(Java Platform, Micro Edition)是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。它和Java SE、Java EE一起构成Java技术的三大版本,并且同样是通过JCP(Java Community Process)制订的。
-

J2ME是一个过时的框架,使用其开发的游戏自然无法在现代的操作系统上运行。因此,需要使用模拟器运行游戏的jar包。手机端可以选择J2ME Loader,电脑端可以选择microemulator
我使用microemulator运行原版游戏,部分界面如下:

-
- alt text - alt text -
- +

J2ME是一个过时的框架,使用其开发的游戏自然无法在现代的操作系统上运行。因此,需要使用模拟器运行游戏的jar包。手机端可以选择J2ME Loader,电脑端可以选择microemulator
我使用microemulator运行原版游戏,部分界面如下:
alt text

解包游戏并反编译

从DOSPY论坛上下载的jar包其实就是一个zip压缩文件,在Linux中,可通过unzip命令解压缩到指定目录extracted:

1
unzip your-file.jar -d extracted/
-

进入extracted目录,可看到包含Java的.class文件和资源文件(图片、音频)
alt text
与C/C++程序不同的是,Java编译出的.class字节码非常容易被反编译为Java代码,所以通常开发者会对代码进行混淆,使得其可读性下降,难以被破解。
我使用CFR工具反编译字节码,当然也有很多其他的工具。
CFR工具本身也是一个jar文件,反编译单个字节码文件:

+

进入extracted目录,可看到包含Java的.class文件和资源文件(图片、音频)
alt text
与C/C++程序不同的是,Java编译出的.class字节码非常容易被反编译为Java代码,所以通常开发者会对代码进行混淆,使得其可读性下降,难以被破解。
我使用CFR工具反编译字节码,当然也有很多其他的工具。
CFR工具本身也是一个jar文件,反编译单个字节码文件:

1
java -jar cfr.jar target.jar > target.java

在Linux中,使用find命令,将extracted目录下所有的.class文件都反编译为.java文件:

1
find extracted/ -name "*.class" -exec java -jar cfr.jar {} --outputdir extracted \;
@@ -149,13 +143,14 @@

移植代码仓库

现阶段已经完成了故事模式6关的核心部分,已经可以和20年前的AI完跳棋了,与原版游戏对比如图:

-

alt text

+

alt text

其中左侧为原版,右侧为移植版(可以看到较为简陋)

视频演示在Bilibili:

-我将代码开源在了Github和Gitee: -

https://github.com/creeper12356/ChineseCheckerPorted
https://gitee.com/creeper12356/ChineseCheckerPorted

+

我将代码开源在了Github和Gitee,持续更新中:

+

https://github.com/creeper12356/ChineseCheckerPorted

+

https://gitee.com/creeper12356/ChineseCheckerPorted

欢迎共同交流学习!

diff --git a/index.html b/index.html index 51b2171..dc38616 100644 --- a/index.html +++ b/index.html @@ -101,15 +101,10 @@

查找游戏资源

我只记得这个游戏叫做《中国跳棋》,并且是十年前的Samsung手机内置的,于是在bilibili和抖音都搜索了一下,果然搜出了几个视频,都是展示在十几年前的手机上玩这个游戏的。从视频中我回忆起了一些关于这个游戏的具体信息,在互联网上进行了查找。不久我就在一个论坛(DOSPY论坛)上找到了这个游戏的相关资源:【稀有资源】中 国 跳 棋,游戏的形式是一个jar包。

使用模拟器运行J2ME游戏

十几年前按键手机和部分触屏手机上的很多游戏都是使用J2ME开发的,维基百科对于J2ME的介绍为:

1
Java ME以往称作J2ME(Java Platform, Micro Edition)是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。它和Java SE、Java EE一起构成Java技术的三大版本,并且同样是通过JCP(Java Community Process)制订的。
-

J2ME是一个过时的框架,使用其开发的游戏自然无法在现代的操作系统上运行。因此,需要使用模拟器运行游戏的jar包。手机端可以选择J2ME Loader,电脑端可以选择microemulator
我使用microemulator运行原版游戏,部分界面如下:

-
- alt text - alt text -
- +

J2ME是一个过时的框架,使用其开发的游戏自然无法在现代的操作系统上运行。因此,需要使用模拟器运行游戏的jar包。手机端可以选择J2ME Loader,电脑端可以选择microemulator
我使用microemulator运行原版游戏,部分界面如下:
alt text

解包游戏并反编译

从DOSPY论坛上下载的jar包其实就是一个zip压缩文件,在Linux中,可通过unzip命令解压缩到指定目录extracted:

1
unzip your-file.jar -d extracted/
-

进入extracted目录,可看到包含Java的.class文件和资源文件(图片、音频)
alt text
与C/C++程序不同的是,Java编译出的.class字节码非常容易被反编译为Java代码,所以通常开发者会对代码进行混淆,使得其可读性下降,难以被破解。
我使用CFR工具反编译字节码,当然也有很多其他的工具。
CFR工具本身也是一个jar文件,反编译单个字节码文件:

+

进入extracted目录,可看到包含Java的.class文件和资源文件(图片、音频)
alt text
与C/C++程序不同的是,Java编译出的.class字节码非常容易被反编译为Java代码,所以通常开发者会对代码进行混淆,使得其可读性下降,难以被破解。
我使用CFR工具反编译字节码,当然也有很多其他的工具。
CFR工具本身也是一个jar文件,反编译单个字节码文件:

1
java -jar cfr.jar target.jar > target.java

在Linux中,使用find命令,将extracted目录下所有的.class文件都反编译为.java文件:

1
find extracted/ -name "*.class" -exec java -jar cfr.jar {} --outputdir extracted \;
@@ -142,13 +137,14 @@

移植代码仓库

现阶段已经完成了故事模式6关的核心部分,已经可以和20年前的AI完跳棋了,与原版游戏对比如图:

-

alt text

+

alt text

其中左侧为原版,右侧为移植版(可以看到较为简陋)

视频演示在Bilibili:

-我将代码开源在了Github和Gitee: -

https://github.com/creeper12356/ChineseCheckerPorted
https://gitee.com/creeper12356/ChineseCheckerPorted

+

我将代码开源在了Github和Gitee,持续更新中:

+

https://github.com/creeper12356/ChineseCheckerPorted

+

https://gitee.com/creeper12356/ChineseCheckerPorted

欢迎共同交流学习!