jdGui可以拆卸的单个组件的jar文件和的.class文件 [...],但有没有办法把整个项目东西 可以在Eclipse或IDEA加载和“简单”是重新编译?
有一种方法,无论您称之为“简单”方式还是“非简单”方式在很大程度上取决于您是否看到这些步骤简单但耗时,或耗时,因此不会简单。
自动反汇编器倾向于生成很少看起来像开发人员编写代码的代码。这意味着你遇到了一个新问题,你很难阅读反汇编器的代码。与此同时,经验丰富的反汇编经验丰富的开发人员可以通过阅读编译出相同插入替代品的Java OpCodes来编写代码。两种方法都增加了成功的机会。
然后是关于重构有意义的内部变量名称的部分。这些对于使代码易读是非常重要的,这将是廉价代码维护的先决条件。经验丰富的开发人员经常可以阅读代码的结构,通过在调试器中观察平台进行协助,并对他们将变量命名的内容进行有根据的猜测。通常这已经足够了,但是这又是一个缓慢的过程。
最后,代码的结构需要足够的了解,以便正确地修改您的问题。如果幸运的话,您的问题会影响一小段封装的代码块。在这种情况下,可以构建一小组单元测试,以确保修复不会破坏其他无证但需要的逻辑。
如果你不走运,那么你的修复将需要更新很多不同的模块。同样,这意味着所有正在改变的模块都必须被很好地理解,以便进行安全的更改(在可能几乎不可读的环境中)。
所以,它可以做到。这只是很多工作,很多工作可能不会直接影响您想要解决的问题。熟悉这方面的人员可以重新包装JAR文件,以便在工作进行时获得一些运行时调试。我之前做过,并且完全理解了梅纳的评论;但是,我是一只奇怪的鸟,我喜欢这项工作。
这就是说,如果你有足够的口袋,我只会打扰你。将流量记录到容器中或从容器中注销可能会更便宜,并且可以编写一个新的替换项来执行相同的操作(但是,如果不记录那些不会发送的超级重要消息,您将面临风险:在你没有捕获的条件下)。
简短的回答,没有。您可能会开始进行一个可怕的任务,即从您选择的反编译器JD-GUI中获得的源代码重新构建源代码。然后重新编译,部署和测试它们直到有效。我现在不想成为你。 – Mena
反编译的质量取决于编译时的原始编译器设置。现在我建议你做一个损害评估 - 你是否需要获得完整的资源,或者你可以做一个简单的修复,包括替换一两个课程。答案可能会决定你的行动和预算,因为这需要时间。 –
请注意,最新版本的IntelliJ具有相当好的反编译器。这可能会让你感觉不错。 –