【问题标题】:Working with decompiled java code使用反编译的 java 代码
【发布时间】:2014-02-26 11:18:11
【问题描述】:

在我最近的项目中,我们需要修改一些业务规则,但是我们没有源代码。

我拿了最新的生产部署jar文件并通过JD-gui打开它。通过使用选项保存所有资源,我可以获得反编译的 java 文件。现在我的问题是:

  1. 我看到反编译的 java 代码在每一行都有不必要的行 cmets。有什么办法可以避免吗?

  2. 如果我对某个文件进行了更改,然后再次编译代码并将 jar 发送到生产环境,是否会有任何隐藏的挑战?

【问题讨论】:

  • Java 反编译器生成的代码并不总是按原样编译。您最终可能会花费大量时间来修复编译错误。
  • 如果只需要稍作修改就能使代码编译和工作,那你就认为自己很幸运。
  • 反编译器的输出不仅不总是编译,而且即使它确实编译也不一定正确。重新部署反编译器生成的代码时要格外小心。在几种情况下,JD-GUI 可能会产生不正确的代码。其他反编译器可能更好,但相信它们仍然是自找麻烦。如果你必须走这条路,至少比较两个或三个像样的反编译器的输出,并确保结果是一致的。我推荐 Procyon、CFR 和 Krakatau。

标签: java decompiling


【解决方案1】:

1.这取决于您使用的工具,大多数情况下您必须自己清理。
2.某些jar文件包含MD5校验和,您必须删除或更新校验和才能使您的新jar文件正常工作。

【讨论】:

  • 3) 反编译不会产生与您开始时完全相同的代码。在我使用反编译器(不是你引用的那个)的少数情况下,我看到了我必须手动重写一些代码才能再次编译的情况,我不确定我' d 希望在不进行完整代码审查的情况下将业务押在成功的往返交易上。
  • 同意..变量名或其他东西可能有一些变形..但到目前为止我的反编译代码能够编译..没有任何错误......我发现我需要改变只有一个文件..我正在考虑专门更改该文件...编译它然后替换原始 jar 中的单个文件...我希望它可以工作..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2015-12-21
  • 2012-04-06
  • 1970-01-01
相关资源
最近更新 更多