文档详情

软件安全教学课件(鲁宏伟)第三讲 软件安全防护技术.ppt

发布:2017-07-07约4.17千字共34页下载文档
文本预览下载声明
第三讲 软件的安全防护技术 鲁宏伟 luhw@hust.edu.cn 主要内容 为了防止软件被恶意使用者非法破解、使用、拷贝,保护软件开发者、商业组织的合法权益,就必须对软件进行保护。在长期反盗版的过程中,形成了许多保护软件的方式。 现在比较常用的软件保护方式分为基于硬件加密保护和基于软件保护两种方式。 硬加密主要是指盘保护(软盘、光盘)和加密狗、锁。 软件加密一般基于计算机某些硬件特性。将加密与这些特性绑定在一起,形成电子许可证。 现在已经发展到其他很多成熟的方式:注册验证、软件水印、反跟踪技术、加壳技术等。 软件保护技术概述 基于壳技术的保护机制 自然界中植物用壳来保护种子,动物用壳来保护自己的某些部位。 同样,在计算机软件里也有一段专门用来负责保护软件不被非法修改或逆向分折的程序。 它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样,由于这段程序和自然界当中的壳在功能上有很多相同的地方,因此大家就把这样的程序称为“ 壳”了。 基于壳技术的保护机制 从技木的角度分析,壳就是一段执行于原始程序前面的代码,可以用来防止程序被逆向分析。 原程序代码在加壳过程中可能被压缩、加密。当加壳后的程序运行时,壳先于原始程序运行,它把压缩、加密后的代码还原成原始程序的代码,然后再把执行权交还给原始程序。 软件的壳可分为加密壳和压缩壳。 加密壳的主要目的就是为了隐藏程序真正的入口点,压缩壳的主要目的是减小体积、方便传播。 伪装加壳 所谓伪装,就是通过改变可执行文件的外壳自身的特征属性来伪装成为别的外壳,因而干扰破解者的分析辨别。 由于不同类型的外壳的破解方法是不同的,如果没有正确判断出外壳的类型,那么就不能成功的破解、脱壳,所以通过伪装就能起到软件保护的目的。 一些常用的加壳方法 多重加壳 对PE文件至少进行2次加壳处理,增强软件保护强度。 这类型的加壳方式多用于病毒木马,因为该种加壳方式通常把程序变得十分复杂,病毒扫描器在进行杀毒扫描时辨别就变得更难。 但是就软件保护而言,加了多重外壳会影响程序的执行效率,因为程序运行的时候,解密解压需要逐层处理;还有就是,加壳多少和软件保护强度不是成正比的,脱壳者只要依次脱壳破解就行。 一些常用的加壳方法 代码变换加壳 该种技术通过选择合适的算法对程序进行变换,当原程序运行的时候,外壳程序再恢复这些程序代码。 进行了变换处理的程序代码从静态角度去看,完全是一堆杂乱的代码,从而防御了静态反汇编程序 一些常用的加壳方法 代码混淆加壳 这种技术始于Java中间代码保护,现在保护.net程序上也常常使用该种保护方式。 通常代码混淆技术是针对中间代码的,对于目标代码来说,该种方式却刚刚开始发展。 一些常用的加壳方法 虚拟机加壳 基于虚拟机的加壳就是把原程序代码指令进行转换成另外的指令、操作码。程序运行的时候,需要虚拟机来解释运行这些指令、操作码。 该种方式实现难度十分大,因为一个虚拟机的设计实现很困难,对软件开发者要求很高,需要很好的操作系统框架设计技术,而且对Intel的开发要熟悉。 另外还有一些因素要注意考虑,如:该虚拟机内部的线程调度、安全等。 虽然虚拟机加壳实现起来很困难,但是它对软件的保护能力强度却是非常的高。 一些常用的加壳方法 PE文件格式概述 PE 的意思就是 Portable Executable,它是 Win32 环境自身所带的执行体文件格式。它的一些特性继承自 COFF (Common Object File Format) 文件格式。 Portable Executable (可移植的执行体)意味着此文件格式是跨 Win32 平台的:即使 Windows 运行在非 Intel 的 CPU 上,任何 Win32 平台的 PE 装载器都能识别和使用该文件格式。 所有 Win32 执行体都使用 PE 文件格式,包括 NT 的内核模式驱动程序(kernel mode drivers)。因而研究PE 文件格式是我们洞悉 Windows 结构的很好的方法。 PE文件格式概述 PE文件格式概述 PE文件格式概述 PE文件格式概述 对可执行文件加壳过程为: 1)首先对需要加壳的PE文件的Section区块数据进行压缩或者加密。 2)然后把解压、解密的程序附加到区块里,同时在原文件的区块头中增添相应的区块表。其中这些程序也就是所谓的外壳程序。 3)最后修改原PE文件程序的入口地址,让其指向外壳程序 这样就使得外壳程序优先得到执行的控制权,到达保护软件的目的。通过上述的步骤基本上完成了加壳。 加壳原理 加了壳的可执行文件执行过程为: 1)当加了壳的可执行文件执行时,Windows装载器首先加载可执行文件到虚拟内存中,然后可执行文件找到程序入口地址开始运行
显示全部
相似文档