ITEEDU

第1章 Iczelion的Win32汇编教程

第2章 Iczelion的ODBC教程

第3章 Iczelion的VxD教程

第4章 Iczelion的PE教程

第5章 罗云彬的Win32汇编教程

第6章 Win32ASM经验点滴

第7章 X86汇编语言编程

第8章 加密解密

第9章 病毒的分析和防治

用时间差反跟踪

概述:

如果关掉中断,不仅仅是键盘不动了,时钟也不会走,所以可以利用时间差来反跟踪,具体方法是:先关掉中断, 再用当前时间作 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