用时间差反跟踪
概述:
  
      如果关掉中断,不仅仅是键盘不动了,时钟也不会走,所以可以利用时间差来反跟踪,具体方法是:先关掉中断, 再用当前时间作 
  key 加密,在执行一大堆指令后,偷偷地再用当前时间解密, 如果为了解密跳过关中断指令, 时间就会变化, 解密结果就会不对,然后...当然是死机啦 !
汇编编程示例:
  
  code    segment
          assume    cs:code,ds:code
          org    100h
  start:
          jmp    install
  
  d1      db    'OK, passed ...',0dh,0ah,24h
  
  install:
          xor    ax,ax
          mov    es,ax
          mov    ax,es:[046ch] 
      ;系统时间计数
          xor    word ptr _code,ax 
      ;把 _CODE 处的指令加密
  
          mov    ah,0ffh
          in     al,21h
          xchg   ah,al
          out    21h,al             
  ;关掉中断,并保存原中断开关情况到 AH
          
          mov    cx,100             
  ;这儿是延时语句,模拟其他程序的执行时间
  lop1:
          push   cx
          xor    cx,cx
  lop2:
          loop   lop2
          pop    cx
          loop   lop1
          
          mov    bx,es:[046ch] 
      ;再把时间取回来解密
          xor    word ptr _code,bx  
  
          xchg   ah,al             
  ;记得把中断复原
          out    21h,al
  _code:
          nop
          nop
          mov    ah,9
          mov    dx,offset d1
          int    21h
          int    20h
  
  code    ends
          end    start