小议软件保护措施中软件逆向工程技术.docVIP

小议软件保护措施中软件逆向工程技术.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小议软件保护措施中软件逆向工程技术

小议软件保护措施中软件逆向工程技术   摘要:随着网络技术的发展,更多软件是在不确定(甚至是恶意)的环境下运行的,主机可以任意地对软件进行分析和跟踪,而且随着各种逆向工程技术的发展,使得对软件的攻击变得更加容易。如何保护软件中的核心算法和机密数据成为人们关注的一个焦点,对于软件的保护也面临着严峻的挑战。   关键词:网络技术;逆向工程技术;软件的保护   引言   近年来,移动代码技术得到了极大的发展,并有着广泛的应用前景,但代码移动性所引发的安全问题阻碍了该技术在现实商业应用中的大规模使用。在这些安全问题中,如何保护移动代码不受主机的损害是传统安全技术无法处理的新需求。在恶意主机环境下,软件系统可以被逆向工程或被篡改,其机密性、完整性与可用性受到威胁。业界迫切要求简便和行之有效的保护软件与软件知识产权的方法。代码混淆作为一种防止逆向工程的技术应运而生。   一、软件安全概述   软件安全被定义为保护软件(包括软件中的数据),防止非授权访问与使用、篡改、分析和从中挖掘信息。软件保护不同于安全代码(securitycode),安全代码是应用程序的一部分,它提供了鉴别(authentication )等功能。应当说,安全代码是实现软件安全的许多机制(安全机制指的是安全策略的实现)之一。一个应用是由3部分软件构成的:功能代码、错误处理代码、安全代码。安全代码不能提供所有的安全功能,另外,安全代码也有可能受到攻击,所以必须在 3部分软件之上实施软件保护,比如,进行混淆、数据加密等。当前己经存在的软件保护技术主要包括:代码混淆(防御逆向工程)、软件篡改抵制、软件多样性、软件水印、时间限制模式等。   二、逆向工程技术   (一)逆向工程的概念   逆向工程定义为包含两个步骤的过程:第一步分析目标系统,标识系统对象及其关系;第二步创建不同形式或更高抽象层次的系统表示。Scott R. Tilley 将抽取和抽象进一步精化为建模、抽取和抽象三个步骤:(1)建模,采用建模技术构造应用程序的领域模型;(2)抽取,利用适当的抽取机制从目标系统中收集原始数据;(3)抽象,对目标系统进行抽象,以辅助系统理解并允许浏览、分析和表示抽象结果。   (二)逆向工程技术分类   对于软件逆向工程技术,可以分为形式化技术和非形式化技术。非形式化方法是基于代码的词法结构,并依赖于模式匹配及用户驱动的聚集技术的方法。非形式化技术易于产生结构和功能抽象,模式匹配和聚集技术是非形式的,因为被构造的设计陈述是非形式化的,并且这些技术缺乏严格方法来验证在源和设计之间的一致性。形式化技术是基于一些形式化的方法从源代码来导出其规格,形式化的基础可以归结为数学逻辑,所以每一步都可以形式化的验证。两者主要的不同是对于形式化规格语言的应用。形式化规格语言有良好定义的句法和语义,因此形式化技术又可以用来构造证明的关联引用规则,用来严格验证逆向工程过程的每一步的正确性。非形式化技术又可以分为基于计划的和基于解析的两种子类型,基于计划的技术主要依赖用模式匹配来分辨代码中的计划,这是学术界和商业组织的主流。一个程序计划是程序中承担一些抽象功能的一个计算单元所包含的描述,它可以是连续的或分散的代码段。基于解析的技术是用编程语言的句法结构特点分析一个程序,用来构造源代码的高层结构抽象。   如果一个逆向工程技术的步骤有一个形式化的数学基础,那么它是形式化的。它把源程序作为输入,生成一个形式化的规格。形式化的逆向工程技术可以分为两类:基于知识或转换规则的转换技术和应用推导或翻译规则的翻译技术。软件转换和软件翻译都是把一个规格从一种形式变换到另一种形式而保持软件的语义不变,但是它们的自动化程度不同。它们主要的不同是应用域和编程语言的高层知识结合到转换和翻译规则中的程度不同。对于转换,规则一般涉及转换编程语句聚集为简单的、等价的语句,或简洁的形式化规格。为处理不同的聚集组合,需要很多的规则。而翻译涉及许多基于单个原子语句的规则,如赋值、条件和循环语句。   (三)逆向工程的应用   就逆向工程的现状而言,逆向工程一般是对已有软件系统的源代码进行分析,以获得系统设计层次上的理解。逆向工程适用于软件生命周期的各个阶段和各种抽象层次,包括概念、需求、设计和实现。通常系统维护人员并不是系统的开发人员,所以他们必须对许多源代码进行扩展来检查和学习所维护的系统。逆向工程工具有助于这些维护活动。在这个背景下,逆向工程是系统维护过程的一部分,它能帮助维护人员理解系统,使维护人员能对系统做适当的修改。重构和逆向工程都可以算在软件维护的广泛定义中,但这三个过程在构建新系统和软件演化开发的背景下又都有自己独立的位置。图1是一个对逆向工程过程模型的图形描述。这个过程模型由两组三角形组成,其中三

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档