反向工程什么是反向工程

反向工程  时间:2021-08-24  阅读:()

什么是反向工程

首先声明是转来的,因为我回答你这个问题带了个网址,就一直提示"敏感"回答不上 0 引言 随着计算机技术的迅速发展,计算机技术应用的领域也逐渐扩大,人们希望计算机这一智能体能够解决各个领域的更多、更复杂的问题,从而也对计算机软件产品的功能、质量、开发成本和时间提出了越来越多的要求,软件技术受到了前所未有的挑战。

传统的软件工程主要关注新软件的分析与设计,但随着软件系统的规模和复杂度日益增长,软件的生命周期越来越长,软件开发的很大一部分工作集中于维护和改造现有的软件系统,而这些现有系统的需求、设计决策、业务规则、历史数据等统称为遗产系统(LS,Legacy System),LS是一种巨大的、长期的投资,因为如何充分利用这些有用的资产对新系统的开发显得尤其重要。

另一方面,随着技术的普及,Web用户增多,很多软件厂商需要将系统移植到Web上,进一步加剧了对软件维护的需求。

实践研究表明,软件资源预算的50%~80%消耗在对现有系统的维护上,而软件维护者理解程序源代码的时间要占整个软件维护的47%~62%。

软件维护已经成为软件工程面临的重要课题之一,而正确和全面地理解软件系统是对软件进行维护的前提,软件逆向工程应运而生,成为软件工程领域的一个新兴分支,其目标就是开发帮助人们理解已有软件系统的方法、工具,为软件系统的维护和演化提供支持。

文中主要介绍逆向工程的基本概念、主要步骤、分析方法、研究现状、存在的问题以及发展方向。

1 逆向工程的基本概念 “逆向工程”这个名词最早出现在对硬件产品的分析中,人们分析硬件产品以便改进自己的产品。

M.G.Rekoffir将逆向工程定义为:对一个复杂的硬件系统实施有条理的检查,以开发出关于这个系统的一组规范说明的过程。

在把这个概念应用到软件系统过程中,研究人员发现利用其中的许多方法可以获得对系统以及系统结构的理解。

然而,对一个硬件系统实施逆向工程,一般是为了得到这个系统的复制品,对一个软件系统实施逆向工程,一般是为了获得对这个系统在设计层次上的理解,以便于系统的维护、巩固、移植、改进。

软件逆向工程的基本原理是抽取软件系统的主要部分而隐藏细节,然后使用抽取出的实体在高层上描述软件系统。

在软件工程领域,迄今为止没有统一的逆向工程定义,较为通用的是Elliot Chikofsky和Cross1990年定义的逆向工程的相关术语。

软件工程通常被认为是开发一个新的系统,尽管软件工程也包括逆向工程和再工程,为了避免对软件工程含义的误解,引进了正向工程的概念。

(1)正向工程(Forward Engineering):从系统的高层抽象和逻辑上独立于实现的设计到系统的物理设计的传统过程,具体地说是从用户的需求到高层设计,再到底层设计,最后到实现的过程。

(2)逆向工程(Reverse Engineering):对系统进行分析,以确定系统的组件和组件之间的相互作用,以其他形式表示系统,或在较高的抽象层次上表示系统的过程。

值得说明的是,在对一个系统实施逆向工程时,并不改变这个系统本身,也不包括在此系统上构建新的系统的过程。

(3)重构(Restructuring):保持系统外部行为(功能和语义)的前提下,在统一抽象层次上改变表示形式。

(4)再工程(Reengineering):通过逆向工程、重构和正向工程对现有系统进行审查和改造,将其重组为一种新形式。

(5)设计恢复(Design Recovery):结合目标系统、领域知识和外部消息认定更高层次的抽象。

其中,再工程、设计恢复不改变系统,重构改变了系统。

但不改变其功能,再工程涉及到正向工程与逆向工程的联合使用,逆向工程解决程序的理解问题,正向工程检验哪些功能需要增加、保留和删除,再工程改变了系统的功能和方向,是最根本和最有深远影响的扩展。

图1显示这些概念之间的关系。

2 主要步骤和分析方法 由逆向工程定义可知:软件逆向工程的任务包括分析系统、抽象系统和展现系统,从而实现协助用户理解系统的目的。

分析系统是指分析系统的结构及运行过程,但不管目标系统面向何种应用领域,分析系统不外乎是分析系统的静态信息和动态信息。

目标系统面对不同的应用领域,要实现抽象目标系统的任务,需要领域知识和专家的经验。

