




已阅读5页,还剩51页未读, 继续免费阅读
(计算机应用技术专业论文)基于多重技术的软件加密研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
论文题目: 专业: 硕士生: 指导教师: 基于多重技术的软件加密研究 计算机应用技术 吉胜军 刘金碹 摘要 ( 签名) 点监 ( 签名) 墨l :兰:迭 软件加密是保护软件开发者利益的必要手段,是软件开发过程的重要组成部分。如 何保护软件开发者的利益,一直是软件加密领域的焦点问题。传统的软件加密方法主要 依赖于加密算法的强度,隐蔽性差、可靠性低、算法设计漏洞颇多。本文以实现对计算 机软件进行加密保护为目标,结合信息隐藏技术、密码学技术、反跟踪技术等思想来解 决软件加密中的一些关键问题。研究涉及到了软件安全、信息隐藏、密码学、算法设计、 w i n d o w s 程序设计等多个领域的知识。 本文首先研究了现有的各种软件加密技术,且对软件破解技术也进行了研究。在此 基础上,分析了现有软件加密算法出现漏洞的原因及破解者是如何利用已知信息来进行 软件破解。针对出现的各种问题,提出了一种基于b m p 图像信息隐藏、非对称密码体 制、反跟踪等技术的软件加密方案。在该方案中,软件首先读取一个能确定计算机身份 的字符串,其次将该字符串与用户信息( 如u s e r n a m e 、e m a i l 等) 使用复杂的密 码学算法进行必要的加密变换。再次将变换后所得到的加密字符串采用自己设计的加密 算法分散写入b m p 图像文件中,实现关键信息的隐藏。且对b m p 授权图像进行必要的 数字签名、完整性检验等。系统还对软件破解者常用的破解方法如静态分析、动态分析、 反调试、反字符串等技术进行了分析与对抗,实现了其反跟踪技术,使得软件的加密能 力更强。与传统的方法相比,该方法具有加密强度高、成本低、安全可靠等特点。 关键词:软件加密:信息隐藏;密码学;反跟踪 研究类型:应用研究 s u b j e c t :r e s e a r c ho ft h es o f te n c r y p t i o no fb a s e do nm u l t i - t e c h n o l o g y s p e c i a l t y :c o m p u t e ra p p l i c a t i o nt e c h n o l o g y n a m e :j is h e n g j u n i n s t r u c t o r :l i uj i n x u a n a b s t r a c t ( s i g n a t u r e ) s o f t w a r ee n c r y p t i o ni sn e c e s s a r yf o rt h es o f t w a r ed e v e l o p er i tp r o t e c t st h ei n t e r e s t so f t h es o f t w a r ed e v e l o p e r ,i ti st h ei m p o r t a n tp a r t h o wt op r o t e c tt h ei n t e r e s t so f t h es o f t w a r e d e v e l o p e r ,i ti saf o c u so fs o f te n c r y p t i o na r e a t r a d i t i o n a lr e g i s t r a t i o nm e t h o d sm a i n l y d e p e n d e do n t h es t r e n g t ha n ds e c r e c yo f v a l i d a t i o na l g o r i t h m ,a n dt h u sh a dal o wr e l i a b i l i t y i n t h i sp a p e r ,t h ec r u c i a lp r o b l e m sa b o u ts o f t w a r ep r o t e c t i o n ,e s p e c i a l l yc o p y r i g h ts a f e g u a r d sa r e s o l v e db yu s i n gt e c h n o l o g yo f i n f o r m a t i o nh i d i n g ,c r y p t o l o g y , a n f i t r a c k ,i n t e g r a l i t yc h e c k i n g e t ct e c h n o l o g y t h er e s e a r c hf i e l d so f c o n c e mi n c l u d es o f t w a r es e c u f i t y , i n f o r m a t i o n h i d i n g ,c r y p t o g r a p h y , a l g o r i t h md e s i g n ,w i n d o w sp r o g r a md e s i g na n ds oo n i nt h i sp a p e r , a l lk i n d so fs o f t w a r ee n c r y p t i o nt e c h n o l o g ya r er e s e a r c h e d a n dt h a tt h e s o f t w a r ec r a c ka r ea l s or e s e a r c h e d o nt h i sb a s i c ,a n a l y s i n gt h er e a s o n so f t h es o f te n c r y p t i o n a l g o r i t h m ss h o r t c o m i n ga n d t h es o f t w a r ea r eh o wt oa r ec r a c k e db yt h ec r a c k e rw i t ht h e k n o w ni n f o r m a t i o n o nt h i sb a s i c ,an o v e la p p r o a c ho f b m pa u t h o r i z a t i o n ,i n f o r m a t i o n h i d i n g ,o n e k e yo rs y m m e t r i cc r y p t o s y s t e m ,a n t i - t r a c ki sp r o p o s e d ,i nt h i ss c h e m e ,a f t e r t h e s o f ti n s t a l l i n gc o m p l e t e ,f i r s t l y , t h es o f tc a l c u l a t et h ec h a r a c t e rs t r i n gw h i l ea t t e s tt h e c o m p u t e ri d e n t i t y s e c o n d l y , c o n n e c t i n gt h ec h a r a c t e rs t r i n ga n du s e r n a r n eo r e m a i l ,t r a n s f o r m i n gt h e m 丽t l lt h ec o m p l i c a t e dc r y p t o l o g ya l g o r i t h m f u r t h e rm o r e ,w r i t i n g t h e mi n t ot h eb m pi m a g ew i t hs e p a r a t e ,d i g i t a ls i g n a t u r e ,i n t e g r a l i t yc h e c k i n ge t c t h es y s t e m a n a l y s et h et e c h n o l o g yo f c r a c k i n g ,c a r r yo u t t h ea n t i - t r a c kt e c h n o l o g y f i n a l l y , r e s e a r c h i n g t h er i n dt e c h n o l o g y c o m p a r e dw i t ht r a d i t i o n a lt e c h n i q u e s , t h i ss y s t e mi se n c r y p ti n t e n s i t y h i g h e r , c o s t1 0 w e ra n ds a f e r k e y w o r d s :s o f t w a r ee n c r y p t i o ni n f o r m a t i o nh i d i n g c r y p t o l o g y a n t i - t r a c k t h e s i s :a p p l i c a t i o nr e s e a r c h 压要错技大学 学位论文独创性说明 本人郑重声明:所呈交的学位论文是我个人在导师指导下进行的研究工作及 其取得研究成果。尽我所知,除了文中加以标注和致谢的地方外,论文中不包含 其他人或集体已经公开发表或撰写过的研究成果,也不包含为获得西安科技大学 或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研究所 做的任何贡献均已在论文中做了明确的说明并表示了谢意。 学位论文作者签名毽) 眺昂 日期。1 0 、 。、) i 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间 论文工作的知识产权单位属于西安科技大学。学校有权保留并向国家有关部门或 机构送交论文的复印件和电子版。本人允许论文被查阅和借阅。学校可以将本学 位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存和汇编本学位论文。同时本人保证,毕业后结合学位论文研究课 题再撰写的文章一律注明作者单位为西安科技大学。 保密论文待解密后适用本声明。 学位论文作者签名:专翼甥指导教师签名:玉1 童,也复 堋年7 月弓日 1 绪论 1 绪论 1 1 课题背景及意义 1 1 1 背景 自二十世纪计算机问世至今,世界计算机的应用已经普及到人类生活中的各个领 域,几乎各行各业的各种活动都可以利用计算机,并从中获得了巨大收益。一套完整的 计算机系统是由硬件和软件两部分构成的,两者相辅相成,缺一不可。随着计算机技术 的发展,软件越来越体现出它的重要性。可以说,软件是整个计算机的灵魂,是不可缺 少的工具。 计算机软件是集知识、经验、方法和智慧等多种因素创造而成的。它是人类商品社 会中的一种特殊商品,有自身的商品价值,而且软件作为知识资产的价值正在不断提高。 软件的一个特点就是生产难度大却很容易被破解。在d o s 系统下破解软件,只需要输 入几个简单的命令。w m d o w s 操作系统下的共享软件虽然加密强度相对增强了,但破解 者的破解水平也在不断提高。利用软件设计和加密算法的脆弱性,对软件进行破解。相 关软件的注册机、注册码、破解文件等在网络上到处可以找到。这种行为给用户带来了 极大的方便,但给软件开发者造成了不可弥补的损失。不法者却利用软件的这一特点牟 利。世界范围内软件盗版成风,严重打击了国内外软件开者的利益“1 。 1 1 2 意义 网络的发展无疑极大地推动了共享软件的发展,但共享软件的蓬勃发展也无疑造就 了另外一个行业的发展,就是加密和破解。软件加密和破解是计算机软件安全研究最为 薄弱的环节。一方面软件开发者为保护自己的合法权益,对软件进行加密。另一方面软 件破解者出于种种目的对软件进行破解。在这方面国家目前主要实施法律策略和技术策 略。世界各国都制定了软件保护法,1 9 8 0 年美国首先明文规定用著作权保护软件,我国 也于1 9 9 1 年6 月颁布了计算机软件保护条例,开始以立法的手段对软件实施保护。 条例规定除了制作替代副本之外,对程序的任何复制以及未经作者许可的任何使用均是 违法的。规定作为知识产权的软件是一种专有权利,未经作者许可不得使用该权利,只 有软件所有者有复制、发行、修改、翻译、注释等方式使用其软件的权利“埘 由于软件加密保护这一问题所涉及的范围较广,所以仅靠立法的收效是有限的。因 此,软件开发者为了保护自身权益,就必须积极研究、发展和寻求新的软件加密技术, 软件还必须具有适当的技术,使其自身具有反破解、反动态跟踪、完整性检验等加密保 西安科技大学硕士学位论文 护技术。 文章提出的关于软件加密技术的思路,对于提高软件的破解难度、打击不法破解者 的力度、维护软件开发者的权益,对国产软件提高自身软件质量、振兴民族软件产业、 进军国际软件市场等都具有重要的战略意义1 1 2 国内外的研究动态 1 2 1 软件加密研究现状 目前在软件加密这个领域进行专业研究的人员比较少,基本上是开发者按照自己的 思路来进行加密算法的设计和实现。在d o s 时期,对软件进行加密都是进行磁盘的某种 检查。当w m d o w s 平台出现的时候,在d o s 时期的很多破解技术在w m d o w s 平台上根本 不适用。很多人因此不适应这个平台,所以这个时期国内外的软件加密水平发展相当缓 慢。随着软件开发者对w m d o w s 这个系统的逐步了解,一些需要较高编程技巧,与系统 核心等底层联系紧密的软件纷纷出现。各种新的软件加密算法或思路层出不穷,比如序 列号加密技术、时间限制加密技术和k e y f i l e 文件加密技术等。这些加密技术在当时很好 的保护了软件。目前软件加密的发展方向主要是在软件的加密算法上进行各种研究,以 此来提高软件的加密质量。还有开发者为了最大限度的保护软件,还给软件进行了数字 签名、反破解等各种技术。另外加密壳技术、多态变形技术等吸引了很多软件加密者的 追捧。这些加壳软件和自己编写壳程序的出现,大大地提高了软件加密的质量。这时软 件加密技术也进入了一个加速发展阶段。现在加密技术主要有两大块,一是算法应用, 另外是加密壳开发。越来越多的软件开发者懂得用密码学技术来保护自己的软件。加密 壳技术的发展受系统底层知识影响,随着越来越多的底层技术被人知道,一些很有加密 技巧的技术已经充分的被软件开发者实用化了“1 。 很多软件加密技术上的难题由于各大公司对自己的加密算法没有公开,也不可能公 开。都是以自我为中心的进行算法设计研究。在这种情况下必然导致了软件加密这门学 科并没有得到快速的发展,一系列通用的加密漏洞并没有得到很好的解决,最终导致了 盗版软件的盛行。由此可见软件加密技术在知识产权保护方面的作用越来越突出,因而 成为国内外研究的热点之一,得到了广泛的关注。在国内外都可以找到有关这些方面文 献资料,但不是很多。所以研究计算机软件加密技术是一个新的课题,随着软件盗版现 象的日益猖獗,人们开始寻找突破传统方法外的新的软件保护技术。跟国内人们保护知 识产权意识有关,软件加密技术在国内起步相对较晚,并没有吸引很多学者和软件开发 者的注意力。随着人们保护知识产权意识的提高和保护自身的合法权益,软件加密技术 会越来越得到人们的重视m m 。 2 1 绪论 1 2 2 软件加密常用技术 自计算机诞生之日起,软件加密技术的发展日新月异,各种新技术、新思路、不断 涌现。软件加密是维护软件开发者的利益的主要手段,是软件开发过程中的一个重要的 环节。随着操作系统的不断升级,软件加密技术也随着不断发展。d o s 时期的软件主要 是正式版和功能不全的d e m o 版以及一些磁盘防拷贝技术,很少有共享软件。所以d o s 时期的软件加密使用的最多的要算软盘指纹防拷贝技术了。d o s 时期所谓的破解,通常 是去掉软件中某些限制或是跳过原版的磁盘检查。由于1 6 位操作系统很容易接触到系 统底层的原因,导致个别软件保护方式异常的强悍,应用程序几乎可以访问系统中的任 何资源,如直接访问任何物理内存、直接读写任何磁盘扇区、直接读写任何i o 端口等, 这些特点给软件加密者提供了极大的自由度。又因为在1 6 位平台上很难区分系统领空 和程序领空而导致天然的破解跟踪难度“1 w m d o w s 出现后,共享软件渐渐盛行,采用 序列号保护的共享软件越来越多,紧接着出现了c d 检测、功能时间限制、k e y f m 等 各种保护方式。 目前大约8 0 的共享软件都采用序列号保护。软件验证序列号的过程,其实就是验 证用户名( u s e r n a m e ) 和序列号( s n ) 之间的数学映射关系,都是将用户输入的信 息经过复杂的运算,得出的结果和正确的注册码相比较,如果相同则注册成功。有些共 享软件具有时间限制功能,每次运行程序超过一定时间,程序就会自动关闭。有的软件 的注册过程会检查某个文件的有效性。软件在每次启动时从注册文档中读取数据、分析 判断。有的利用c p u 、网卡、磁盘空间等能唯一确定一台计算机身份的信息参与注册码 的生成。还有硬件狗( n o n g l e s ) 加密,就是插在计算机接口上的一个数字电路,里面存 着若干数据,软件通过计算机接口对这部分电路进行操作( 读取、修改等) ,只有正确 的狗才能使软件正常运行,从而达到保护软件、防止盗版的目的。除以上加密技术外, 壳技术目前正在受到广大软件加密者的青睐,其加密强度愈来愈强“m ”,。 1 3 本文研究内容及章节安排 本课题的研究工作是在破解软件的基础上进行的。 主要在以下几个方面进行了深入研究: ( 1 ) 软件破解技术:研究了常用的软件破解技术,在此基础上确立本文设计加密算 法时应注意的技术问题。并且针对多个加密漏洞有针对性的进行预防。 ( 2 ) 信息隐藏:将信息隐藏应用于软件加密中来是对软件加密思路的一种改进。这 部分对信息隐藏( 一般模型、分类、与密码技术的关系) 等理论进行研究分析。 ( 3 ) 加密算法:在己有加密算法的基础上,根据实际应用进行了必要的修改,使之 成为变形的加密算法。 3 西安科技大学硕士学位论文 “) 反跟踪技术:这部分对各种反跟踪技术迸行了深入的研究,针对常用软件破解 方法进行了反跟踪技术实现。 全文共由六章组成,论文的主要内容和组织如下: 第一章绪论本章首先研究了软件加密技术课题的研究背景及意义。然后介绍了国 内外的研究动态和发展趋势,常用的软件加密技术等。 第二章软件加密与破解技术研究本章首先研究了软件加密与破解技术的相关概 念。其次研究了常用的软件加密技术及优缺点,最后以实例分析现有加密技术存在漏洞。 为后面章节软件加密算法的设计提供了思路。 第三章密码学及软件加密技术本章首先介绍了密码学的基本概念,然后对常用的 密码学算法进行研究,并分析了它们的原理、安全性等以及它们在软件加密中的应用。 第四章图像信息隐藏技术研究及授权图像文件生成本章首先介绍了信息隐藏的 概念及分类进行了研究,研究了信息隐藏与数字水印的区别。最后就本文所使用的信息 隐藏的方法及原理进行研究,并对其中涉及到的关键性算法做了详细讲解。 第五章软件加密系统设计与实现本章首先介绍了系统的整体结构和各个模块的 关系。其次提出了该加密系统应体现的主要技术。设计并实现了系统的关键技术。最后 深入分析研究了软件反跟踪技术,重点研究了软件保护后期所做的加密技术。 第六章结论本章对全文的工作进行了总结,并对今后的工作提出展望。 4 2 软件加密与破解技术研究 2 软件加密与破解技术研究 2 1 软件加密与破解的基本概念 研究软件加密和破解,必须掌握w i n d o w s 系统的基本知识。只有掌握这些知识,在加 密和破解过程中才能有的放矢的处理各种问题嗍啪 ( 1 ) 领空 程序的领空,就是程序自己的地方,也就是要破解的程序自己的代码所处的位置。 在d o s 时代,基本上所有的程序都是工作在中断程序之上的,即几乎所有的d o s 程序都 会去调用各种中断来完成任务。在w i n d o w s 时代,程序没有权利直接调用中断,w i n d o w s 系统提供了一个系统功能调用平台a p i ,和d o s 程序以中断程序为基础一样,w i n d o w s 程序以a p i 为基础和系统打交道,从而实现各种功能。因此w i n d o w s 系统下破解软件时 断点设置是以a p i 为基础的,即当程序调用某个a p i 函数时中断其正常运行,然后进行分 析破解 如在o l l y d b g q b 设置断点:在命令行键入b pg e t d l g i t c i n r :】【t ( 获取对话框文本) ,当需 要破解的程序要读取输入的数据而调用g e t d l g l t e m t e x t 时,立刻被o l l y d b g 拦截,从而被 破解的程序停留在c m t d l g l t e m t e x t 的程序区。 ( 2 ) 断点 断点就是程序被中断的地方,破解的过程就是等程序去获取用户输入的信息或准备 和正确的注册码相比较的时候将它中断下来,然后通过分析程序,找到正确的注册码。 ( 3 ) a p i a p i :l 邑a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e 的简写,中文叫应用程序编程接口,是一个 系统定义的函数的集合,它提供了访问操作系统功能的方法。a p i 包含了几百个应用程 序调用的函数,这些函数执行所有的与操作系统相关的操作,如内存分配、向屏幕输出 和创建窗口等,用户的程序通过调用a p i 接口同w i n d o w s 打交道,无论什么样的应用程 序,其底层最终都是通过调用各种a p i 函数来实现各种功能的。通常a ll 有两种基本形式: w i n l 6 和w i n 3 2 嘲。现在的破解中常用到的是w i n 3 2 的单字节a p i 函数。 ( 4 ) 程序中注册码的存在方式 破解过程中破解者会查找错误的注册码和正确的注册码相比较的地方,然后通过对 程序的跟踪、分析找到正确的注册码。正确的注册码通常在程序中以两种形态存在:明 码和非明码。对于明码存在的注册码,可以直接在程序所处的内存中找到,比较容易被 破解。但有些软件的程序中并不会直接将用户输入的注册码和正确的注册码进行比较, 有可能将注册码换算成整数或将注册码拆开,然后将每一位注册码分开在不同的地方逐 5 西安科技大学硕士学位论文 一进行比较,或者是将用户输入的注册码进行某种加密变换,再用某个特殊的函数进行 验证。 ( 5 ) 软件的破解方式 破解软件的方法可分为两大类:完全破解和暴力破解。完全破解主要是针对那些需 要输入注册码或密码的软件。通过对程序的跟踪找到正确的注册码,通过软件本身的注 册功能正常注册该软件。如果有些软件本身并没有提供注册功能,只是提供( d e m o ) 或 是注册不能通过软件本身进行( 如需要获取另外一个专用的注册程序,通过i n t e r n e t 的注 册等) ,或者是软件本身的加密技术比较复杂,软件破解者的能力、精力、时间有限, 不能直接得到正确的注册码,此时就需要去修改软件本身的代码,人为的改变软件的流 程。 2 2 常用软件加密技术及优缺点分析研究 ( 1 ) 序列号保护 软件验证序列号的过程,其实就是验证用户名( u s e r n m e ) 和序列号( s n ) 之 间的数学映射关系。这个映射关系由软件加密系统设计者开发的。显然,这个映射关系 越复杂,注册码就越不容易被破解。根据映射关系得不同,程序检查注册码时常用以下 四种方法叫脚嘲: 以用户名等信息作为自变量,通过函数f 变换之后得到注册码 将这个注册码和用户输入的注册码进行字符串比较或者数值比较,以确定用户是否 为合法用户。公式如下:序列号= f ( 用户名) 。 由于负责验证注册码合法性的代码是在用户的机器上运行的,因此用户可以利用调 试器等工具来分析程序验证注册码的过程。上述方法中计算出来的序列号是明码形式在 内存中出现的,很容易在内存中找到它。这种方法在检查注册码合法性的同时,也在用 户机器上再现了生成注册码的过程,实际上是不安全的。不论所采用的函数f 有多么的 复杂,破解者只需要把f 函数的实现代码从软件中提取出来,就可编制一个通用的计算 注册码计算程序。这种检查注册码的方法是比较脆弱的。破解者也可通过修改比较指令 的方法,跳过注册码的检查。 通过验证注册码验证用户信息的正确性 软件开发者在给注册用户生成注册码的时候使用变换:序列号- f ( 用户名) 这里的f 是个可逆变换。软件在检查注册码的时候是利用f 的逆变换f l 对用户输入的注册码进行 变换的。如果变换的结果和用户名相同,说明是正确的注册码。即用户名= f l ( 序列号) , 可以看到,用来生成注册码的f 函数未直接出现在软件代码中,而且正确注册码的明文 也未出现在内存中,所以这种检查注册码的方法比较安全一些。破解这种注册码检查的 方法除了可以采用修改比较指令的办法外,还可以通过f 1 来找出其逆变换f i l l f 函数,从 6 2 软件加密与破解技术研究 而可以得到正确的注册码,这是由于f 1 的实现代码是包含在软件中的。 通过对等函数检查注册码 如果输入的用户名和序列号满足f 1 ( 用户名) = f 2 ( 序列号) ,则认为是正确的注册码。 采用这种方法同样可以做到在内存中不出现明码。 同时采用用户名和序列号作为自变量,采用二元函数 当对用户名和序列号进行变换时,如果得出的结果和某个特定的值相等,则认为是 正确的。定值= f ( 用户名,序列号) ,这个算法的用户名和序列号之间的关系不再清晰, 但同时可能也失去了用户名和序列号的一一对应的关系,软件开发者自己很有可能无法 写出注册机。也可以把用户名和序列号分为几个部分来构造多元的算法: 定值= f n ( 用户名1 ,用户名2 序列号1 ,序列号2 ) 实际上序列号也可以和用户名根本不存在任何关系。 注册码的复杂性问题归根到底是一个数学问题。当然,即使检查注册码的算法再复 杂,如果可执行程序可以被任意修改,破解者还是可以通过修改比较指令来破解程序“1 。 现有的序列号加密算法,大多是软件开发者自行设计的,大部分相当的简单,而且 有些算法软件开发者虽然下了很大功夫,却达不到所期望的效果。有很多成熟的算法可 用,特别是密码学中的一些强度比较高的算法,比如r s a ,b l o w f i s h ,m d 5 等。这些算 法在因特网上有大量的源码或编译好的库,可以直接加以利用。强烈建议使用这些密码 学算法。即使这些算法的强度很高,但是使用方法也要得当,否则效果就和普通的四则 运算效果没有什么两样,很容易被解密者算出注册码或写出注册机来。所以,只有好的 加密算法是不够的,还得结合其它软件加密方法。 ( 2 ) 时间限制 共享软件具有时间限制功能,就是程序每次运行时间超过一定时间就会自动关闭, 必须重新启动才能再次运行。程序只能运行有限的次数和天数等,这是由软件内部的定 时器控制运行时间的。软件在安装时取得系统当前日期,将其保存在系统中的某个地方, 可能在注册表,也有可能在某个文件中。一般取得时间的a p i 函数有g e t s y s t e m t i m e 、 g e t l o c a l t i m e ,g e t f i l e t i m e 。 ( 3 ) k e y f i l e 保护 这是一种利用文本文件来注册软件的方式。注册文档是纯文字文件或二进制的文件, 其内容是一些加密或未加密的数据,内容包括用户的注册信息,文件格式由开发者自行 定义。 这种保护方式又可分两种情况: 在试用版本软件中没有这个注册文档,只有当用户向开发者付费注册后,才会收到 软件的注册文档。用户只要将该文档放入指定的目录中,就可以将软件注册。软件在每 次启动的时从注册文档中读取数据,然后利用某种算法判断注册信息是否正确,进而决 7 西安科技大学硕士学位论文 定以何种模式运行。 在正式版中,当使用者在注册软件时,软件会根据输入的u s e r n a m e 、s n 、e m a i l 等其中的几种组合,自动生成k e y f i l e 文件。然后要求重新启动软件,当重新启动的时候 软件调用r e a d f i l e 、w r i t e f i l e 、c r e a t e f i l e a 、s e t f i l e p o i n t e r 、g e t s y s t e m d i r e c t o r y 等文件访 问相关的函数进行注册验证。 ( 4 ) 软件狗 狗是一种智能型的加密工具,它是安装在并行口或串行口上的硬件电路嘲当使用 狗保护的软件运行时,程序向插在计算机上的狗发出查询命令,狗能迅速计算查询并给 出响应,正确的响应软件继续运行。如果没有狗,程序不能运行。一般的大型商业软件 都会采用狗加密。这种保护成本比较高,不适合小型的共享软件。 ( 5 ) c d c h e c k 采用光盘为载体的软件在使用时需要光盘一直放在光驱中。这是为了防止用户将软 件拷贝在多台机器上同时使用。这类似d o s 时代的钥匙盘保护。虽然一定程度上防止了 非法拷贝,可是一旦光盘被划伤,用户就无法正常使用软件。常见的w i n d o w s 下具体实 现是:先用g e t l o g k a l d r i v e s t r i n g s 或g e t l o g i c a l d i r v e r s 得到系统中安装的所有驱动器的列 表,然后再用g e t d r i v e r t y p e 检查每个驱动器。如果是光盘,则用c r e a t e f i l c a 等函数检查 特定文件存在否,并且进一步的检查文件的大小、属性和内容等。 这种光盘检查是比较容易被破解的,解密者只要利用上述函数设置断点,找到程序 检查光驱的地方,修改判断指令就可以跳过光盘检查。 2 3 实例分析软件加密不足之处 为了设计出更加安全的软件加密方案,就必须深入了解软件破解技术,只有对软件 破解有了深入的研究,才能设计出有针对性地、更加安全的加密方案。这里以国外的一 个软件c r a c k l t l e 3 为例进行分析。 软件破解的一般流程是: ( 1 ) 先运行软件,有帮助文档先查看帮助,熟悉软件的使用方法。 ( 2 ) 再查看软件的注册方式。如果是序列号方式可以先输入假注册码观察情况,给破 解留下一些有用的线索。如果没有输入注册码的地方,考虑是不是读取注册表或k e y 文件( 一般称k e y f i l e ,就是程序读取一个文件中的内容来判断是否注册) ,这些可以用 其它工具来辅助分析。 ( 3 ) 获得程序的一些基本信息后,用查壳的工具来查程序是否加了壳,若没壳,再看 程序是用什么编译器编译的,如v c 、d e l p h i 、v b 等。如果有壳,要脱了壳后再 用o l l y d b g 调试,特殊情况也可带壳调试。 运行软件界面如图2 1 所示: 8 2 软件加密与破解技术研究 晒谣磊谣磊r c o d e ra c i db y t e s c f f 】 ,- 。- - - - - - - 一 r e l d a t e0 5 1 0 8 1 2 0 0 0 1 7 s 4 g f x 正r ,9 5 4 1 h 话,量t h eo f f i c i a ic f fc r a c ;心4 e r e g s t e rn o w l i fy o uc a nm a n a g et oc r a c ki t , ;m a i ln a m e s e n a it o : q u i tt h ec r a c k m e 互直壁垃吐曼益日出墨熊 图2 1c r a c k m e 界面 这个c r a c k m e 已经把用户名和注册码都输好了。点击“r e g i s t e rn o w ! ”按钮,会 弹出一个对话框如图2 2 所示: 图2 2 错误对话框 从这个错误对话框中显示的“w m n g s 曲l ,竹a g a m ! ”作为切入点破解软件。启 动o l l y d b g ,选择菜单文件一 打开,载入c r a c k m e 3 e 稀文件,会停在如图2 3 所示: 匿搿糍耀罐蕊篓譬糍瓣黼程誊誊嚣骝f 笼鍪:篷猫燮醴嚣翼露蓬誊嚣鬻瓣帮麓鬈警鬣二越黼龇蕊妊龇蕊捌龇龇出出江妇龇鑫战姓l 曩 囹文件。查看,。调试髭叠件誊选硬。窗口o 帮助。 斟纠型到引到剜到型型型圈型囵丑型型驾习翌r 篓i 翌互1 地址1 暇数量f 轰 蟹l 注释 圜幽s 羁。p m 珊。* v r 。一。+ ? 鳙 8 矾贮v 功p e 豺 。一7 3“hdm j 一 2 7 8l l “ye c r 棚3 0 0 4 1 i 订bn f c 叭c r a e m l 3 4 0 哪 2 0 0 l4 岱4 仰1 0 v 砒研啪m 砖 4 4 2 c t 4 0 b 0 0 y 眦w 0 m w 【暑旺】 。( ; :;7删r f ”吡c r d d 3 们c m ,2 8 c l4 m , 2 c 伽0 y 计0 肋p t r 嚣【4 删】 蕊 :l6 3 0 0 0 y 毗埘0 肋r t r 嚣腿u 】 2 量 i 剁枷 ym “i d l 棚s 口匝d 哪,譬,r h d 订o - 图2 3 加载后软件 在反汇编窗口中右击,弹出一个菜单,在查找一 超级字符串参考一 查找a s c i i ,如图 2 4 所示。 继续操作弹出另一个对话框如图2 5 所示 在找到的字串上右击,再在出来的菜单上点击“跟随”,我们来到如图2 6 所示。 在图2 6 中地址0 0 4 4 0 f 2 c 处按f 2 键设置断点,运行程序。在上面那个编辑框中 输入。吉胜军”,下面那个编辑框还保留为原来的。7 5 4 g f x i e 砧9 “”,点击 “r e g i s t e r n o w ! ”按钮,o i l y d b g 跳了出来,暂停在下断点处。显示如图2 7 所示。 9 西安科技大学硕士擘位论文 u u | 鉴赏i = :菱i 二二 箭r 。一樾 j 去除花指令 趋缓挎贝 娶垄k ,烹 ,一毒一j = i ul = 0 j0 l u 镟标簦 用a 细脱亮调试进程 o i v r o w 闰袭 用p e 如e r 脱壳调试进程 | 。” 矮 犍 r 髓撼 i i 爸 图2 4 查找超级字符串参考查找a s c i i 黜j 器羟窑怒蓦器器 器器器搿器:器:器慧器嚣:;芫 t n t l i 廿i d n t r d n t 廿= e r i 1 图2 5 在重要信息中跟随 查看信息窗口发现输入的内容,显示如图2 8 所示。 进入0 0 4 4 0 f 3 4c a l lc r a c k m e 3 0 0 4 0 3 8 2 c 关键算法如图2 9 所示。 根据上面的分析,用户名必须是“r e g i s t e r e du s e r ”按f 9 键运行程序,出现错误对话 框,点确定,重新在第一个编辑框中输入“r e g i s t e r e d u s e r ”,再次点击那个 “r e g i s t e r n o w ! ”按钮,被o l l y d b g 拦下。因为地址0 0 4 4 0 f 3 4 处的c a l l 已经分析 清楚,就不用再按f 7 键跟进去,直接按邢键。来到第二个关键代码处,如图2 6 所 示。继续分析,地址0 0 4 4 0 f 5 1 处的c a l l c r a c k m e 3 0 0 4 0 3 8 2 c 和上面分析的地 址0 0 4 4 0 f 3 4 处的c a l lc r a c k m e 3 0 0 4 0 3 8 2 c 汇编指令都一样,这说明检测用户名和注 册码是用的同一个子程序。而这个子程序c a l l 在上面已经分析过了至此可以很容 易得出结论,这个c a l l 也就是把我们输入的注册码与0 0 4 4 0 f 4 c 地址处指令后的 “g f x - 7 5 4 m r - 9 5 4 ”作比较,相等则注册成功。 通过对上面的实例进行分析研究可知,软件中存在多个可以被破解者利用的技术弱 点,如错误提示信息、字符串参考、明码出现在内存中等等。这些都可以作为破解者破 解软件的切入点。 1 0 嬲钙觚铂弱辑绍m毫髓链m孔船雅铝约张弘甜铭嚣m旺融豫她勰m辑谨骝匆瓣m繇幅惴 2 软件加密与破解技术研究 图2 6 程序经调试后的代码 图2 7 程序断下来时的情况 图2 8 输入的内容 西安科技大学硕士学位论文 图2 9c a l lc r a c k m e 3 0 0 4 0 3 8 2 c 关键算法 2 4 本章小结 本章首先研究了软件加密技术的相关概念。其次研究了常用的软件加密技术,分析 现有加密技术存在漏洞。最后以一个实例进行完整分析,得出软件加密中的技术弱点, 为后面章节软件加密算法的设计提供了思路。 3 密码擘及软件加密技术 3 密码学及软件加密技术 现有的加密算法大多是软件开发者自行设计的,大部分相当简单,而且有些算法软 件开发者虽然下了很大的努力,但却达不到所期望的加密效果。因此,很有必要对密码 学及其在软件加密中的应用作深入的研究,以期设计出更好、更安全的加密算法。 3 1 密码学概论 密码学( c r y p t o g r a p h y ) 是研究秘密通讯的科学,即是研究对传输信息采取何种秘密的 交换以防止第三者对信息的窃取,目的是为了保护信息的保密性、完整性、和安全性、 加密算法是密码学的核心 人们将以其最初的形式存在的信息称为明文( p l a i n t e x t ) 。可将明文通过某种方式变换 成难以理解的另一种信息,称为密文( c i p h e r t e x t ) 。这一变换处理过程为加密( e n c r y p t i o n ) , 记为c _ e ( p ) 。相反的,把密文在转换为明文的过程称为解密( d e c r y p t i o n ) ,记为p = d o ) 。 对明文进行加密时采用的一组规则称为加密算法,对密文解密时采用的一组规则称为解 密算法跚。 加密算法和解密算法通常都是在一组密钥( k e y ) 控制下进行的,分别称为加密密钥和 解密密钥。若采用的加密密钥和解密密钥相同,即从一个易于得出另一个,称为单钥或 对称密码体制( o n e - k e yo rs y m m e t r i cc r y p t o s y s t e m ) 。常用的对称密码算法有:数据加密 标准d e s ,国际数据加密算法i d e a ,r c 5 ,b l o w t i s h 等。对称加密算法也称为私钥算法。 在大多数对称算法中,加解密的密钥是相同的,它要求发送者和接收者在安全通信之前 约定一个密钥。对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都能对信息进 行加解密。若加密密钥和解密密钥不相同,从一个难以推出另一个,则称为双钥或公开 密钥密码体制( t w o - k e yo rp u b l i ck e yc r y p t o s y s t e m ) ”埘。常用的公开密钥算法有:r s a , e l g a m a l ,数字签名算法d s a ,椭圆曲线加密e c c 等。公开密钥算法使用两个密钥,一个 称为公钥,另一个称为私钥,这两个密钥彼此相互关联,称它们为密钥对,使用密钥对 中的一个密钥进行加密则只能用另外一个进行解密。 3 2 单向散列算法 单向散列函数算法也称h a s h ( 哈希) 算法,是一种将任意长度的消息压缩到某一固定 长度( 消息摘要) 的函数( 该过程不可逆) h a s h 函数可以用于数字签名、消息的完整性 检验,消息起源的认证检验等。常见的散列算法有m d 5 、s h a 等。 在软件的加密保护中,h a s h 函数是经常用到的加密算法。但由于h a s h 函数为不可 逆算法,所以软件只能使用h a s h 函数作为一个加密的中间步骤“1 1 3 西安科技大学硕士学位论文 3 2 1 消息摘要 消息摘要是消息的指印( f r i n g e r p r i n t ) 或汇总,类似于纵向冗余校验( l l w , l o n g i t u d i n a lr e d u n d a n c yc h e c k ) 和循环冗余校验( c r c ,c y c l i cr e d u n d a n c yc h e c k ) 。用于 验证数据完整性( 即保证消息在发送之后和接收之前没有被篡改) 。如图3 1 显示了l r c 的计算,纵向冗余校验将位块组成列表( 行) 。例如,如果要发送3 2 位,则把其排列成 四行,然后计算每个列( 共8 列) 有多少个1 位( 如果1 位为奇数,则称为奇性,在阴影 l r c 行中用一个1 位表示;相反,如果1 位为偶数,则称为偶性,在阴影l r c 行中用 一个0 表示) 。例如,第一列有两个1 ,表示偶性,因此第一列的阴影u 汜行为o ;同 样,最后一列有三个1 ,表示奇性,因此阴影l r c 行为l 。这样,每列计算奇偶位,生 成一个新行,共八个奇偶位。这样,l r c 实际上是消息的指印。 原始数据捧列成行 匝圃l r c 图3 1 纵向冗余校验 然后将数据和l r c 发送给接收方。接收方把数据和l r c 分开( 如阴影所示) ,对数 据块执行l r c 运算,然后将得到的l r c 值与从发送方收到的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025银行合规招聘面试题及答案
- 高效英语复习策略与试题解析
- 变电站设备安装工程技术方案
- 快递物流配送路径优化案例报告
- 企业内控管理体系构建指南
- 三年级数学期中测试卷解析
- 宾馆客房快速整洁流程指南
- 医院安全培训演讲稿课件
- 多媒体技术动画应用解析
- 基因修复技术演讲
- 2025年高压电工考试题库:基础理论知识要点
- 2025中秋国庆双节安全培训
- 刑事谅解协议书范本6篇
- 护理员安全培训内容课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- Starter Unit 1 Hello!单元测试(解析版)
- 金税四期培训
- 托管班安全培训课件
- 汽车制造生产知识培训课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年县处级领导干部政治理论考试试题库(附答案)
评论
0/150
提交评论