2

我有一个基于 Java 的 TCP 客户端,它与我们正在重写的生产服务器通信。客户端对服务器的 IP 和端口进行了硬编码。我想要做的只是将客户端中的 IP 地址更改为 127.0.0.1 并且我可以在我的开发盒上使用相同的端口号。问题就在这里,我没有所有的源代码,所以我不能重新编译它。写它的人已经有四年没在这里工作了,虽然我有他的硬盘,但我一直无法找到已编译的环回客户端(即使我找到了它的部分源代码),甚至所有的生产客户端的源代码。我怀疑他在网络驱动器上编写了他的代码,并且在这些年中它已经丢失了。

我有什么方法可以反编译客户端并使用该更改重新编译吗?十六进制或二进制编辑(我也没有技能,我刚刚看到它完成了)?也许 WinRAR 因为我的理解是 .jar 文件只是压缩文件?或者,有什么方法可以捕获来自客户端的传出 TCP 流量并将其重新路由到我的开发盒?我无法关闭生产服务器进行测试,并且如果没有修改过的客户端,将很难确保我正在模拟生产服务器对客户端的响应。

我找到了这篇 SO 文章:Decompile & recompile single file from jar,但是我不明白反汇编和反编译之间的区别,但我找到了那里提到的实用程序 JD。

4

2 回答 2

4

您找到的 java 反编译器 ( http://java.decompiler.free.fr/ ) 将获取您拥有的已编译 jar 文件并创建 java 源文件。然后,您必须编辑源文件以进行所需的更改并重新编译。

我建议通过命令行使主机和端口可配置,以避免再次出现此问题。

于 2013-02-28T20:02:49.177 回答
2

将 jar 复制到系统到您的工作站并解压缩。然后使用 jad 之类的工具来反编译您要查找的类并进行更改。您应该能够编译它,因为编译所需的 jar 与运行客户端所需的 jar 相同

于 2013-02-28T20:08:08.190 回答