专业软件工程毕业论文篇一
1引言
随着信息技术硕士论文范文的广泛应用以及互联网的日益普及,国际互联网已经融入到人类社会的方方面面,从商业、金融的日常事务处理到政府部门的行政管理;从企业的数据处理,到军事部门的指挥控制;从小巧便携的手持终端设备到日常的信息家电设备,无不散发着计算机技术的气息。在享受计算机技术带来便利的同时,软件系统引发的安全问题成为人们日益关注的问题。作为一种知识密集型的产品,软件凝聚了软件开发人员的智慧和心血,在开发过程中需要投入巨大的人力资源,一款优秀的软件的开发所付出的成本往往是其硬件价值的数倍乃至百倍,同时由于作为一种典型的数字产品,软件的复制成本极低且复制过程中不会降低软件本身的质量,而借助信息技术的高速发展,尤其是Internet网络的发展和个人计算机的普及,使得软件的传播更具有便利性,这些条件都使得软件的安全性问题日益突出,严重损害了软件开发部门的经济利益和软件版权,在给软件开发商和消费者造成经济损失的同时,也制约着我国软件行业自身技术的发展。
1.1课题研究的背景及意义
当前软件的安全主要面临着软件盗版与代码篡改、窃取两大类问题。软件盗版主要是指任何未经软件著作权人许可,擅自复制、分发软件拷贝或以其他方式超出许可范围传播、销售和使用软件的行为。软件代码窃取及篡改则是指在未经软件著作权人许可情况下,把软件代码的部分或者全部归为己有,由于软件代码中包含具有重要商业价值的算法或者机密,一旦被窃取或者篡改后果将会非常严重。据美国商业软件联盟发布的《2010年全球PC套装软件盗版研究》报告估算,2010年全球盗版软件的商业价值达创纪录的590亿美元,几乎是2003年同期的两倍,而我国个人电脑安装的软件中78%为盗版,盗版软件的商业价值为77.79亿美元。而根据《世界知识产权报告》估计,我国综合盗版率每增加10个百分点,软件销售额将减少39.7亿元人民币,相应的经济活动总量也将下降67.76亿元人民币之多,会造成近13170个人丧失就业机会。由此看见,盗版软件已经对我国新兴的软件产业构成了极大的危害,严重的阻碍了我国软件市场的发展。软件安全和软件保护也已成为科学研究的重要课题,引起学术界和产业界的极大关注。
作为软件开发者,为了维护自身的商业利益和著作版权,需要不断地采用各种新的、有效的技术来保护自身的软件版权,增加其软件的保护强度。由于越来越多的软件服务于网络,通过各种网络软件人们可以进行各种信息资源的交互,但是由此引发的网络安全问题也日益突出,使得研究人员对网络安全投入了大量的精力,而忽略了软件自身的安全性问题。尽管采用某些防火墙、入侵检测系统等网络安全措施可以阻止某些特定类型的网络攻击,但是网络安全问题仅仅是软件安全引发的表象问题,而真正的内因则是软件自身固有的缺陷。如由于编写者的失误、编程语言的缺陷或者编译器的错误等因素都可能造成软件产生漏洞,而攻击程序正是利用软件自身的这些漏洞进行网络攻击。因此只有在软件幵发过程中提高对软件自身安全性问题的重视,将软件保护方式作为软件开发计划的一部分来考虑,在保护强度、软件成本以及易用性之间进行权衡并采用相关的软件加密保护措施才能在根本上增强软件抗攻击的能力,从而提高软件质量。 '当前的软件保护技术主要以加密技术为核心,大多采用RSA、 MD5、 DES等标准算法。但是随着以静态分析和动态分析技术为核心的逆向工程的发展以及软件调试、分析工具的不断更新,以静态逻辑分析和动态调试为主的软件分析技术成为了主要的破解软件的技术手段。常用的软件保护措施如序列号保护、时间限制、KeyFile保护、警告窗口、软件加壳等技术在面对这些代码分析和调试工具时,已经显示出其不足之处。随着反-静态分析技术、反-动态分析技术、代码混淆等技术的出现,也给软件加密保护技术提出了新的研究课题。所以研究软件加密保护中的关键技术,对于保护软件的版权、维护软件开发企业的利益以及推进软件产业良性、健康的发展都具有重要的意义。
2主流软件分析技术
应用软件多以可执行文件的形式发布,软件破解者在经济利益或个人兴趣的驱使下,会采用各种软件分析手段对这些可执行文件进行静态反汇编和动态调试等操作,以实现对软件功能、执行过程、软件缺陷等内容的掌握,从而根据软件自身的安全缺陷实现软件的破解;而软件开发者则为了维护自身的商业利益,保护软件知识版权,需要对当前主流的软件分析技术进行学习研究,从而在软件开发过程中更有针对性地采用新的软件加密保护技术以增强其软件的保护强度,防止软件被轻易破解。随着新的软件破解技术的日益发展,深入研究当前主流软件分析技术对于软件开发者而言也显得尤为重要,只有知己知彼才能在软件保护与软件破解的斗争中占得先机,取得主动。
2.1软件分析技术基础
针对一款软件的可执行文件,破解者一般都是要从以下三个方面对软件进行分析调试,以寻求破解的线索,具体如下:
1) 通过实际操作熟悉软件的基本功能。要了解一个软件,最好的方法莫过于去实际运行该软件,借助软件的使用说明书及其操作手册进行软件的实际操作,从而实现对软件的功能、操作过程及其运行状态有直观的了解,为后续的软件分析工作做好基础。
2) 静态反汇编。静态反汇编[2'3]是逆向工程的第一步,逆向工程实际上是软件编译的反过程,逆向过程与编译过程的关系如图2.1所示,它主要通过对软件的可执行二进制代码进行反汇编和反编译操作,以获得软件的高级语言表示形式的过程。
3 常用软件保护技术.......... 31-44
3.1 注册保护技术......... 31-34
3.1.1 序列号保护方式......... 32
3.1.2 警告窗口 .........32-33
3.1.3 时间限制 .........33
3.1.4 菜单功能限制......... 33-34
3.1.5 只运行一个实例......... 34
3.2 加壳保护技术 .........34-39
3.2.1 壳保护技术概念.........34-35
3.2.2 壳保护工具及应用实例......... 35-39
3.3 反逆向分析技术......... 39-43
3.3.1 反静态反汇编......... 39-42
3.3.2 反动态调试......... 42-43
3.4 本章小结......... 43-44
4 新型加密保护关键技术设计与研究.........44-67
4.1 注册码保护关键技术研究 .........44-56
4.1.1 注册码保护技术基本概念......... 44-46
4.1.2 软件加密密码体制简介......... 46-49
4.1.3 基于RSA算法的安全注册码系统设计......... 49-56
4.2 一种新型反逆向分析关键技术的应用......... 56-66
4.3 本章小结......... 66-67
5 结论与展望......... 67-68
结论
本文研究的课题是软件加密保护关键技术的研究与实现,随着软件逆向分析技术的日趋成熟、分析工具功能的日益强大,给软件安全带了了巨大的威胁,也对传统的软件加密保护技术提出了新的挑战。为了更好的保护软件,抵御破解,软件开发者一方面需要针对当前主流的逆向分析技术进行研究并提出相应的防御策略;另一方面软件开发者也需要主动出击,探索新的软件加密保护技术。本文的主要工作可以从两个方面阐述,一方面是对当前主流的软件分析技术和软件保护技术的工作原理进行分析研究,并通过开发"软件加密保护技术研究平台"实现相关功能演示;另一方面对当前软件加密保护的关键技术中存在的缺陷进行分析研究,提出并实现了几种改进后的安全保护方案。课题中设计并实现的基于RSA算法的安全注册码系统,以RSA加解密算法为核心,通过软件验证码验证、主机硬件信息收集与处理以及注册码生成与验证等操作,很好地解决了传统注册码生成方式、注册码验证机制中安全性问题,在提高注册码系统抗破解能力的同时,实现了软件与硬件的绑定即实现了"一机一码"。基于RSA算法的安全注册码系统是