二进制件防篡改技术研究.docVIP

  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文档。上传文档
查看更多
二进制件防篡改技术研究

二进制软件防篡改技术研究   摘 要:随着软件安全性问题日益严重,软件防篡改技术作为软件保护的重要手段之一,越来越得到国内外研究者的重视。本文首先介绍软件破解与保护的基本概念,针对软件防篡改的主要目标,即能够准确地检测到正常功能之外的对程序进行的异常修改行为;对这种修改行为进行恰当的、有效的反应,重点介绍了几种基于“检测-响应”的二进制软件防篡改技术,对其具体实现方法进行分类和总结,详细分析和讨论各类方法的优劣和局限性,提出了一套评价体系,并展望了软件防篡改技术的发展前景,提出了自己的见解。 中国论文网 /1/viewhtm   关键词:软件保护;防篡改;检测-响应   随着软件破解技术的发展,软件安全性问题日益突出,保护软件知识产权成为一个越来越艰巨的任务。攻击者获取软件副本后,借助一些工具,通过技术手段可以轻易地理解和修改二进制代码,从而达到破解软件、非法使用的目的。二进制软件防篡改技术作为软件保护的重要方法之一,越来越得到国内外研究者的重视。本文研究了防篡改技术的基本原理和实现方法,对当前主流的防篡改技术进行分析和评价,并就该技术的应用和发展前景提出见解。   1 概述   1.1 软件篡改的实现方法   软件篡改通常发生在攻击者对代码进行有效分析之后,具体说来有三种实现方法:(1)在可执行文件运行之前,删掉其中的一些代码,同时/或者往其中加一些代码;(2)从正在运行的程序中,删掉一些代码,同时/或者往其中加入一些代码;(3)借助模拟器、调试器或修改过的操作系统等工具,影响程序运行时的行为。其中(1)属于静态篡改,即直接修改二进制代码,原代码不会进入内存。(2)、(3)属于动态篡改,即边运行边篡改,原代码要进入内存,与调试的原理比较相似。   1.2 防篡改技术的主要目标   防篡改技术的主要目标在于检测对程序的修改行为并做出相应的反应,因此其重要的技术原则有两条:(1)能够准确地检测到正常功能之外的对程序进行的异常修改行为;(2)对这种修改行为进行恰当的、有效的反应。目前常见的软件防篡改实现方法基本上都是基于这两条原则实现的,即“检测-响应”机制。从概念上来说,一个完整的防篡改系统应该是由CHECK和RESPOND两个函数组成,如图1所示,CHECK函数用来测试异常修改行为是否发生并返回结果,而RESPOND函数则根据CHECK函数的返回结果来判断是否触发对篡改行为的响应。   防篡改的具体实现方法有基于源代码和基于二进制代码两种,由于源代码方法有一定的局限性,本文主要研究基于二进制代码的软件防篡改技术。   2 软件防篡改实现技术   根据CHECK和RESPOND函数的实现思想不同,当前主流的软件防篡改实现方法可以分为4种,分别是:(1)基于保护网络的防篡改方法,(2)基于Oblivious Hashing的防篡改方法,(3)远程防篡改方法,以及(4)基于监测运行环境的防篡改方法。   2.1 保护网络   Hoi Chang建立了一种由称之为guards的代码片段组成的保护网络[1],guards分为两类,一类是校验和代码,用来计算一段程序的校验和并验证完整性,即检查是否被篡改。一旦发现被篡改,校验和代码会做出反应,触发一定的行为,比如使软件无法继续使用、中断程序等等,即检查完整性功能。另一类是修复代码,用来将被破坏的代码和数据恢复到原来的样子,具体方法是在别处存放该段代码的原始备份,一旦被篡改则原样复制过来,即自治愈功能。   2.2 Oblivious Hashing   实际上Hoi Chang的保护网络所运用的是防篡改技术中非常普遍的一种方法:自监测原理,基本的思想就是计算某一代码区域的hash值,并根据这个值做出反应。可以把hash值作为程序中将要进行的算数运算中的一部分数据,或者把hash值用在其他变量地址的计算上。然而,上述自监测算法有两个根本性缺陷:(1)读取自己代码段的操作很容易被检测出来,即算法隐蔽性不高;(2)只检查代码正确性,攻击者可以修改运行时的数据来影响程序行为,比如使用调试器,在某个关键函数返回之前修改其返回值,即不能抗动态篡改。   由此产生了另一种防篡改思想:oblivious hashing[2],即“易遭忽视的hashing”,因为此方法中hash是作为软件的一部分在正常的计算过程中被计算出来的,攻击者很容易忽视它。图2显示了这种方法的基本原理,即通过结合源代码中的指令和内存中的指令来计算hash值。   Y.Chen提出了一种巧妙的方法[3],直接在源码中插入了hash计算代码,根据变量的值和控制流控制语句输出结果计算hash。它不记录程序trace,而是往程序中插入相关代码,计算trace的hash,来监测变量的改变

文档评论(0)

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

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

1亿VIP精品文档

相关文档