ITEEDU

检测内存中的 Soft-Ice

概述:

检测内存中的 Soft-Ice 又一法,不过这次用的是在全部内存搜索 Soft-Ice 的特征码来实现的。

汇编编程示例:


; 加密方法: 检测 s-ice
; 用 scas,cmps 等指令, s-ice 无法用
; bpm 等断点检测到, 因此可用比较关键字
; 来检测 s-ice 是否在内存中

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:CODE
              ORG       100H
      START:
              JMP       INSTALL

   DATA_SICE  DB        67H,66H,8BH,06H,0FH,22H,0D8H,26H,67H,66H
              DB        8BH,46H,04H,66H,26H,67H,0FH,01H,10H
           DATA_SICE_END  EQU       THIS BYTE

        D_OK  DB        'OK, passed...',0DH,0AH,24H
       D_ICE  DB        'Has Soft-Ice in memory',0DH,0AH,24H

    INSTALL:
              MOV       SI,OFFSET DATA_SICE
              MOV       DX,CS
              MOV       AL,26H
              XOR       BP,BP
              CLD
       RES1:
              MOV       ES,BP
              MOV       CX,100H
              XOR       DI,DI
       RES2:
       REPNZ  SCASB
              JNZ       CTS_2
              PUSH      CX
              PUSH      SI
              PUSH      DI
              MOV       CX,OFFSET DATA_SICE_END-OFFSET DATA_SICE
        REPZ  CMPSB
              JZ        HAS_SICE
              POP       DI
              POP       SI
              POP       CX
              JMP       SHORT RES2
      CTS_2:
              ADD       BP,10H
              CMP       BP,DX
              JB        RES1

              MOV       AH,9
              MOV       DX,OFFSET D_OK
              INT       21H
              INT       20H
   HAS_SICE:
              MOV       AH,9
              MOV       DX,OFFSET D_ICE
              INT       21H
              INT       20H

        CODE  ENDS
              END       START