Java中的逆向工程

时间:2011-01-31 15:31:42

标签: java reverse-engineering

我知道在SO上已经多次询问过相同的问题,而且我已经完成了大部分内容。但是,我仍然没有一个满意的答案,所以我想从社区询问。

我被分配到对模块进行逆向工程的工作,并且存在以下问题:

  1. 团队不知道底层组件究竟是什么 (模块是第三方解决方案)
  2. 团队只负责测试部分,所以他们只能提供给我 有关流程的信息,但起点是什么,哪个 是他们不知道的地方。
  3. 现在他们希望我深入挖掘代码库,提出类图和序列流等。

    在这种不知道从哪里开始以及如何做这项工作的情况下,我从未在职业生涯中工作过。我唯一拥有的是源代码。

    我有两个问题需要帮助:

    1. Eclipse是否有可以生成类图的插件 自动从源代码?
    2. 当遇到这种情况时,应采取什么方法?
    3. 更新: 我将有权访问源代码。因此,我更倾向于采用最佳方法来完成任务

3 个答案:

答案 0 :(得分:3)

有几个Java反编译器可以帮助你,比如JD-Core,还有一个Eclipse版本。

答案 1 :(得分:3)

我首先反编译模块并确保反编译的代码可以重新组装到一个工作库中。例如,您可以使用JD我现在可以看到您已经获得了源代码。

首先获取可编译的源代码非常重要,因为在探索它时,您必须添加注释和javadoc。您不必再使用原始二进制文件了,只需将反编译后的源代码视为记录非常严重的普通代码即可。重命名局部变量和方法参数以使代码更易于阅读也是一个好主意。

.java文件生成类图应该很简单。

了解流程可以通过两种方式完成,手动或使用分析器。对于这两种方法,您需要首先找到入口点,但如果您已经在使用该库,那么这些应该是相当明显的。然后,您只需调用API方法并逐步执行代码。始终记下您遇到的任何有趣事物。 (在很多方面,探索未知代码类似于在一个古老的冒险游戏中探索地牢。)将这些笔记转换为javadoc注释,这样您就可以随时生成更多信息丰富的javadoc。

探查器方法更多的是发现调用的一般模式,但每个探查器都应该有一个可以使用的调用堆栈视图。

答案 2 :(得分:0)

问题(2)的答案将取决于你对我的评论的回答,但对于问题(1),请查看this page,其中提供了有关如何使用eclipse从源生成UML类图的教程