简析逆向逆向工程大家谈

更新时间:2024-02-22 点赞:5214 浏览:18752 作者:用户投稿原创标记本站原创

在上期《亦正亦邪反编译》中,我们主要讨论了反编译技术,这仅仅是逆向工程的一种。在工程和技术领域,逆向工程的运用非常普遍,而且大部分都合理合法。
由于逆向工程是一种由结果来推导出实现方法和原始材料的过程,因而其技术难度可能更大,当我们真正走进逆向工程领域,才会发现它不可低估的技术含量。
在3D建模中就常用到逆向工程。一般的工业建模是根据模型参数来生产实物,而它的逆向工程可以把其他厂家的或者手工制作的实物还原为模型文件,汽车制造类的厂家不可避免地都要使用。因为很多时候,产品的模型不能凭空在电脑上设计出来,而是根据现有的实物经过各种变形和实验测试后确定下来的。要把这些经过实践检验认为是最好的结构形态批量生产出来,就需要根据实物来建立模型,这就需要逆向工程。
在机械摘自:本科毕业论文评语www.618jyw.com
制造领域,CAD、CAM、CAE等必不可少,经常要根据现有物理部件来构建3D模型。为此,有时还需要专门的逆向工程软件来完成这些工作,如Imageware、Geomagic Studio、CopyCAD、RapidForm、UG等。通过结构光源转换、三维坐标测量、X射线断层成像、3D扫描等技术,可以方便地对真实对象进行尺寸测量,形成顶点信息,进一步生成3D模型。
像雕塑、模具之类的物体,用3D扫描后很快就能批量生产,这也给了山寨产品一个可以完美仿效的空间。设想一下,如果3D扫描和3D打印相结合,那结果就不敢想象了。
在电子行业,PCB抄板与IC解密已经非常流行。在已经有电子产品实物和电路板实物的前提下,利用反向研发技术手段对电路板进行逆向解析,可以将原有产品的PCB文件、BOM(物料清单)、原理图等技术文件以及PCB丝印生产文件进行还原,进而完成PCD制板、元件焊接、电路调试,直至生成原电路板样板,这就是“抄板”。而对于集成块、智能卡以及单片机,可以层层刮掉用电子显微镜拍照,甚至借助设备直接复制烧录在其中的程序文件,或提取关键代码,完成芯片解密。对于这类逆向工程,法律上的阻止已经显得力不从心。
从机械工程、电子线路,到美术雕塑、音乐制作,逆向工程都有用武之地。音乐行业的“扒带”(根据音乐来扒出乐谱),就是一种逆向工程,但一般都是靠人工进行,而且需要有敏锐的听觉,对音乐修养和水平都有较高要求。
刘宗凡:走近逆向工程
逆向工程源于商业及军事领域中的硬件分析。其主要目的是,在不能轻易获得必要的生产信息下,直接从成品的分析,推导出产品的设计原理。即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素,以制作出功能相近,但又不完全一样的产品。
系统工程是通过对事物的排列与组合,提高其整体效益。而逆向工程则是按照与系统组织的相反方向,将其由系统到要素、由大至小一件件地拆卸开,分析各要素、各部件的结构原因、生成原理及成型过程中的成功思路,再结合自己的实际,对其进行必要的调整和改进,进而形成新的系统。如果说系统工程强调综合就是创造,那么逆向工程追求分解也是创造,也可以说是一项对现有成熟技术进行二次开发和深度加工的再创新工程。运用逆向工程难题,就是通过解剖麻雀,把复杂的结构条理化、系统的工程清晰化,进而收到寻根探源、破题求解、复制创造之效。
逆向工程从应用范围来看,可以分成硬件和软件两大部分。硬件的逆向工程主要在机械制造领域应用广泛,特别是在军事上的应用非常普遍。众所周知的原因,各国的尖端武器都是绝密资料,通过逆向工程来分析、了解、仿制、改进,成为发展中国家赶上先进国家的一个常用手段。美军一架RQ-170隐形无人机被伊朗截获,一些美高官忧心忡忡。据俄罗斯军事工业综合体网站报道,如果中国能够接触到伊朗手中的美制RQ-170隐形侦察机,那么就很有可能会通过逆向工程学的方法获取美国人的绝密技术,找到对付方法并可能复制其关键技术,甚至仿制成品。这一新闻事件的反复炒作,也使逆向工程这个物理学中的中性词,一时热门了起来。
一些国外媒体看到中国花样翻新的“克隆”或者“山寨”技术,将中国捧为“逆向工程大国”。但有关中国专家认为,逆向工程并不像媒体说的那样简单,成本甚至比自己研制还大(但研发时间可能缩短),隐形飞机制造工程尤其复杂,当残片遭到一定程度的物理破坏后,想准确判断材料本身都很困难。即便是逆向仿制工作,也不是哪个国家想做就可以随便做的。没有自身的技术创新,没有一支可靠有效的掌握高新技术的科研队伍,即便是逆向仿制也是步履维艰。
在软件领域,逆向工程也很普遍。例如,公司购买的软件都是没有原程序的,如果要在原有基础上修改、改进某些功能,就可以通过逆向工程来实现。软件的逆向工程可分通过反编译、反汇编和动态跟踪等方法来实现。反编译不是简单地实现程序的还原,而且要倒推出设计思想、数据结构、算法等,使得原始程序实现可维护化。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。可以看出机器语言和汇编语言是可以对应起来的,所以反汇编是所有程序都可以实现的。当然,汇编语言相对来说阅读比较困难,要和现在流行的面向对象的程序对应起来更是非常困难,所以反汇编更加适合于小型的、核心的应用。动态跟踪技术最常用于协议逆向工程,特别适用于设备驱动程序的逆向工程。
邱元阳:再谈反编译
软件的逆向工程最常见的还是反编译。但反编译需要有针对性,不可能把随意的一个EXE文件反编译成一个SWF或FLA文件,也不可能随意把一个EXE文件反编译成某种语言的源程序。当然,任意可执行文件的反汇编还是可能的。
要防止程序被反编译,一个思路就是让别人无法知道它是在什么环境下编译的。除了使用不常见的编译环境外,程序加壳也会增加反编译的难度。 另外,有些开发环境下编译的程序源于:毕业设计论文格式www.618jyw.com
目前还没有相应的反编译工具,如在Director、Authorware下生成的作品要反编译就非常困难。
文本文档有时也是要保护的对象,它们可能会被重新生成各种不同的格式,这也可以看作是一种编译过程,最常见的是生成PDF格式。这样,一方面保证了文本文档不被篡改,另一方面也规范了文档的显示和阅读方式。然而很多时候,我们还是需要将一些PDF文档“反编译”成DOC等原来的格式。
AnyBizSoft PDF Converter是一个专业的PDF转换器,支持将PDF转换为Word(doc/docx)、PowerPoint(ppt/pptx)、Excel(xls/xlsx)、HTML、TXT等格式,对中文字符的支持性良好,能够保存原有PDF的页面布局、图片、超链接等信息,对于加密或保护的PDF文件也能轻松转换。很多用其他软件无法转换的PDF文件,用AnyBizSoft PDF Converter却能搞定(如图1)。
需要说明的是,有些扫描版的PDF文件,里面的文字其实是图片格式的,转换后仍然是图片,无法直接转换成文字。需要将它们也转换成文字时,还需要借助OCR(光电字符识别)工具进行,如汉化OCR、CAJView OCR版阅读器等。
实际上,如果仅仅是要编辑PDF文件,可以使用PDF文件编辑器,如Foxit PDF Editor,就是一个真正的PDF文件编辑软件,具有所见即所得的编辑功能,并能在PDF和Windows应用程序间复制粘贴文本和图像。
此外,Word的DOC文档也逐渐被用来进行文档传输,近年来在政府部门下发红头文件的电子文档时就常用到。只是这些Word文档采用了IRM(信息权限管理)机制进行保护,其内容是禁止复制和编辑的,甚至根本无法选中内容。对于这些受到编辑权限保护的文档,可以另存为.rtf文件,用写字板打开,重新保存,再用Word打开,即可编辑修改。
刘树明:程序逆向分析示例
这里以反编译难度较大的C++程序为例,说明软件逆向分析的方法和过程。

