您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机安全技术第3章
第三章计算机软件安全技术3.1软件安全技术概述计算机软件安全主要是指保证所有计算机程序和文档资料免遭破坏、非法拷贝、非法使用而采用的技术和方法,其内容包括如下五个方面:(1)软件的自身安全(2)软件的存储安全(3)软件的通信安全(4)软件的使用安全(5)软件的运行安全影响计算机软件安全的因素很多,要确保其安全,必须采取两方面的措施:一是非技术性措施,如制定有关法律、法规,加强各方面的管理等。二是技术性措施,如采用软件安全的各种防拷贝加密技术、防静态分析、防动态跟踪技术等。3.2软件分析技术在进行软件的破解、解密工作中,一个首要的问题是对软件进行分析。这些软件都是机器代码程序,对于它们分析必须使用静态或动态调试工具,分析跟踪其汇编代码。3.2.1静态分析技术所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。如果我们对静态反汇编出来的程序清单进行阅读,就可以从中找到有用的提示信息,了解软件的编程思路,以便顺利破解。常用的静态分析工具有W32DASM、IDA和HIEW等。W32DASM可以方便的反汇编程序,它能静态分析程序流程,也可动态分析程序。在其新版本中,还加强了对中文字符串的提取,W32DASM的界面如下图所示:3.2软件分析技术3.2.2动态分析技术所谓动态分析是指利用动态分析工具一步一步地单步执行软件。为了有效地进行动态跟踪分析,需要进行以下两个步骤:第一步,对软件进行粗跟踪。第二步,对关键部分进行细跟踪。常用的动态分析工具有Soft-ICE和Trw2000。Trw2000完全兼容Soft-ICE的各条指令,并且专门针对软件破解进行了优化,在Windows9x下跟踪调试功能更强。可以设置各种断点,并且断点种类更多。它可以像一些脱壳工具一样完成对加密外壳的去除,自动生成EXE文件。它还有在DOS下的版本,名为TR。下图为Trw2000界面:3.3常用的软件保护技术常见的软件保护技术有序列号方式、时间限制、警告窗口、KeyFile保护、功能限制、CD—check等,下面对它们分别做出简要介绍。3.3.1序列号方式3.3.2时间限制3.3.3Nag窗口3.3.4KeyFile保护3.3.5功能限制的程序3.3.6CD-check*3.4反跟踪技术反跟踪技术是磁盘加密技术中最能显示技术水平的部分。一个有效的反跟踪技术应该具有以下三个特征:(1)重要程序段是不可跳越和修改的。(2)不通过加密系统的译码算法,密码不可破译。(3)加密系统是不可动态跟踪执行的。*3.4反跟踪技术下面我们以DOS中功能强大的动态跟踪调试软件DEBUG为例,对常用的反跟踪技术作出说明。:3.4.1抑制跟踪中断3.4.2封锁键盘输入3.4.3设置显示器的显示性能3.4.4检测跟踪法3.4.5破坏中断向量表3.4.6设置堆栈指针法3.4.7对程序分块加密执行3.4.8对程序段进行校验3.4.9迷惑、拖垮解密者3.4.10指令流队列法3.4.11逆指令流法3.4.12混合编程法3.4.13自编软中断13技术3.5软件加壳与脱壳3.5.1加壳计算机软件中的“壳”是一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。给软件加壳的目的主要有两点:第一就是达到压缩EXE文件的目的,以节约存储空间,方便网络传输。第二就是加密保密的目的,有一些版权信息需要保护起来,不能让别人随意更改,如作者的姓名、软件名称等。能够完成对可执行文件压缩和对信息加密的软件,我们称之为加壳软件。3.5软件加壳与脱壳加壳软件与一般的Winzip等压缩软件是有区别的。加壳后的文件能直接运行,还是一个可执行文件,它们的压缩是在内存中完成的。而Winzip等软件只能把文件解压到硬盘中,只是将压缩后的文件还原成源文件。加壳与没有加壳软件的运行情况如图所示:常见的加壳软件有ASPack、UPX、PECompact等。3.5软件加壳与脱壳3.5.2脱壳“脱壳”顾名思义,就是把在软件外面起保护作用的“壳”程序去掉。脱壳有两种方法:一种是自动脱壳,另一种是手动脱壳。(1)自动脱壳自动脱壳就是用相应的脱壳程序对加密的程序进行脱壳的方法。一般每种压缩工具的壳,都会有相应的脱壳工具,因此只要找到较新版本的脱壳工具,一般的壳都可轻易脱去。首先,我们要知道软件使用的是哪种加壳软件进行加密的,这就得用到侦测文件类型的工具。常用的侦测文件类型工具有Language2000、FileInfo、GetTyp、TYP等。3.5软件加壳与脱壳下图为Language2000中文版的界面:用侦册文件类型工具查出软件使用的加壳工具后,再用相应的脱壳工具即可实现自动脱壳。常用的脱壳工具有:UnAspack、AspackDie1.4、UnPEPack、ProcDump32等。3.5软件加壳与脱壳(2)手动脱壳手动脱壳是指不借助自动脱壳工具,而是用动态调试工具SOFTICE或TRW2000来脱壳。手动脱壳一般难度较大,使用的工具有调试器(SoftICE、TRW2000等),内存抓取工具(Procdump等),十六进制工具(Hiew、UltraEdit、HexWorkshop等),PE编辑工具(Procdump、Peditor等)。手动脱壳的一般步骤为:第一步,确定壳的种类。第二步,入口点(EntryPoint)的确定。第三步,dump取内存已还原文件。第四步,修正刚dump取的文件。3.6软件安全保护建议本节给出的关于软件保护的一般性建议,是无数人经验的总结。在设计软件保护方式时遵守这些准则,将会提高软件的保护强度。(1)软件最终发行之前一定要将可执行程序进行加壳/压缩,使得解密者无法直接修改程序。(2)增加对软件自身的完整性检查。(3)不要采用一目了然的名字来命名函数和文件(4)尽可能少地给用户提示信息。(5)将注册码、安装时间记录在多个不同的地方。(6)检查注册信息和时间的代码越分散越好。(7)通过读取关键的系统文件的修改时间来得到系统时间的信息。(8)如果有可能的话,可以采用联网检查注册码的方法,且数据在网上传输时要加密。3.6软件安全保护建议(9)除了加壳/压缩之外,还需要自己编程在软件中嵌入反跟踪的代码,以增加安全性。(10)在检查注册信息的时候插入大量无用的运算以误导解密者,并在检查出错误的注册信息之后加入延时。(11)给软件保护加入一定的随机性。(12)如果采用注册码的保护方式,最好是一机一码,即注册码与机器特征相关。(13)如果试用版软件没有某项功能,则不要仅仅使相关的菜单变灰,而是彻底删除相关的代码,使得编译后的程序中根本没有相关的功能代码。(14)如果软件中包含驱动程序,则最好将保护判断加在驱动程序中。(15)如果采用keyfile的保护方式,则keyfile的尺寸不能太小,可将其结构设计得比较复杂,在程序中不同的地方对keyfile的不同部分进行复杂的运算和检查。(16)自己设计的检查注册信息的算法不能过于简单,最好是采用比较成熟的密码学算法。
本文标题:计算机安全技术第3章
链接地址:https://www.777doc.com/doc-1269134 .html