刘欣宜
摘 要:文章针对当前我国软件安全现状,深入软件这一本质进行研究性探讨。对于软件安全及软件保护做出了详细介绍,并提出软件保护相关方法。同时介绍了文件间的本质区别以及可执行文件的相关概念及发展历程,为软件安全领域的初涉打下了坚实的基础。文章对于增强软件开发安全性,创新软件保护方法,提高计算机发展水平,加快我国数字化信息化进程具有重大的参考价值和宏观的指导意义。
关键词:软件安全 软件保护 Windows可执行文件
中图分类号:TP311 文献标识码:A 文章编号:1674-098X(2016)07(c)-0076-02
随着社会的进步以及计算机技术的发展与普及,软件的开发和使用渗透到人类生活的各个领域。各类软件的广泛使用使得软件安全成为受到持续关注的热点问题。软件的泄漏、盗取、篡改以及病毒植入都对社会的数字网络化发展、企业的动态运行以及群众的高质量生活带来了巨大的威胁。计算机系统和网络对于用户数据隐秘性、完整性的保护,以及保护数据正常传输和抵御黑客、病毒攻击的能力直接决定了国家社会信息化发展水平,软件安全不可忽视。在维护软件安全过程中,人们需要首先了解软件安全领域最基础的软件知识,明确软件保护的具体概念和重大意义,从而掌握软件保护相关方法,保障软件的安全性。
提高软件保护技能,对症增强软件安全性,需要打好地基,从基层掌握软件内含,知晓软件运行所处环境,明确各类文件间的本质区别以及可执行文件在执行时的具体原理。只有深入了解软件内含,掌握Windows可执行文件演化过程以及计算机内存的分配原理,才能上升到软件安全高度,采取有效的措施对软件实行保护。
1 软件安全及软件保护
软件安全是指保证软件的安全,确保软件在被授权范围内能够合法使用,并且在软件受到恶意攻击时依然能够继续正确运行。软件安全涉及最基本内容有PE、SMC、花指令、反汇编、反调试等。掌握软件安全,首先需要对软件有较为深入的理解。了解软件及软件安全相关知识,最主要是要了解如何编程并对软件本身的运行机制熟烂于心。要使得软件处在安全状态下,就要对其进行相应的保护。
如何进行软件保护逐渐成为从事软件行业相关技术人员最为关心的问题。软件保护一般分为软加密和硬加密,其中硬加密与硬件相关,而软加密则是不依赖于硬件实现的保护方式。硬加密一般俗称加密狗或加密锁。软件保护是维护软件开发人员利益的主要手段,是在软件开发过程中至关重要的一环。在多领域软件开发过程中软件的泄漏、盗取或是篡改都会极大地影响开发者利益并对软件使用者造成威胁。
人们熟知“白盒”和“黑盒”两种环境。“黑盒”环境是一种对程序进行明文输入,密文输出的环境,软件可以密文保存,但必须要在明文状态下才能得以执行,因此软件不能处于“黑盒”环境中。所有软件都在“白盒”环境中,“白盒”环境进行step debug单步调试,对主机和软件具有完全控制权,而且在该环境下软件的所有动态执行过程都是可见的;加密算法中的内部细节同样可见、可修改,该环境在提供便利的同时,显示出了不可忽视的弊端,即不能使得软件百分之百抵抗攻击处于完全安全的状态。因此从目前情况分析,所谓软件保护实质上是指提高攻击成本,在攻击成本远远大于所得利益的时候使得攻击者放弃攻击,从而实现软件的保护。
2 软件保护方法
软件保护的方法有代码加密、代码混淆、自修改代码、进行软件防篡改、嵌入软件水印、实现软件多样化、反调试、反逆向、实行虚拟机保护以及基于网络和硬件的保护等。代码加密是指运用加壳技术对软件的相关代码进行加密保护,并在软件运行前对代码进行解密。使得代码中没有用到的均为密文,用到的均为明文;代码混淆是通过混淆方法,增大非软件开发方通过逆向工程获得软件源代码的难度使得重要信息不易获取;自修改代码指在程序运行期间修改或产生代码,使得程序可以自行进行修改;软件防篡改技术是指对软件进行加工处理,使软件在他人进行非法操作时,做出拒绝执行操作的行为;软件水印即在软件中嵌入唯一的标识,防止软件受到危害;软件多样化是使软件生成不同副本,使得攻击者无法通过同样的攻击方法破解不同副本;反调试和反逆向是通过使得攻击者无法获取和逆向程序的代码的方法实现对软件的保护。
3 文件及可执行文件
硬盘中的文件成百上千,各文件本质的不同在于文件名点号后扩展名的不同。不同的扩展名分别对应着不同的数据结构,每种数据结构都能够提供一种框架,来规定该文件在计算机上的保存方式。不同框架采取不同的操作方式来响应,响应方式的不同决定了硬盘中文件的不同。例如分别双击文件A.doc和A.exe,前者对文件进行打开操作,而后者直接对文件进行执行。
在双击exe文件时,系统首先分配出一个4G的虚拟内存空间,然后根据可执行文件相关数据的规定对分配的4G内存做初始化,在虚拟空间中找到相应入口地址并开始执行文件,执行完毕后释放4G内存并对该空间进行回收。计算机在执行不同的可执行文件时,保护模式多任务系统为其分配不同的虚拟内存空间,使得不同文件的执行相互独立,互不干涉。
4 Windows可执行文件
Windows操作系统中的文件是一种抽象机制,其定义了一套数据结构,使得操作系统中的可执行代码在装入内存之前以文件的方式存放在磁盘中,从而便于信息的读取和保存。Windows可执行文件经历了4个过程,分别为DOS阶段、Win3.x阶段、Win3.x和Win9x阶段以及Win9x和WinNT/2000/XP阶段。以上4个过程分别对应MZ格式、NE格式、LE格式以及PE格式。其中LE为线性可执行文件,用于虚拟设备驱动程序。PE为可移动的可执行文件,其中可移动不是指跨平台,而是指针对于同一种操作系统下的任何设备均可使用,与其他格式相比具有较强的优越性。在Windows可执行文件4个过程对应的格式中,MZ格式和NE格式属于Win16操作系统,PE格式属于Win32操作系统,而LE格式兼容Win16和Win32的操作系统。
5 结语
软件安全问题始终是数字网络信息化时代关注的焦点。文章以软件安全为研究主旋律进行理论分析,提出软件保护概念以及相关保护方法,并深入软件本质,从软件所处环境和文件间实质区别出发展开深入探讨,同时对Windows可执行文件的概念和发展过程进行了简要分析,使得软件安全不再是一个空泛的概念,而是具体化到每一个可执行文件。文章中提及的软件本质概念以及可执行文件的具体化分析为软件安全领域更深层次的研究和探索奠定了坚实的基础,对于软件安全的进一步完善和发展具有不可忽视的重大意义。
参考文献
[1]石礼娟.软件保护方案研究[J].农业网络信息,2006(6):
124-125.
[2]王云斌.IT业的知识产权[M].经济管理出版社,2001.
[3]郑思成.计算机、软件与数据的法律保护[M].法律出版社,1987.
[4]芦斌,罗向阳,刘粉林.一种基于混沌的软件水印算法框架及实现[J].软件学报,2007,18(2):351-360.