编辑.class文件中的字符串

时间:2016-11-26 19:23:49

标签: java string .class-file

问题

嘿。我一直在开发游戏,在游戏中,我正在显示版本“1.0.13”,我很快意识到它完全不正确,它应该显示“1.9”。我在Eclipse中编辑我的代码,并且我没有为每个版本的代码备份,所以我不能只编辑Eclipse中的String。我尝试使用 .jar反编译器反编译游戏的.jar文件。我下载了源代码(.java文件)并将其放入Eclipse Neon。放入.java文件后,我意识到出现了一些错误。我修好了他们并运行了程序。许多游戏的机制完全被打破了。我意识到这不起作用,所以我用 WinRAR 解压缩.jar,然后尝试使用 Notepad ++ 手动编辑.class文件(这是一个愚蠢的想法) 。在使用他们的内置工具后,我迅速将所有“1.0.13”替换为“1.9”。在保存代码并运行.jar文件后,出现了一个标题为“Java Virtual Machine Launcher”的窗口和文本“Error”:发生了JNI错误,请检查您的安装并再试一次“。然后我跑过一个程序名为 JBE(Java字节码编辑器)。使用该程序时,我不确定如何编辑常量变量,我使用该程序搜索了教程,但没有找到。

我只是想编辑一个字符串,我花了几个小时的研究,我甚至找不到解决方案。如果您知道如何解决这种情况,请发表评论。提前谢谢。

信息

因为我“需要至少10个声望才能发布更多感谢2链接。”我只会发布一个你可以阅读的single PasteBin link,它将链接到我在这篇文章中谈到的所有网站和程序。

1 个答案:

答案 0 :(得分:1)

不要反编译,也不要编辑字节代码。

如果使用标准十六进制编辑器(http://www.hexedit.com/),则可以打开二进制类文件。通过那里看看你可能在那里的旧版本号。您可以更改单个字节(不要忘记它是UTF-16编码的!)并保存二进制更改。

关键是班上没有别的东西可以移动或改变位置。记事本将插入或删除字符,这将打破类文件。当你找到文字时,你必须用空格字符填充字符串(你不能改变字符串文字的长度)。也就是说,将它们存在的字符更改为新数字或空格字符,但不要添加或删除任何内容。

除了表示类文件中字符串的字节外,没有任何变化。