北京软件逆向开发【过程】

212次 2016-05-09

  北京软件逆向开发公司介绍:软件开发,是根据用户要求建造出软件系统或者系统中软件部分的一个产品开发的过程。软件开发是一项包括需求获取、开发规划、需求分析和设计、编程实现、软件测试、版本控制的系统工程。换句话说,软件开发就是一系列最终构建出软件产品的活动。软件开发可能包括研究、新的开发工作、修改、复用、重新设计(再工程)、维护,或者任何最终获得软件产品的其他活动。尤其是在软件开发过程的初始阶段,其中可能会涉及到许多的部门,包括市场营销、工程设计、研究与开发以及一般意义上的管理。

  逆向工程的基本方法和步骤:

  1. 软件功能性试用。

  输入:用户手册(user manual),功能列表(feature list),软件的release版本。

  输出:用例(use case)

  方法:软件试用。

  2. 代码动态结构剖析,又叫功能流(flow)的剖析。

  目的: 功能流的是软件的核心,它代表了软件实现该功能的方法,决定了软件的基本架构。

  输入:源代码,用例

  输出: 活动图,顺序图。

  方法:可以用的手段有动态和静态两种。动态手段包括设置断点(break point), 查看调用栈(call stack);静态手段包括通过集成开发环境(IDE)直接对函数调用进行跟踪,包括正向跟踪(直接查看被调函数)和反向跟踪(查找函数的调用者 (reference)),或者使用UML reverse engineering工具直接从代码逆向生成顺序图(sequence diagram)

  3. 代码静态结构剖析,又叫模块结构剖析。

  目的:静态结构的主要作用是增强代码的复用性,可维护性和扩展性。通过分析代码的静态结构,我们可以得出代码的复用模式。

  输入:软件设计文档(design document), 类似于java doc的代码结构文档,源代码。

  输出:模块结构图,类图。

  方法:通过UML reverse engineering工具直接从代码生成类图(class diagram)。通过观察代码的组织方式(目录结构)。