1.运行时界面分析

分析目标:分析和监视软件运行时产生的窗口类型。现在的各种软件很少全盘自己编写相关代码,或多或少都使用了一些第三方开源代码,并且采用这些代码的时候,很少对其中的封装类进行修改,所以监测到相关界面的类名称就显得非常有意义了,因为我们查到它使用了哪些类后,就可以查找相关的开源代码,轻松绕过反编译软件的难关。
这项工作可以使用VC自带的工具spy++进行。spy++还能监测到软件的控件句柄、消息传递等。我们借助它了解到这些信息后,可以另外写程序向相关窗口发送消息,冒充用户人工使用软件,也就是通常我们常说的外挂。针对游戏软件的外挂程序比较多见,利用外挂,我们可以实现自动玩游戏,如果再向游戏窗口发送SW_HIDE消息,则还可以隐藏游戏窗口,达到“后台挂机”的目的。现在网上流行的聊天记录导出软件,就是直接向发送相关消息,冒充用户手工操作,在登录运行的情况下导出其个人的聊天记录,绕过以前的本地聊天记录加密难题。

2.反汇编跟踪调试

通过这个办法可以了解到软件的功能和运行流程,再另外编写高级语言程序实现相同功能。
以调试Google Chrome浏览器为例。先运行Chrome浏览器,再打开Visual studio C++,选择“工具→附加到进程”,界面如图2所示。
选择Chrome进程,我们可以看到Chrome为每个窗口生成了一个进程,如果打开了多个窗口,则有多个进程,如果只打开一个窗口,就只有一个进程,我们随便选择一个进程即可。
附加上去后,可以看到它的反汇编代码,可在汇编程序的任意位置设置断点,程序运行到断点处会自动激活VC++,进程停在断点处,这时可以按F10和F11进行单步调试跟踪它,并且可以根据调用堆栈来快速定位各个功能模块,大体绘制出程序的功能模块构成图,软件界面如图3所示。

