APP下载

计算机软件安全中的反跟踪技术探讨

2015-03-19

网络安全技术与应用 2015年11期
关键词:计算机软件中断代码

0 引言

在计算机应用系统中,人们几乎对所有信息的处理都是通过运用不同的计算机软件来实现的,即计算机软件能够直接控制计算机应用系统中的数据,因此,对于计算机应用系统中数据的安全的保护,保护计算机软件的安全运行是一个重要方面。要想保护计算机软件的安全运行,必须基于一个安全的系统硬件平台,防止软件在运行过程中被跟踪监视、干扰和篡改,其中反跟踪是最为主要和重要的一点。因此,为了保证计算机软件的安全运行,必须采用反跟踪技术防止软件跟踪。

1 计算机软件反跟踪技术

自从计算机软件被开发出来以后,一直有人利用跟踪软件对正在运行的计算机程序进行跟踪,从而窃取软件源代码,对计算机系统进行入侵,破坏,取消系统的防复制和加密功能,进而窃取计算机应用系统中的数据。目前跟踪软件主要是利用系统中的单步中断和断电中断程序实现目的的。软件跟踪又分为动态跟踪和静态跟踪。动态跟踪是利用调试工具将程序强行在某处中断,使程序单步执行,从而进行跟踪分析。静态跟踪是利用反编译工具对软件进行反汇编,得到源代码进行数据的分析。

软件恶意跟踪的大量出现,反跟踪技术自然应运而生,运用软件根据对各种调试和反汇编工具特征的判断,实现对计算机软件的实时监测,防止跟踪者利用跟踪软件对计算机软件的运行进行跟踪。良好的计算机加密软件都离不开反跟踪技术,计算机系统数据被窃取,软件被攻击,大多都是从计算机软件被跟踪开始的。所以,要想保护计算机软件安全运行,反跟踪技术的应用必不可少。如果没有反跟踪技术,计算机软件就如同毫不设防一般,任由跟踪者毫无障碍地进行破解攻击,进而导致计算机软件信息和数据被解读,计算机用户的信息安全完全得不到保障。

2 反跟踪技术的具体方法

抑制单步中断和断点中断。计算机系统中单步中断和断点中断的服务程序是Debug进行T命令和G命令的执行过程中必须调用的。因此,在反跟踪技术中,可以通过将单步中断和断点中断程序替换成其他中断,从根本上将跟踪者调用程序的运行环境彻底破坏,让跟踪者没有程序可调用,从而防止计算机软件在运行过程中被跟踪。

封锁键盘输入。所有跟踪软件进行计算机软件跟踪的时候,都需要操纵者通过键盘输入发出指令,并且通过计算机屏幕显示调试跟踪的结果。针对这一点,在加密系统不需要接受键盘输入指令的情况下,反跟踪技术可以通过从关闭计算机键盘,阻止跟踪软件接收到操纵者的指令,从而使跟踪软件无法继续运作。而对于计算机键盘的关闭,反跟踪技术可以通过禁止键盘中断程序的运行、禁止接收键盘数据、更改键盘中断程序的起始地址等方法实现。

检测跟踪。跟踪者要想利用跟踪软件侵入计算机系统,必须对加密系统进行分析执行,如此就会导致计算机加密系统的执行出现运行环境变化、中断入口改变、时间长短与正常运行不一致等异常情况。对此,反跟踪技术可以在发生异常的地方采取措施,对计算机加密系统进行保护。比如,在一个计算机软件被跟踪时,运行所花的时间跟正常运行时明显不同的,反跟踪技术可以通过检查软件运行时间来判断是否被跟踪,并且同时对计算机加密系统的关键位置进行实时监控,一旦发现异常,就作出应对,进行加密系统的修复。类似的反跟踪技术还能进行多方位同步使用,环环相扣,密切相连,从而提高计算机加密系统的复杂度和可靠性,大大增加跟踪者的解密难度。

分块加密程序。为了防止计算机加密系统程序被反汇编,加密程序需要以分块密文的形式装入内存。在程序执行时,由前一块加密程序对其进行译码,并且在程序执行结束后,立马进行清除处理。如此一来,跟踪者无论在什么时候都无法从内存中得到完整的解密程序代码,更不可能对计算机加密系统程序进行反汇编。跟踪者无法入侵加密系统,就不能设置断点,对计算机软件的跟踪就更是无从谈起。

