【问题标题】:Need assistance to decompile a jar file, edit the a class, and save as jar file需要帮助来反编译 jar 文件、编辑类并保存为 jar 文件
【发布时间】:2013-07-31 04:25:10
【问题描述】:

我有一个 jar 文件,我需要编辑一个特定的类并将其保存回 jar 文件中。 我尝试了不同的反编译器,但无法保存回 jar。

我尝试使用 Eclipse 和 JADCLIPSE 进行反编译。 通过使用它,我可以看到反编译的类文件,但我无法编辑它。 谁能帮我解决这个问题?

【问题讨论】:

    标签: java reverse-engineering executable-jar decompiler


    【解决方案1】:

    我使用JD-GUI 来反编译.jar,这有一个选项可以导出所有反编译的类。如果您正在反编译的 .jar 没有被混淆等,那么这个源应该是可重新编译的(否则您将需要通过字节码编辑来解决它)。

    提取类后,您需要确保在编译时使用指向.;MyJar.jar-CP 参数进行编译,以便在编译时可以找到.jar 中的依赖项。

    重新编译并获得新的 .class 文件后,使用 7z 打开 .jar 并用新的 .class 文件替换旧的 .class 文件。您可以使用命令行 jar 工具执行此步骤,但 7z 更容易。同样,如果 jar 被混淆并且类文件具有相同的名称,只有区分大小写的区别,您可能需要使用 Linux 重新插入 .class 文件。 (可能在 Windows 上可能,但我从未深入研究过)。


    我之前反编译过这个Java程序添加了一个命令行界面,你大概可以在cmets中找到链接;

    http://ninjacave.com/jarsplice

    【讨论】:

    • 谢谢。现在我已经完成了一半。我试图在 configurator.jar 中编辑一个特定的 java 文件。我确实编辑了文件。
    • 并将类路径设置为d:\project\configurator.jar。我正在尝试使用命令提示符在 Windows 中编译 java。但是,得到“包不存在错误”。我怀疑java程序不能导入这个包。 (java代码——import de.tu_berlin.aio.cams.configuration.CamsLogger.LogOperator;)和(错误是——包CamsLogger不存在)。我再次检查了这一点,并且包存在于上述路径中。我在设置类路径时是否犯了任何错误。请帮忙。
    • 如果你的 jar 有任何依赖项,你需要将它们包含在类路径中。
    【解决方案2】:

    还有很多免费的实用程序,比如 WinZip 、7-ZIP 你可以使用它们。

    在打开 jar 文件之前,只需将 jar 的扩展名更改为 zip 文件,然后提取您要编辑的特定类文件,然后使用任何反编译器对其进行反编译,进行更改,重新编译,然后最后将其放回压缩文件。

    希望对你有帮助。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-22
      • 2013-03-03
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多