3.相关动态链接库分析

DLL Export Viewer是一个动态链接库分析软件,利用它可以查看到DLL文件里面的函数和接口名称,美中不足的是还不能确定函数参数类型,但我们看到函数名称后,基本上都能猜出它的功能,另外我们还可以配合上面介绍的反汇编调试方法来获取一些信息。

4.黑盒分析

这一分析是指把软件完全当成一个黑盒,通过控制对软件的输入数据构造,并对输出数据进行分析来了解它的算法。黑盒分析在某些情况下也是非常有用的,著名的第三方软件Luma,就是清华大学计算机系的一个学生用腾讯做黑盒分析后写出来的客户端软件,这个软件在2008年以前不但具备的所有功能,有些功能甚至做得比的更好,而且一直跟随升级相关功能,并且将所有的源码完全开放!

5.数据抓包分析

对于网络软件的逆向工程,数据抓包就显得非常重要了。尽管软件内部结构和逻辑对逆向工作者来说是不可见的,但是它始终是要通过网络跟服务器端交换数据,我们将这些数据拦截下来后进行分析,可以了解到非常多的信息,包括它是采用什么网络协议和服务器端进行数据交换的?数据包是如何进行封装的?发送给服务器端的数据是否进行过预处理?网络接口的地址是什么?相关的参数名称是什么?这些问题都可以通过拦截数据包得到答案。常见的网络抓包软件主要有MiniSniffer、WSockExpert等。
刘宗凡:展望逆向工程
逆向工程包括形式反求、工艺反求和材料反求等几个方面。在机械领域的实际应用中,主要包括以下几个方面:①对已有零件的复制,再现原产品的设计意图;②当原始设计不可得时,用于对已有产品的改型或仿型设计;③在设备维修中对个别损坏或磨损零件的复制;④在美学设计特别重要的领域,通常采用真实比例的木制或泥塑模型来评估设计的美学效果,再通过逆向工程进行设计;⑤当设计需要实验才能定型的工件模型时,通常采用逆向工程的方法。例如,在航天航空领域,为了满足空气动力学等要求,需要进行风洞实验的产品模型;⑥数字化模型的检测,如检验产品的变形分析、焊接质量以及零件实物与CAD模型的比较等。 摘自:硕士论文答辩www.618jyw.com
相关文章
推荐阅读

 发表评论

共有3000条评论 快来参与吧~