home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
451-475
/
apd457
/
amc
/
amc.asc
< prev
next >
Wrap
Text File
|
1992-03-02
|
9KB
|
361 lines
'***********************************************************
'* AmosMemoryCheck ( AMC ) V1.00 *
'* © 02/10/92 by Volker Stepprath *
'* Checks for any viruses in memory *
'* Compiled with ACmp -D11 -T0 -S0 -E0 -W1 -Q *
'***********************************************************
'
N$=Upper$(Command Line$)-"-"
'
If N$="C" Then _COLDRESET
'
Global HANDLE,DATEI$,T$
'
VIRUSTEST : Wait 50
'
If N$="F" : _SEARCH : End : End If
If N$="G" : _GENERAL : End : End If
If N$="R" : _RUNBACK : End If
If N$="S" : _SHOWMEMORY : End : End If
If N$="V" : _VEKTOR : End : End If
If N$<>"" : _USAGE : End If
'
'**** Vektoren ÜberprÜfen ****
'
Procedure VIRUSTEST
EXECBASE=4
EXECBASE=Leek(EXECBASE)
'
For I=0 To 4
Read N$,OFFSET
ADR=EXECBASE+OFFSET
ADR=Leek(ADR)
If ADR
T$=Chr$(10)+Chr$(69)+" "+N$+" is abnormal ( adr:"+Hex$(ADR,8)+" ) ... Right=Cold Reset"+Chr$(0)
GURU[ADR]
Exit
End If
Next
'
Data "ColdCapture",$2A
Data "CoolCapture",$2E
Data "WarmCapture",$32
Data " KickMemPtr",$222
Data " KickTagPtr",$226
End Proc
'
'**** Alarm ****
'
Procedure GURU[ADR]
Areg(0)=Varptr(T$)
Dreg(1)=69
RESPONSE=Intcall(-90)
If RESPONSE=0 Then _COLDRESET
'
Wait 50
T$="Please be carefull... "+Chr$($9B)+"1;33;40m"
'
N=Hunt(ADR To ADR+1540,"SADDAM")
If N : T$=T$+"SADDAM VIRUS" : Goto VHUNT : End If
'
N=Hunt(ADR To ADR+1540,"SCA")
If N : T$=T$+"SCA" : Goto VHUNT : End If
'
N=Hunt(ADR To ADR+1540,"NORTH STAR")
If N : T$=T$+"STARFIRE/NORTH STAR II" : Goto VHUNT : End If
'
N=Hunt(ADR To ADR+1540,"The Pentagon Circle")
If N : T$=T$+"THE PENTAGON CIRCLE" : Goto VHUNT : End If
'
Restore : I2=False
For I=0 To 37
Read N$,N : If ADR=N or ADR=N+$C00000 : I2=True : Exit : End If
Next
If I2=False
N$=Hex$(ADR,8)
If Instr(N$,"7E") : N$="LAMER! EXTERMINATOR" : I2=True : End If
If Instr(N$,"7F") : N$="LAMER! EXTERMINATOR" : I2=True : End If
End If
If I2=False
T$=T$+"IT COULD BE A VIRUS"
Else
T$=T$+N$+" VIRUS"
End If
'
VHUNT:
T$=T$+Chr$($9B)+"0;31;40m is in system !"
T$=T$+Chr$(10)+"Startaddress: "+Hex$(ADR,8)+Chr$(10)
T$=T$+Chr$($9B)+"0;33;40mAmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"
T$=T$+Chr$($9B)+"0;31;40m"+Chr$(10)
CLITEXT
'
Data "AIDS/VKILL",$7E880,"AIDS/VKILL",$7E882
Data "ALIEN NEW BEAT",$20000
Data "ASV",$7DC00
Data "BGS 9",$1B022,"BGS 9",$15002,"BGS 9",$15022,"BGS 9",$16002
Data "BYTE BANDIT",$7EBE2
Data "CCCP VIRUS",$B974
Data "CODER",$7F600
Data "COLOR",$70000
Data "DISK-HERPES",$7EC00
Data "EXTREME",$7F800,"EXTREME",$FF800
Data "FRENCH KISS",$7F0D0
Data "FUTURE DISASTER",$7FB00
Data "GREMLIN",$7F400
Data "GX.TEAM",$7F4D0
Data "JEFF-BUTONIC V3.0",$A22A,"JEFF-BUTONIC V3.0",$A20F
Data "JEFF-BUTONIC V3.0",$F702,"JEFF-BUTONIC V3.0",$A29A
Data "JEFF-BUTONIC V3.0",$A27A
Data "JITR",$7EC10
Data "JULIE",$7F800
Data "MEGAMASTER",$7E300
Data "PARATAX",$7EC3E
Data "PENTAGON VIRUS SLAYER",$7ED000
Data "REVENGE V1.2",$7E000
Data "SACHSEN NO.1 / NO.3",$78000
Data "SUNTRONIC",$7FA00
Data "THE SMILY CANCER",$7F000
Data "THE SMILY CANCER",$7FE00
Data "ULTRA FOX",$7EB00
Data "VERMIN",$7EB10
Data "WARHAWK",$7E600
Data "ZOMBI I",$7A000
End Proc
'
'**** Optionen ****
'
Procedure _COLDRESET
For I=0 To 109 : Read N : N$=N$+Chr$(N) : Next I
Call Varptr(N$)
Data 51,252,64,0,0,223,240,154,44,120
Data 0,4,32,86,145,252,0,0,2,118
Data 48,60,33,0,66,152,81,200,255,252
Data 32,124,0,0,0,0,48,60,0,254
Data 66,152,81,200,255,252,61,124,170,170
Data 0,36,45,124,204,204,204,204,0,38
Data 45,124,0,48,0,0,0,62,45,124
Data 0,222,0,0,0,78,45,124,187,187
Data 187,187,0,82,45,124,221,221,221,221
Data 2,42,32,124,1,0,0,0,34,124
Data 0,255,255,236,36,81,145,202,78,208
End Proc
Procedure _SEARCH
DATEI$="CON:0/83/640/21/AMC V1.00 by Volker Stepprath » Search For String «"
XOPENWIN
'
T$="Enter string to search: "
XWRITE
XREAD
N$=T$
'
T$="Enter startaddress....: "
XWRITE
XREAD
S=Val(T$)
'
T$="Enter endaddress......: "
XWRITE
XREAD
E=Val(T$)+1540
'
S=Max(17,S)
If S>E Then Swap E,S
If S=E Then Add E,1540
'
XCLOSE
'
T$=Chr$(10)+"Searching for "+N$+"..."+Chr$(10)
CLITEXT
'
N=Hunt(S To E,N$)
If N>0 and N<>$200000 Then T$="String found at address: "+Hex$(N,8) Else T$="Sorry... string not found !"
T$=T$+Chr$(10)+Chr$($9B)+"0;33;40m"
T$=T$+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$($9B)+"0;31;40m"
T$=T$+Chr$(10)
CLITEXT
End Proc
Procedure _GENERAL
T$=Chr$($9B)+"0;33;40m"
T$=T$+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$(10)
T$=T$+Chr$($9B)+"0;31;40m"+"AMC is written in AMOS V1.31 and compiled with ACmp V1.0 !"+Chr$(10)
T$=T$+"It is only tested on an AMIGA 500 ( OS1.3 ) + 1 MegaByte !"+Chr$(10)
T$=T$+"AMC needs the `diskfont.library` in folder LIBS/ on SYS: !"+Chr$(10)
T$=T$+"AmosMemoryCheck V1.00 is, was, and will be Public Domain !"+Chr$(10)
T$=T$+"Please send bug reports, girls, or `6 Richtige` to follow:"+Chr$(10)
T$=T$+"Author: V.Stepprath, Spandauerstr.4, 4019 Monheim, GERMANY"+Chr$(10)
T$=T$+"Thanks F.Lionet, M.Tornsdorf, Testament ( for good music )"+Chr$(10)
T$=T$+Chr$($9B)+"0;32;40m"+"AMC ©1992 by Depeche Software / AMOS ©1991 by Mandarin"
T$=T$+Chr$(10)+Chr$($9B)+"0;31;40m"
CLITEXT
End Proc
Procedure _RUNBACK
T$="AMC V1.00 installed ... press CTRL+Fkeys for options !"
T$=Chr$($9B)+"0;33;40m"+T$+Chr$($9B)+"0;31;40m"+Chr$(10)
CLITEXT
'
_INTERVALL:
Every 500 Gosub ZEIT
Every On
Repeat
Multi Wait
If Key Shift=8
If Key State(80) : _USAGE : End If
If Key State(81) : _GENERAL : End If
If Key State(82) : Every Off : _SHOWMEMORY : Goto _INTERVALL : End If
If Key State(83) : _VEKTOR : End If
If Key State(84) : Every Off : _SEARCH : Goto _INTERVALL : End If
If Key State(85) : Amos To Front : End If
If Key State(86) : _COLDRESET : End If
End If
Until Amos Here
Amos To Back
T$="AMC V1.00 by Volker Stepprath removed from system !"
T$=Chr$($9B)+"0;33;40m"+T$+Chr$($9B)+"0;31;40m"+Chr$(10)
CLITEXT
'
End
'
ZEIT:
Every Off
VIRUSTEST
Goto _INTERVALL
Return
End Proc
Procedure _SHOWMEMORY
DATEI$="CON:0/83/640/21/AMC V1.00 by Volker Stepprath » Show Memory «"
XOPENWIN
'
T$="Enter startaddress: "
XWRITE
XREAD
N=Val(T$)
'
T$="Enter output......: "
XWRITE
XREAD
DATEI$=T$
N$=DATEI$
'
XCLOSE
'
XOPENWIN
'
If N$=""
T$=Chr$(10)+Chr$($9B)+"0;33;42mAMC V1.00 02/10/92 by Volker Stepprath Start: "+Hex$(N,8)+" End: "+Hex$(N+1540,8)
T$=T$+Chr$($9B)+"0;31;40m"+String$("-",77)+Chr$(10)
XWRITE
End If
'
T$=""
For I=0 To 19
For I2=0 To 76
C=Peek(N+I3)
If N$=""
If C<32 or(C>127 and C<161) : C=46 : End If
End If
T$=T$+Chr$(C) : Add I3,1
Next
XWRITE
T$=""
Next
'
If N$=""
T$=Chr$(10)
XWRITE
End If
'
XCLOSE
End Proc
Procedure _VEKTOR
T$="*"+Chr$(0)
XOPENWIN
'
EXECBASE=4
EXECBASE=Leek(EXECBASE)
T$=Chr$(10)+"Vector....: Original: Pointer.: Address.:"+Chr$(10)
T$=T$+String$("-",44)+Chr$(10)
'
For I=0 To 4
Read N$,OFFSET
ADR=EXECBASE+OFFSET
N=Leek(ADR)
If N Then V$=Chr$($9B)+"0;32;40m"
V$=V$+Hex$(N,8)+Chr$($9B)+"0;31;40m"
T$=T$+N$+" "+"$00000000 "+V$+" "+Hex$(ADR,8)+Chr$(10)
V$=""
Next
T$=T$+Chr$($9B)+"0;33;40m"+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$(10)+Chr$($9B)+"0;31;40m"
XWRITE
'
XCLOSE
'
Data "ColdCapture ",$2A
Data "CoolCapture ",$2E
Data "WarmCapture ",$32
Data "KickMemPtr ",$222
Data "KickTagPtr ",$226
End Proc
Procedure _USAGE
T$=Chr$($9B)+"0;32;40mUsage: AMC [-? -G -S -V -F -R -C]"+Chr$(10)+Chr$($9B)+"0;31;40m"
T$=T$+" -?=Usage...... ( CTRL+F1 )"+Chr$(10)
T$=T$+" -G=General.... ( CTRL+F2 )"+Chr$(10)
T$=T$+" -S=Show Memory ( CTRL+F3 )"+Chr$(10)
T$=T$+" -V=Show Vector ( CTRL+F4 )"+Chr$(10)
T$=T$+" -F=Search..... ( CTRL+F5 )"+Chr$(10)
T$=T$+" -R=RunBack.... ( CTRL+F6 )"+Chr$(10)
T$=T$+" -C=ColdReset.. ( CTRL+F7 )"+Chr$(10)
T$=T$+" when using option -R, AMC must started like Run AMC -R"+Chr$(10)+Chr$($9B)+"0;33;40m"
T$=T$+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$(10)+Chr$($9B)+"0;31;40m"
CLITEXT
End Proc
'
'**** Öffnen/Schreiben/Schließen ****
'
Procedure CLITEXT
XOPENWIN
XWRITE
XCLOSE
End Proc
'
'**** Fensters/Datei öffnen ****
'
Procedure XOPENWIN
If DATEI$="" Then DATEI$="*"
DATEI$=DATEI$+Chr$(0)
Dreg(1)=Varptr(DATEI$)
Dreg(2)=1006
HANDLE=Doscall(-30)
DATEI$=""
End Proc
'
'**** Text schreiben ****
'
Procedure XWRITE
If HANDLE=0 Then Pop Proc
T$=T$+Chr$(0)
Dreg(1)=HANDLE
Dreg(2)=Varptr(T$)
Dreg(3)=Len(T$)
XWRITE=Doscall(-48)
End Proc
'
'**** Text von Tastatur lesen ****
'
Procedure XREAD
If HANDLE=0 Then Pop Proc
T$=T$+Chr$(0)
Dreg(1)=HANDLE
Dreg(2)=Varptr(T$)
Dreg(3)=Len(T$)
XREAD=Doscall(-42)
T$=Left$(T$,XREAD-1)
End Proc
'
'**** Fensters/Datei schließen ****
'
Procedure XCLOSE
If HANDLE=0 Then Pop Proc
Dreg(1)=HANDLE
XCLOSE=Doscall(-36)
End Proc