1对本课程教学地位的理解和想法(学习软件逆向分析的意义****)
1.1逆向工程的起源
世界上最早的逆向工程其实来源于战争时期。在军事战争时期,各国之间常常存在水上作战,而船舶就成了运输和作战的重要工具。如下图所示,是二战时期的船舶示意图,敌军通过观察船舶外观,逆向分析出重要存储和易损点,通过这种方式,在不到五分钟内便将敌舰击沉,这就是最初的逆向工程的起源。
1.2逆向工程与软件逆向分析的定义
上文讲述的是最起源的逆向分析过程,不难看出从最开始逆向工程就包括以下几点要点:观察整体结构、分析易损点、尝试攻击,在这个过程中有一个前提条件是需要懂得被测目标的架构和逻辑,而这和软件逆向分析的理念不谋而合。
软件逆向工程,是一种产品设计技术再现的过程。即对目标产品进行逆向分析及研究,从而运作并得出此产品的处理过程、组织架构、功能特性及技术规格等要素,以此制作出功能相近,但又不完全一样的产品。
软件逆向分析,就是在软件工程角度,对软件进行反向分析,即对目标文件进行反汇编,得到其汇编代码,然后对汇编代码进行理解和分析,从而得出其相对应的源程序、系统结构以及相关设计原理和算法思想等。
如此便可能在分析过程中获得软件的敏感信息、关键算法、绕过方法甚至是源码等重要数据,便对软件生产者产生极大经济损失或其他损失。
1****.3软件逆向分析的意义****
现如今,软件逆向工程已成为一项成体系的课程,也是黑客常用的攻击手段之一,通过逆向分析得到漏洞或敏感信息,便可以发现软件的脆弱点,从而实现对软件的攻击或对软件厂商的勒索。
因此,对于安全研究人员而言,软件逆向技术是一门非常优秀的课程,可以帮助黑客进行更有逻辑的发现漏洞,并给出解决方案,对于0Day的发现有很高价值;
对软件厂商来讲,“未知攻,焉知防”,掌握逆向技术后可以针对性断点调试完善软件安全度,在开发时就可以实现“安全左移”,对于厂商后期修复的风险提高了许多;
对于安全厂商而言,了解软件逆向的能力后,可以针对性做出对软件加固的加壳工具,使开发者减少对自己软件被逆向的风险的担忧;
除了软件逆向外,现如今硬件逆向——测信道分析也在软件全生命周期安全的生产中占了非常重要的一环,测信道攻击原理为在芯片级电路板上运行最小单元算法,如加密算法,通过设备读取芯片上电流的变化,由此可以算出芯片的加密密钥,或绕过某些验证信息取得高级用户权限,这其中与汇编语言也息息相关,因此掌握汇编语言不但对软件安全分析有较高价值,也可以应用在硬件安全逆向分析中。
1****.4软件逆向分析的应用****
1.4.1病毒分析
当今有许多电脑、手机杀毒软件,正是利用逆向查找病毒,剖析病毒,获取病毒的传播方法,达到遏制病毒传播的目的;也可以获取病毒的隐藏手段,以此根除病毒;同时也可以逆向分析病毒,获取其功能目的,也可以溯源定位攻击者。
1.4.2游戏保护
随着虚拟财产的广泛普及,一部分人为了更好的游戏体验,游戏外挂层出不穷,近年来主要存在私服,生产,破解,生产等开挂方式。破解在其中是很常见的:比如说,游戏过程中的碰撞检测,就是说坐标距离小于一个设定数字就不能继续前行了,但是通过软件逆向工程把碰撞检测删除,则可以穿墙而行......而这些开挂方式正是运用了软件逆向分析,进行反向追踪和查询,查找到源代码中相应的数值和代码块,对其进行删除修改等等操作,实现游戏破解。
版权归原作者 2013041001张泽宇 所有, 如有侵权,请联系我们删除。