- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于代码迷惑的软件保护
摘要:代码迷惑是软件防盗版、篡改和逆向工程的有效方法,但以前的代码迷惑技术多数缺乏理论依据,使得其保护效果不是十分明确。该文给出插入死代码和改变控制流两种迷惑技术,提出了新的代码迷惑模型,并利用NP-complete问题从理论上证明其可行性。最后,通过实例分析表明该模型具有很好的保护效果。
关键词:代码迷惑;NP-complete问题;软件保护
中文分类号:TP309文献标识码:A 文章编号:1009-3044(2011)01-0118-03
近年来随着计算机网络技术的发展,更多的软件运行在不确定的环境下,可以被任意地分析、跟踪、篡改等。再加上各种静态分析、逆向工程技术的不断进步,使得对软件攻击变得更加容易。针对软件面临的安全问题, 学者们提出了许多软件保护技术 ,主要包括: 软件篡改抵制、软件加密、软件水印、代码迷惑等。其中代码迷惑技术作为一个与加密技术互补的, 针对逆向工程的安全分支, 正受到越来越多的关注。
代码迷惑是一种保持语义的程序变换技术。它通过加大程序复杂度并降低程序的可读性来提高软件的安全性。加大程序的复杂度使得攻击者很难利用工具破解并分析软件;降低程序的可读性则可以使攻击者即便获得软件源代码也无法理解程序的功能。尽管Barak等人[2]在理论上证明了没有硬件支持的代码迷惑技术不能为软件提供彻底的保护。但在实际应用中,代码迷惑的目的并不是为软件提供绝对的保护,只要能保证程序在有效期内不被攻击者攻破,就达到了保护的目的。
目前代码迷惑技术有许多种,这些技术多数只在某个方面增大了攻击者理解程序的难度。例如“Linn等人[4]的插人花指令方法增加了对程序进行正确反汇编的难度,Li等人[5]的基于函数指针迷惑算法增加了分析函数调用的难度,而Wang等人[6]的压平算法则增加了理解控制流转换关系的难度。所以仅仅依赖其中的一种迷惑技术并不一定能有效增强程序安全,因为攻击方法灵活多变,攻击者可以综合运用各种技巧避开这些复杂性,从其他薄弱环节来进行攻击,窜改代码以达到预期目的。
本文将阐述两种代码迷惑技术:插入死代码或无关代码的迷惑和改变控制流迷惑;综合利用这些技术给出一个代码迷惑模型的实现方案。
1 插入死代码或无关代码的迷惑
死代码是指在程序运行时不会执行到的代码,无关代码是执行不会影响程序功能的代码。插入死代码或无关代码即所谓的添加冗余指令,是代码迷惑变换策略中的一种有效方法。死代码或无关代码也叫做伪指令、垃圾指令,该技术的主要特点是通过在程序体中插入无效指令或不影响原始代码功能的无用指令来破坏反汇编的结果和增加代码分析的难度,以达到加密保护的目的。
Linn在他的文章[4]中分析了传统静态反汇编算法,并给出利用垃圾指令阻止反汇编的方法。本文在其研究成果的基础上提出了一种简单有效的代码迷惑方法,具体分两步实现。
第一步,将符合一定规则的冗余指令集中在一起,如表1;左边一列是规则,右边一列给出相应的含义。第一行功能是把0值加到一个寄存器中,第二行功能是将寄存器的值放入本寄存器中,第三行把一个寄存器的值与0进行逻辑或,第四行把一个寄存器的值与-1进行逻辑与。
第二步,随机抽取若干个无用指令组成一定数量的死代码块。并把他们插入程序的执行体中,图1给出常用的死代码块。
根据上面的方法进行代码迷惑可以增加攻击者分析理解程序的难度,对软件能产生很好的保护效果。
2 改变控制流的迷惑
改变控制流迷惑的原理是对程序执行流扰乱,是程序执行流中各个基本块的前驱或后继基本块发生改变,以达到迷惑。这种方法在实际应用中使用广泛且效果好,目前已经有许多这方面比较成熟的技术,如Wang等人使用的压平技术,Li等人使用的函数指针的思想。本文主要针对程序顺序结构提出一种新的执行流迷惑的方法,该方法的主要思路是:重新安排线性执行的语句模块在程序中的物理位置,而在逻辑上执行顺序与原程序执行顺序相同,即在保持程序的功能不变的情况下利用条件跳转或无条件跳转对程序的执行顺序进行改变。图2给出了改变控制流的迷惑示意图。
图2通过插入无条件分支指令来给出一个修改控制流的实例;一段原本顺序执行的程序被两段带有复杂分支的程序段替代,但这两段程序的功能和原始程序段是一样。
3 构造代码迷惑模型
本节首先从理论上讨论构建迷惑器的可能性,为此将给出相关的定义和命题并加以证明;然后提出一个可行的设计方案。
3.1 基本概念和命题
定义 代码变换。假设程序 P 是由n个指令序列I1I2…In组成,将P分成K个代码块P1P2…Pk其中任意一块Pi包含一定数量非空操作的随机指令序列且以一顺序指令结束。现在集合[1,k]中有一个序列σ,对于其中的
您可能关注的文档
最近下载
- 压力检测及仪表.ppt
- DGTJ08-202-2020钻孔灌注桩施工规程 上海市.pptx VIP
- 光伏发电站场内及并网安全技术白皮书.pdf
- API SPEC 4F 钻井和修井井架、底座规范1995.doc VIP
- 2023年09月浙江温州市平阳县部分事业单位面向高校毕业生退役士兵公开招聘6人笔试历年难易错点考题荟萃附带答案详解_1.docx VIP
- 《中华人民共和国安全生产法》培训解读课件.pptx VIP
- 《中华人民共和国安全生产法》解读与培训.pptx VIP
- 电子商务专业课程体系构建与实践教学方案.docx VIP
- 《中华人民共和国矿山安全法实施条例》深度解读课件.pptx VIP
- 【温州】2024年浙江温州平阳县部分事业单位面向高校毕业生退役士兵招聘工作人员6人笔试历年典型考题及考点剖析附带答案详解.docx VIP
文档评论(0)