设置堆栈指针。跟踪软件运行时,必须对堆栈进行操作。因此,反跟踪技术可以通过针对堆栈指针采取措施防止跟踪。比如,可以重新设计堆栈指针的值,使其具有一定的抗修改性,从而避免跟踪者通过再次改变堆栈指针的值进行继续跟踪。具体方法有以下几点:将堆栈指针设置到ROM区或程序段中、中断内向量表以及改变堆栈指针的作用等。

逆指令流法。在计算机内存中,指令代码是按照从低级地址到高级地址的顺序进行存放的,同时这也是CPU执行指令的顺序,这个过程由计算机硬件来实现,人们和所设计的跟踪调试软件也广泛接受这一规律。针对这个特点,反跟踪技术可以采用逆指令流法,通过改变顺序执行指令的方法,使CPU逆向执行指令,让跟踪者无法解读逆向排列的指令代码,从而防止跟踪者对计算机软件的跟踪。逆指令流法如果能够在软件加密中得到运用,一定能大大提高计算机系统的安全性。

3 反跟踪技术的核心突破

目前相关专业人员已经开发出了反调试器技术、反断点技术、虚拟机应用、和反单步跟踪技术等大量反跟踪技术。然而这些技术虽然本身强度很高,但并没有很好地做到代码的保护,这会在很大程度上影响到它的反跟踪效果。因此,研究人员做出了反跟踪技术的核心突破,一种新型的反跟踪系统应运而生——代码自修型反跟踪系统,它引入一种新型的代码自修改技术,结合目标代码自修改和反跟踪技术,隐藏处理关键代码的原指令,从而大大增加跟踪分析的难度,加强对软件的保护作用,最终形成一套技术成熟、效果强力的反跟踪系统。代码自修改技术的实现过程,主要是对代码进行隐藏和修复,其中涉及到原代码块、隐藏指令集、目标指令集以及自修改代码块等。

包含关键代码的可执行模块就是原代码块,目标指令集是用户想要对原代码块进行处理的指令序列,用户可以选择多个进行处理。我们可用A表示用户想要进行隐藏处理的目标指令集,对于A经过隐藏处理得到的指令序列,可用B表示。自修改代码块C,就是所有隐藏处理目标指令后得到的可执行模块。代码自修改的具体实现过程是:第一,用户在原代码块中选择一组需要进行保护的目标代码A,分别为其中每一个A代码指令进行隐藏得到B代码指令;第二,在原代码块中,选取合适的位置插入与每一个B代码指令相对应恢复处理函数。在程序运行过程中,先运行恢复处理函数恢复隐藏得到的指令序列B;同时,用户在原代码块,选取合适的位置对应每一个A代码指令插入隐藏处理函数。当程序运行时,先执行目标代码A,而后运行隐藏处理函数,隐藏处理目标代码A,从而实现反跟踪分析功能。经过以上的代码自修改过程后,程序中受到保护的代码一直保持被隐藏保护的状态,只在运行需要的某个时间段出现,这样就做到了程序代码可动态生成。

基于代码自修改的软件反跟踪技术主要分为两大部分,一是实现反跟踪分析功能的反跟踪部分,二是用于完成代码自修改功能的系统代码自修改代码处理部分。应用这种软件反跟踪技术时,利用加密程序将系统反跟踪和自修改处理相结合,对目标程序进行处理,就能形成嵌套加密企且具有强力抗跟踪分析特性的可执行文件。如此一来,就能很好地达到软件反跟踪的目的,完成对程序的保护。

软件的破解和加密,跟踪和反跟踪一直同时存在。随着科技的发展和进步,总会出现新的破解技术破解计算机加密系统,对软件进行跟踪,而新的加密技术和反跟踪技术也不断出现,对计算机软件安全进行实时保护。因此,相关人员不能懈怠,要不断对反跟踪技术进行研发和更新,及时发现并修补系统漏洞,保障计算机软件安全运行,不给跟踪者可乘之机。

猜你喜欢

计算机软件中断代码
基于FPGA的中断控制器设计*
创世代码
创世代码
创世代码
创世代码
基于C语言的计算机软件编程
浅谈不同编程语言对计算机软件开发的影响
跟踪导练(二)(5)
千里移防,卫勤保障不中断
浅谈基于C语言的计算机软件程序设计