(一) 概述
我们逆向的世界
在软件破解或者软件加密、解密这个圈子里面,大家对于逆向工程这个词语并不陌生,因为大家兴趣爱好的原因,使大家每天都在与逆向工程这个词语进行着斗争,当然,我们这里使用的逆向工程这个概念,指的是计算机软件方面的逆向工程,而没有包括逆向工程这个词语所包含的所有范围。
逆向计算机软件的世界
从某种程度上来说,计算机软件的逆向主要过程为分析计算机程序,在分析计算机程序的过程中,逐渐建立起高于源代码级别的更抽象层次的程序运行过程。使用一些有助于逆向工程的软件产品,可以帮助我们来完善这个过程的建立,例如,我们通过使用IDA、OD等反编译调试软件,来寻找程序功能、寻找程序数据结构等。
广义上的逆向工程、案例
从广义上来讲,通过对某种产品的结构、功能、运行机理来进行分析、分解、研究完后,制作出功能相近,但又不完全相同的产品,这属于逆向工程的一个基本概念。
逆向工程的使用,多数人错误的认为会侵犯对方的知识产权,但在实际应用上,却往往又不会侵犯知识产权。例如,在集成电路领域,如果怀疑对手侵犯了自己的知识产权,则可以完全使用逆向工程技术来搜集自己的证据。记得有次与朋友讨论知识产权问题,在美国好像是产品相似度或者计算机程序代码的相似度超过60%,即判定为侵犯知识产权。
在逆向工程针对硬件领域内,开发人体力学鼠标,就是一个很典型的例子。以微软公司生产的鼠标器为例,就其功能而言,只需要有三个按键就可以满足使用需要,但是,怎样才能让鼠标器的手感最好,而且经过长时间使用也不易产生疲劳感却是生产厂商需要认真考虑的问题。因此微软公司首先根据人体工程学制作了几个模型并交给使用者评估,然后根据评估意见对模型直接进行修改,直至修改到大家都满意为止,最后再将模型数据利用逆向工程软件 imageware 生成 cad 数据。当产品推向市场后,由于外观新颖、曲线流畅,再加上手感也很好,符合人体工程学原理,因而迅速获得用户的广泛认可,产品的市场占有率大幅度上升。
从某种角度上来解释逆向工程这个概念的话,我们可以把逆向工程理解为:剖析一个产品,知道这个产品的工作原理。因此,在逆向工程这个词语概念的大范围下,逆向工程还包括硬件的逆向工程、软件的逆向工程等等。对于,硬件的逆向工程而言,我们可以举一个简单的例子,
软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。逆向工程工具可以从已存在的程序中抽取数据结构、体系结构和程序设计信息。
逆向工程,通过对某种产品的结构、功能、运作进行分析、分解、研究后,制作出功能相近,但又不完全一样的产品过程。
逆向工程可能会被误认为是对知识产权的严重侵害,但是在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据。
漏洞挖掘?
软件方面的逆向工程,大家的第一印象就是漏洞挖掘技术,但在实际的应用过程中,漏洞挖掘在网络安全逆向工程的应用方面,只属于一个环节而已。