展现系统最好的方式是使系统可视化。

图1 关系图 现有的逆向工程分析方法主要有以下4种: (1)词法分析和语法分析。

该方法主要是对程序源码进行分析,得到程序信息的多种有用表示,其中最常用的就是交叉引用列表。

通过语法分析可以得到两类表示:分析树(parse tree)、抽象语法树AST(abstract syntax tree),其中AST是更复杂的程序分析工具基础,包含了和程序的实际内容相关的细节。

(2)图形化方法。

图形化方法包括控制流分析、数据流分析以及程序依赖图。

控制流分析是在确定程序语法结构之后进行。

数据流分析关注于解决程序中从定义到使用的过程的相关的问题,比控制流分析要复杂得多。

程序依赖图是数据流分析的进一步改进,比数据流分析更复杂。

在程序依赖图中,控制流和数据流依赖放在一起处理,程序依赖图还具有这样的结构特性:一个程序依赖图描述了一个控制依赖的区域。

(3)程序切片。

切片技术来源于数据流分析方法,已经成为很多程序理解工具的基础。

一个程序切片是由程序中的一些语句和判定表达式组成的集合。

这些语句和判定表达式可能会影响在程序的某个位置上所定义或使用的变量的值。

利用切片技术可以将关注点确定在一个较小范围而不是关注整个程序。

(4)动态分析。

静态分析是对程序源码进行分析。

动态分析则是在程序运行时进行分析,基本方法是对程序进行植入。

植入是在一种在全局范围内更改源代码以添加额外操作的过程。

这种方法的基本原理是:利用代码的结构信息,依据固定的规则,将软件触发器添加到代码中。

追问: 我问的是具体的方法,不是理论。

比如“ 词法分析 和语法分析”,怎么分析,用什么工具? 回答: 你要学下编程了,最起码 汇编 的命令你要知道,如果你连命令是什么意思还怎么分析呢, 分析的软件 ollydbg

10gbiz($2.36/月),香港/洛杉矶CN2 GIA线路VPS,香港/日本独立服务器

10gbiz发布了9月优惠方案,针对VPS、独立服务器、站群服务器、高防服务器等均提供了一系列优惠方面,其中香港/洛杉矶CN2 GIA线路VPS主机4折优惠继续,优惠后最低每月仅2.36美元起;日本/香港独立服务器提供特价款首月1.5折27.43美元起;站群/G口服务器首月半价,高防服务器永久8.5折等。这是一家成立于2020年的主机商,提供包括独立服务器租用和VPS主机等产品,数据中心包括美国洛...

spinservers:10Gbps带宽高配服务器月付89美元起,达拉斯/圣何塞机房

spinservers是一家主营国外服务器租用和Hybrid Dedicated等产品的商家,Majestic Hosting Solutions LLC旗下站点,商家数据中心包括美国达拉斯和圣何塞机房,机器一般10Gbps端口带宽,且硬件配置较高。目前,主机商针对达拉斯机房机器提供优惠码,最低款Dual E5-2630L v2+64G+1.6TB SSD月付89美元起,支持PayPal、支付宝等...

无忧云:服务器100G高防云服务器,bgpBGP云,洛阳BGP云服务器2核2G仅38.4元/月起

无忧云怎么样?无忧云值不值得购买?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。目前,四川雅安机房,4...

反向工程为你推荐
表单控件在网页中创建一个表单,表单中包含各种表单控件,利用表格对各个控件以及输入提示文字进行布局组或资源的状态不是执行请求操作的正确状态在输入netsh wlan start hostednetwork时,显示无法启动承载网络,组或资源的状态不是执行操作的正确状态2g内存条2G的内存条和8G的内存条有什么不同零终端如何打开android命令行终端价格咨询造价咨询公司收费标准是按公司给还是按个人给?无线存储手机wifi无线摄像头可以储存吗网络黑科技受欢迎的十大黑科技产品有哪些qq空间播放器代码qq空间最新播放器代码垂直型网站水平型、垂直型、综合型电子商务网站的主要特征是什么?wps表格数据恢复wps文件没保存怎么恢复
网站空间申请 海外域名注册 如何查询ip地址 仿牌空间 香港托管 网站监控 193邮箱 165邮箱 php空间推荐 可外链相册 上海联通宽带测速 万网空间购买 Updog photobucket lamp是什么意思 注册阿里云邮箱 金主 阿里云邮箱个人版 黑科云 789电视剧网 更多