当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 计算机加密反跟踪技术密文技术

安全基础
Windows经常弹出的询问框处理技巧汇总
怎样让您的电脑待机耗电等于零
系统中出现了多个smss.exe进程判断是否中毒
系统崩溃不要怕 快速还原的3个方法
玩转windows系统的回收站
手机QQ 72ub病毒泛滥很多网友被骗

安全基础 中的 计算机加密反跟踪技术密文技术


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 79 ::
收藏到网摘: n/a

一、跟踪技术
 大家知道DOS中有一个功能强大的动态跟踪调试软件DEBUG,它能够实现对程序的跟踪和逐条运行,其实这是利用了单步中断和断点中断的原因,而且目前的大多数跟踪调试软件都是利用了这两个中断。

 单步中断(INT1)是由机器内部状态引起的一种中断,当系统标志寄存器的TF标志(单步跟踪标志)被置位时,就会自动产生一次单步中断,使得CPU能在执行一条指令后停下来,并显示各寄存器的内容。
断点中断(INT3)是一种软中断,软中断又称为自陷指令,当CPU执行到自陷指令时,就进入断点中断服务程序,由断点中断服务程序完成对断点处各寄存器内容的显示。
 G命令的执行过程:DEBUG中的G命令是用于运行程序的,但当G命令后面跟有断点参数时,就可使程序运行至断点处中断,并显示各寄存器的内容,这样就可以大大提高跟踪的速度。它的实现是通过调用断点中断来实现的:DE-BUG首先保存设置的断点处指令,改用断点中断INT3指令代替,当程序执行到断点处的INT3指令时,便产生断点中断,并把原先保存的断点处指令重新替代INT3,以完成一个完整的设置断点的G命令。通过对单步中断和断点中断的合理组合,可以产生强大的动态调试跟踪功能,这就对磁盘加密技术造成了巨大的威慑,所以破坏单步中断和断点中断,在反跟踪技术中就显得十分必要,成为反跟踪技术中的"必修课"。

二、反跟踪技术
 作为反拷贝技术的保护者反跟踪技术是整个磁盘加密技术中最能显示技术水平的部分,如果它稍有漏洞就会影响到整个磁盘加密技术的可靠性.不过毫无漏洞的反跟踪技术是没有,随着时间的推移、编程工具的更新和经验的积累,反跟踪技术只会向完美逼近,但可以肯定的是:一定不会达到完美,这和哲学中的"绝对和相对"是同一个道理。一个卓越的反跟踪技术虽然肯定有着微小的漏洞,但是它本身其它的技术可以起到弥补和尽可能减小这个漏洞的作用,这就是这个反跟踪技术的卓越之处。一个有效的反跟踪技术应该具有3大特性:

 重要程序段是不可跳越和修改的:PROLOK的解密过程是通过修改判读指纹的程序段来实现的,这其实是激光加密系统中反跟踪技术的一个败笔,一个有效的反跟踪技术应该对加密系统中的某些甚至全部程序段进行保护,如果这其中有内容被修改,将导致出错,主要方法有累计、累或和异或和程序段等方法,同时还要保证重要程序段一定要被执行,方法主要有加密程序分段加密,运行时逐层解密,逐层清除的方法,即只有运行了重要的程序段,才能将下一层程序代码从密码形式转换成明码形式;
不通过加密系统的译码算法,密码不可破译:为塑造一个封闭的加密系统,杜绝使用外调自编子程序甚至手工转换密码,规定只能由加密系统的译码程序来转换密码;
加密系统是不可动态跟踪执行的:动态跟踪是对加密系统的窥视,所以反跟踪技术应该绝对禁止对加密系统的动态跟踪。

反跟踪技术主要采用的方法有:

 抑制跟踪中断:DEBUG的T和G命令分别要运行系统的单步中断和断点中断服务程序,在系统向量表中这两个中断的中断向量分别为1和3,中断服务程序的入口地址分别存放在0000:0004和0000:000C起始的4个字节中。因此,当这些单元中的内容被修改后,T和G命令将无法正常执行,具体实现方法:
(1)将这些单元作为堆栈使用;
(2)在这些单元中送入软件运行的必要数据;
(3)将软件中某个子程序的地址存放在这些单元中,当需要调用时使用INT1和INT3指令来代替CALL指令;
(4)放入惩罚性程序的入口地址。

封锁键盘输入:各种跟踪调试软件在工作时,都要从键盘上接收操作者发出的命令,而且还要从屏幕上显示出调试跟踪的结果,这也是各种跟踪调试软件对运行环境的最低要求。因此反跟踪技术针对跟踪调试软件的这种"弱点",在加密系统无须从键盘或屏幕输入、输出信息时,关闭了这些外围设备,以破坏跟踪调试软件的运行环境。键盘信息的输入采用的硬件中断方式,由BIOS中的键盘中断服务程序接收、识别和转换,最后送入可存放16个字符的键盘缓冲区。针对这些过程反跟踪技术可以采用的方法有:
(1)改变键盘中断服务程序、BIOS的键盘I/O中断服务程序的入口地址:键盘中断的中断向量为9,BIOS的键盘I/O中断的中断向量为16H,它们的中断服务程序的入口地址分别存放在内存地址0000:0024H和0000:0058H起始的4个字节中,改变这些地址中的内容,键盘信息将不能正常输入。
(2)禁止键盘中断:键盘中断是一个可屏蔽中断,可通过向8259中断控制器送屏蔽控制字来屏蔽键盘中断。控制键盘的是中断屏蔽寄存器的第1位,只要将该位置1,即可关闭键盘的中断。
INAL,21H
ORAL,02H
OUT21H,AL
需要开放键盘中断时,也要用三条指令:
INAL,21H
ANDAL,FDH
OUT21H,AL

(3)禁止接收键盘数据:键盘数据的接收是由主机板上8255A并行接口完成的。其中端口A用来接收键盘扫描码,端口B的第7位用来控制端口A的接收,该位为0表示允许键盘输入,为1则清除键盘。正常情况下,来自键盘的扫描码从端口A接收之后,均要清除键盘,然后再允许键盘输入,为了封锁键盘输入,我们只须将端口B的第7位置1:
INAL,61H
ORAL,80HOUT61H,AL
当需要恢复键盘输入时,执行以下三条指令:
INAL,61H<