逆向

什么是逆向工程?

逆向工程(又名反向工程,Reverse Engineering-RE)是对产品设计过程的一种描述。在工程技术人员的一般概念中,产品设计过程是一个从设计到产品的过程,即设计人员首先在大脑中构思产品的外形、性能和大致的技术参数等,然后在详细设计阶段完成各类数据模型,最终将这个模型转入到研发流程中,完成产品的整个设计研发周期。这样的产品设计过程我们称为“正向设计”过程。逆向工程产品设计可以认为是一个从产品到设计的过程。简单地说,逆向工程产品设计就是根据已经存在的产品,反向推出产品设计数据(包括各类设计图或数据模型)的过程。从这个意义上说,逆向工程在工业设计中的应用已经很久了。比如早期的船舶工业中常用的船体放样设计就是逆向工程的很好实例。
  随着计算机技术在各个领域的广泛应用,特别是软件开发技术的迅猛发展,基于某个软件,以反汇编阅读源码的方式去推断其数据结构、体系结构和程序设计信息成为软件逆向工程技术关注的主要对象。软件逆向技术的目的是用来研究和学习先进的技术,特别是当手里没有合适的文档资料,而你又很需要实现某个软件的功能的时候。也正因为这样,很多软件为了垄断技术,在软件安装之前,要求用户同意不去逆向研究。
  逆向工程的实施过程是多领域、多学科的协同过程。


为什么学习逆向工程?

在2007年初,我国相关的法律为逆向工程正名,承认了逆向技术用于学习研究的合法性。获悉这个消息,国内软件逆向界人士纷纷奔走相告,雀跃不已。众所周知,我国的软件产业落后于西方列强,甚至落后于邻国印度和日本,而这个举措意味着我国的软件研发人员如果利用逆向技术去研究学习国外一流软件的开发方法,那么我国的软件技术将会有极大的提升,此举何其开明也!
  然而,逆向技术相关的培训实在少之又少,而各个大专院校虽然开设计算机相关专业,但是对此技术也尚未重视。社会上虽然涌现出大量软件开发培训机构,但是以培养软件蓝领为主要目标,对逆向技术更是避而远之。时下的IDE是极其优秀的,拜其所赐,市面上的程序员多出十几倍,但是又有多少能理解程序内部的机制呢?虽然很多人认为,去研究程序的内部原理,就是破坏了“黑盒子”封装性。但是如果只是能够在别人搭建好的平台上做开发,那么就只会被别人牵引技术方向,而自己始终只能追逐技术。如果我们能够充分掌握逆向分析的方法,就可以在一流的软件里直接学习各类先进技术,取长补短,为我所用。若如此,实为我国软件产业之幸事。

怎么学习逆向工程?

 逆向工程是一个综合性和实践性很强的学科,最需要的是耐心和毅力。初学者往往一开始就拿一个成熟软件去反汇编分析,结果被海量的指令和错综复杂的流程搞得晕头转向,然后大多数人就中途放弃了。
  最好从自己用汇编写的“Hello World”程序开始。然后在学习的过程中逐步将难度升级,一点点去看懂流程特性。等把汇编程序看顺眼了,就开始研究C/C++的流程特性,一边在老师的带领下去学习研究,一边勤做笔记、总结方法。几个月下来,就会形成属于自己的一套分析代码的风格或习惯,这样以来,任何软件在你眼中都没有了神秘感,只要你愿意投入时间去分析就一定会得到你所需要的知识。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值