鉴于大家对DELPHI类作品十分关注,我们编辑小组在此为大家搜集整理了“DELPHI加密系统的设计与实现[全套作品]”一文,供大家参考学习!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
调试环境的配置说明 运行:注册机的使用 将 使用者姓名及注册码添加到要注册的程序中注册即可。
1 当前流行的一些软件保护技术 1.1 序列号保护 数学算法一项都是密码加密的核心,但在一般的软件加密中,它似乎并不太为人们关心,因为大多数时候软件加密本身实现的都是一种编程的技巧。但近几年来随着序列号加密程序的普及,数学算法在软件加密中的比重似乎是越来越大了。 看看在网络上大行其道的序列号加密的工作原理。当用户从网络上下载某个shareware——共享软件后,一般都有使用时间上的限制,当过了共享软件的试用期后,你必须到这个软件的公司去注册后方能继续使用。注册过程一般是用户把自己的私人信息(一般主要指名字)连同信用卡号码告诉给软件公司,软件公司会根据用户的信息计算出一个序列码,在用户得到这个序列码后,按照注册需要的步骤在软件中输入注册信息和注册码,其注册信息的合法性由软件验证通过后,软件就会取消掉本身的各种限制,这种加密实现起来比较简单,不需要额外的成本,用户购买也非常方便,在互联网上的软件80%都是以这种方式来保护的。 软件验证序列号的合法性过程,其实就是验证用户名和序列号之间的换算关系是否正确的过程。其验证最基本的有两种,一种是按用户输入的姓名来生成注册码,再同用户输入的注册码比较,公式表示如下: 序列号 = F(用户名) 但这种方法等于在用户软件中再现了软件公司生成注册码的过程,实际上是非常不安全的,不论其换算过程多么复杂,解密者只需把你的换算过程从程序中提取出来就可以编制一个通用的注册程序。 另外一种是通过注册码来验证用户名的正确性,公式表示如下: 用户名称 = F逆(序列号) (如ACDSEE) 这其实是软件公司注册码计算过程的反算法,如果正向算法与反向算法不是对称算法的话,对于解密者来说,的确有些困难,但这种算法相当不好设计。 于是有人考虑到以下的算法: F1(用户名称) = F2(序列号) F1、F2是两种完全不同的的算法,但用户名通过F1算法计算出的特征字等于序列号通过F2算法计算出的特征字,这种算法在设计上比较简单,保密性相对以上两种算法也要好的多。如果能够把F1、F2算法设计成不可逆算法的话,保密性相当的好;可一旦解密者找到其中之一的反算法的话,这种算法就不安全了。一元算法的设计看来再如何努力也很难有太大的突破,那么二元呢? 特定值 = F(用户名,序列号) 这个算法看上去相当不错,用户名称与序列号之间的关系不再那么清晰了,但同时也失去了用户名于序列号的一一对应关系,软件开发者必须自己维护用户名称与序列号之间的唯一性,但这似乎不是难以办到的事,建个数据库就可以了。当然也可以把用户名称和序列号分为几个部分来构造多元的算法。 特定值 = F(用户名1,用户名2,...序列号1,序列号2...) 现有的序列号加密算法大多是软件开发者自行设计的,大部分相当简单。而且有些算法作者虽然下了很大的功夫,效果却往往得不到它所希望的结果。 1.2 时间限制 有些程序的试用版每次运行都有时间限制,例如运行10分钟或20分钟就停止工作,必须重新运行该程序才能正常工作。这些程序里面自然有个定时器来统计程序运行的时间。 这种方法使用的较少。 1.3 Key File 保护 Key File(注册文件)是一种利用文件来注册软件的保护方式。Key File一般是一个小文件,可以是纯文本文件,也可以是包含不可显示字符的二进制文件,其内容是一些加密过或未加密的数据,其中可能有用户名、注册码等信息。文件格式则由软件作者自己定义。试用版软件没有注册文件,当用户向作者付费注册之后,会收到作者寄来的注册文件,其中可能包含用户的个人信息。用户只要将该文件放入指定的目录,就可以让软件成为正式版。该文件一般是放在软件的安装目录中或系统目录下。软件每次启动时,从该文件中读取数据,然后利用某种算法进行处理,根据处理的结果判断是否为正确的注册文件,如果正确则以注册版模式来运行。 这种保护方法使用也不多,但是,我个人认为,比时间限制要好。 1.4 CD-check 即光盘保护技术。程序在启动时判断光驱中的光盘上是否存在特定的文件,如果不存在则认为用户没有正版光盘,拒绝运行。在程序运行的过程当中一般不再检查光盘的存在与否。Windows下的具体实现一般是这样的:先用GetLogicalDriveStrings( )或GetLogicalDrives( )得到系统中安装的所有驱动器的列表,然后再用GetDriveType( )检查每一个驱动器,如果是光驱则用CreateFileA( )或FindFirstFileA( )等函数检查特定的文件存在与否,并可能进一步地检查文件的属性、大小、内容等。 1.5 反跟踪技术(Anti-Debug) 好的软件保护都要和反跟踪技术结合在一起。如果没有反跟踪技术,软件等于直接裸露在 Cracker 面前。这里说的反跟踪,指的是反动态跟踪。即防止 Cracker 用 SoftICE 之类的调试器动态跟踪,分析软件。当前的这类软件还有如 TRW 、ICEDUMP 等等。反跟踪技术一般是具有针对性的,即针对某种调试器的反跟踪,而不能防止所有的调试器跟踪,如果有新的破解工具出现,就需要相应的反跟踪技术。 这种技术一般是检测这些特定的调试器是否驻留内存,如果驻留内存,就认为被跟踪,从而拒绝执行,或进行一些惩罚性措施。还有一些检测方法,如假设这些调试器在内存中,软件和这些调试器通信,如果结果合乎这些调试器的输出 。就认为被跟踪 。或者在内存中搜寻这些调试器的特征串,如果找到,就认为被跟踪。有的甚至用中断钩子、SEH(Structural Exception Handle,即结构化异常处理)检测调试器。 1.6 反-反汇编技术(Anti- Disassmbly) 即 Anti-Disassmbly 。可针对专门的反汇编软件设计的“陷阱”,让反汇编器陷入死循环,但这种方法没有通用性。 一般是使用花指令 。这种方法有通用性,即所有的反汇编器都可以用这种方法来抵挡 。这种方法主要是利用不同的机器指令包含的字节数并不相同,有的是单字节指令,有的是多字节指令。对于多字节指令来说,反汇编软件需要确定指令的第一个字节的起始位置,也就是操作码的位置,这样才能正确地反汇编这条指令,否则它就可能反汇编成另外一条指令了。并且,多字节,指令长度不定,使得反汇编器在错误译码一条指令后,接下来的许多条指令都会被错误译码。所以,这种方法是很有效的 。 实施方法:在程序中加入一些无用的字节来干扰反汇编软件的判断,从而使得它错误地确定指令的起始位置,那么也就达到了干扰反汇编器工作的目的。一般形式如下: .... .... jmp L1 dd 012344578h ;这里是一些随机数,用来干扰反汇编器 ;对指令的译码 L1: .... ... 1.7 软件狗 软件狗是一种智能型加密工具。它是一个安装在并口、串口等接口上的硬件电路,同时有一套使用于各种语言的接口软件和工具软件。当被狗保护的软件运行时,程序向插在计算机上的软件狗发出查询命令,软件狗迅速计算查询并给出响应,正确的响应保证软件继续运行。如果没有软件狗,程序将不能运行,复杂的软硬件技术结合在一起防止软件盗版。真正有商业价值得软件一般都用软件狗来保护。 平时常见的狗主要有“洋狗”(国外狗)和“土狗”(国产狗)。这里“洋狗”主要指美国的彩虹和以色列的HASP,“土狗”主要有金天地(现在与美国彩虹合资,叫“彩虹天地”)、深思、尖石。总的说来,“洋狗”在软件接口、加壳、反跟踪等“软”方面没有“土狗”好,但在硬件上绝对无法破解(应当说破解难度非常大);而“土狗”在软的方面做的很好,但在硬件上不如“洋狗”,稍有单片机功力的人,都可以复制。 1.8 Vbox 保护技术 Vbox 是一个软件 。它是用来保护其它软件的 。凡被 Vbox 保护的软件,一旦过了试用期,就不能再使用了,删了重装也没用,除非删除整个操作系统再重装。 1.9 SalesAgent 保护技术 SalesAgent 保护的软件一般具有 x 天试用再购买的接口,是一种时间限制保护方式。才用这种保护方式的软件主要有 Macromedia Flash 4 、DreameWaver 等等。 1.10SecuROM 保护技术 SecuROM 是Sony 开发的一种商业光盘加密技术,它可以阻止用户对加密光盘的复制,被保护的光盘上有 CMS16.dll 、cms32_95.dll 、cms32_nt.dll 这几个文件。很多游戏光盘才用这种保护技术。 1.11软盘加密 通过在软盘上格式化一些非标准磁道,在这些磁道上写入一些数据,如软件的解密密钥等等。这种软盘成为“钥匙盘”。软件运行时用户将软盘插入,软件读取这些磁道中的数据,判断是否合法的“钥匙盘”。 软盘加密还有其它一些技术,如弱位加密等等。 随着近年来软盘的没落,这种方法基本上退出了历史舞台。 1.12将软件与机器硬件信息结合
目 录 中文摘要 第一章 引 言 第二章 开发环境及需求 第三章 加密技术的发展 第四章 密码学简介 第五章 DELPHI介绍 第六章 注册技术实现 第七章、功能设计 第八章 详细设计 结 论 参考文献 致 谢 结 论 以上这个毕业设计已在dephi7.0/win2000环境中运行通过,并在实际运用中得到验证。对合法用户而言,这样的机制,只要其录入注册码一次就可以,不增加其日常使用的负担;而对非法用户而言,除非他得到注册码或重装windows2000或者WINXP,否则超过使用次数后,将无法继续使用。当然在实际应用中还有许多地方可以进一步加强反破解能力,欢迎朋友们提出批评和指导。 本次设计的全过程中,我对四年所学的知识有了一个比较系统的认识和理解。涉及了各方面的知识,大大扩展了我的知识面,同时是我学会了如何使用所学的知识去解决一些实际的问题。尤其对DELPHI程序设计原理及技巧和数据加密原理的理解更加深入,还有对WINDOWS的底层知识和掌握也有一定了解。 计算机技术的高速发展,使我深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我还要加强学习,努力使自己成为一位专业的计算机人员,为我自己所从事的工作服务。 参考文献 Delphi系列: 1、 汤庸.Delphi 4编程范例与元件库参考,海潮出版社,1999 2、 季学岗.王晓辉.张宏林.Delphi编程疑难详解,人民邮电出版社,2000 3、 Tom Swan.Delphi 4实用大全,中国水利水电出版社,1999 4、 Steve Teixeira Xavier Pacheco.Delphi 4开发大全(上),人民邮电出版社,1999 5、 求是科技.Delphi 7数据库开发技术与工程实践,人民邮电出版社,2004 6、 陈豫龙.何旭洪.Delphi 6数据库系统开发实例导航,人民邮电出版社 加密与解密系列: 1、 段钢.加密与解密(第二版),电子工业出版社,2003.06 2、 赖以立.加密与解密-Soffice使用手册,人民邮电出版社,2003.06 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |