我修改了第三方 Java 桌面应用程序.class文件的字节码(并重新打包了.jar),结果发现在运行时,我的更改没有任何区别,除非我的更改以某种方式导致崩溃。我所做的最简单的实验是使用十六进制编辑器并简单地替换.class文件中文本字符串中的一个字母。运行时(当然是重启Java应用后),文字还是原来的文字。
这是原始字节码的示例:
ldc "Some text."
使用十六进制编辑器,我更改了字符串,然后在字节码编辑器中再次查看:
ldc "Xome text."
反编译的代码还显示了修改后的字符串。文件中不再有对原始字符串的引用.class。尽管有这种变化,运行时显示的文本是“ Some text. ”而不是“ Xome text. ”。
有什么我需要考虑的吗,例如某种必须清除的缓存(在应用程序范围之外)?我试图删除Java 控制台中的“临时 Internet 文件”,但无济于事。
感谢您提供的任何帮助!:)
删除:我正在试验的实际应用程序的反编译代码和修改文件,由于它们的问题性质(无论如何都没有真正帮助任何人)。