浅析现代计算机软件保护模式的对比

时间:2022-10-29 01:11:55

浅析现代计算机软件保护模式的对比

摘要:计算机的普及致使我国的计算机犯罪率上升迅速,对计算机软件行业造成了一定的损失。当前发行的商业性软件,必须考虑如何的对软件进行保护,避免程序被破解和逆向,造成源代码泄露从而影响经济收益。对于软件安全,已经有很多种方法提供保护功能,这些方法通过不同的思路和实现路径对程序源码进行了保护,本文将对现在的各种软件保护方法进行对比分析。

关键词:软件保护;对比

中图分类号:TP311.5 文献标识码:A文章编号:1007-9599 (2011) 04-0000-01

Modern Computer Software Protection Mode Comparison

Guo Xiao

(Yangtze University,College of Arts and Science,Jingzhou434020,China)

Abstract:The proliferation of computers resulted in the rapid rise of computer crime,computer software industry caused some losses.The current issue of the commercial software,the software must consider how to protect and prevent the program is cracked and reverse,causing the source code leak affecting economic benefits.For software security,there are many ways has been to provide protection,these methods are realized through different ideas and paths of program source code was protected,a variety of software protection methods were compared.

Keywords:Software protection;Comparison

破解与反破解、逆向与反逆向之间的关系就像矛与盾,都在不断的发展中。每当一种新技术的出现时,必然会导致另一种制衡技术的发展,软件保护技术与逆向技术就这样都在不断的进步。现有的软件保护技术,主要有以下的几种:

一、软件加壳

软件加壳技术是软件安全使用的比较早的技术之一,但是随着加壳技术的不断进步,加壳仍然是许多软件采取的保护措施之一,并没有落伍,而且随着技术的成熟,目前已经有了不少软件支持对其他软件进行加壳。

软件加壳就是通过在windows的PE加载器加载应用程序后,率先取得控制权,之后对要保护的软件进行解密等操作,再交还控制权,从而降低软件被静态反编译的可能。目前安全性能比较好的软件壳是Virtual Machine壳,中文为虚拟壳,这种壳可以很大程度的提升软件的安全性能。软件加壳在提升软件安全性的同时,也降低了软件的运行效率,基本上壳越复杂,软件的运行效率就越低。

当前对于软件壳的破解已经出现了很多的手法,但是对于VM壳的破解还是非常难的,对于软件加壳,最好的办法是自己设计一种算法用来实现保护软件。

二、软件验证

这种技术目前的应用比较广泛,软件会通过某些不起眼的函数来实现对自身的验证,一旦发现自身的特征值结果与原来的特征值不符,就可以认定自己被修改过,从而退出软件,达到保护自己的目的。但是这种验证办法一旦破解者发现了该函数,就可以通过修改该函数达到跳过验证的目的,所以对于验证模块一定要做的隐秘。

另一种验证办法是通过网络验证,这个办法主要是网络游戏程序使用,当软件启动后便会联网对程序进行各项检查,一旦发现异常就退出程序,进而确保程序安全。

软件验证有效的关键是能够很好的隐藏验证模块,一旦验证模块被发现就极有可能被修改,让软件误以为自己安全。对于软件验证这种保护方法,最好的处理方法是采用多模块守护同步验证,这样可以增大软件破解的难度,达到保护软件的目的。

三、代码混淆与垃圾代码

代码混淆与垃圾代码的使用目前在中国研究深度不如国外,对于这方面的研究也稍晚。代码混淆是使用一些看起来有用,实际上并不起作用的代码块用以迷糊逆向者,转移逆向者的思路,增大破解者找到真实有用代码的困难度。垃圾代码是使用花指令或者是把一些垃圾无用的代码插入到正常代码里的一种手法,目前已经出现了向正常代码里插入花指令的软件。

代码混淆与垃圾代码的使用都大大增加了软件逆向的难度,极易使逆向者错过真实的目标。同样的,这些手法也大大的降低了软件的执行效率,并且现在也专门的出现了去除垃圾代码的逆向工具,但是对于代码混淆,只能通过插断点跟踪或者是依靠逆向者出色的个人经验进行破解。

四、进入系统内核保护代码

随着HOOK、ROOKIT技术的普及和发展,各种内核级软件逐渐出现,一些涉及到系统安全的程序,特别是杀毒软件或者是系统辅助软件,纷纷进入到RING0层,然后HOOK系统的关键部位,拦截其他软件对其修改,对自己进行保护。

进入内核级对自己的软件进行保护是一种非常有效的软件保护办法,RING0级别的权限足以让程序做很多事情来实现对自己的保护,但是这却是对用户不负责任的办法。Windows并没有公开其源代码,对于内核普通使用者仅仅是一知半解甚至完全不清楚,多种软件在内核级进行操作相互争夺系统控制权极易引起系统崩溃,给用户造成损失,同时由于软件涉及到了系统安全,其行为除了对系统进行破坏外,已经同流氓软件和病毒相差无几,会引起杀毒软件的拦截。

五、其他方法

除以上所说的方法外,还有一些办法用来实现对软件进行保护,多数是一些小技巧,所以其针对性往往较强,其中很多是针对一些逆向软件、破解软件的工作原理进行反破解和反逆向的技巧,还有一些是针对于内存访问、断点拦截等破解、逆向常用的办法进行反逆向反破解的技巧和办法,除此之外还有许多技巧用来实现对软件的保护。这些技巧在一定程度上降低了程序被逆向的可能,但是要求程序的编写者有较高的逆向与反逆向能力,熟悉逆向的过程和手法,了解其优缺点,并能找到制衡逆向的办法。

六、结束语

对于软件的保护,通常采用一种办法是不够的,实际的软件保护经常是使用了多种办法混合进行保护,要注意在采取保护策略的同时,也要平衡软件的性能与安全之间的矛盾。没有无所不破的矛也没有无所不防的盾,软件安全技术需要不断的学习最新的技术用来对自己的软件进行保护,没有一种办法可以恒久的使用并保证软件的安全。

参考文献:

[1]段刚.加密与解密第三版[D].电子工业出版社,2008

[2]胡恬,王宏.原代码级的软件安全问题研究[J].软件导刊,2007

[3]看雪学院.软件加密技术内幕第二版[D].电子工业出版社,2004

[4]Kris Kaspersky.Hacker Disassembling Uncoverd[D].A-List Publishing,2003

[5]Ed Skoudis,Lenny Zeltser.Malware:Fighting Malicious Code[D].Prentice HallPTR,2003

上一篇:信息化下教学模式的转变 下一篇:面向实时嵌入式操作系统的进程机制探究