home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 451-475 / apd457 / amc / amc.asc < prev    next >
Text File  |  1992-03-02  |  9KB  |  361 lines

  1. '*********************************************************** 
  2. '*              AmosMemoryCheck  ( AMC ) V1.00             * 
  3. '*              © 02/10/92 by Volker Stepprath             * 
  4. '*             Checks for any viruses in memory            * 
  5. '*        Compiled with ACmp -D11 -T0 -S0 -E0 -W1 -Q       * 
  6. '*********************************************************** 
  7. '
  8. N$=Upper$(Command Line$)-"-"
  9. '
  10. If N$="C" Then _COLDRESET
  11. '
  12. Global HANDLE,DATEI$,T$
  13. '
  14. VIRUSTEST : Wait 50
  15. '
  16. If N$="F" : _SEARCH : End : End If 
  17. If N$="G" : _GENERAL : End : End If 
  18. If N$="R" : _RUNBACK : End If 
  19. If N$="S" : _SHOWMEMORY : End : End If 
  20. If N$="V" : _VEKTOR : End : End If 
  21. If N$<>"" : _USAGE : End If 
  22. '
  23. '**** Vektoren ÜberprÜfen **** 
  24. '
  25. Procedure VIRUSTEST
  26.   EXECBASE=4
  27.   EXECBASE=Leek(EXECBASE)
  28.   '
  29.   For I=0 To 4
  30.     Read N$,OFFSET
  31.     ADR=EXECBASE+OFFSET
  32.     ADR=Leek(ADR)
  33.     If ADR
  34.       T$=Chr$(10)+Chr$(69)+" "+N$+" is abnormal ( adr:"+Hex$(ADR,8)+" ) ... Right=Cold Reset"+Chr$(0)
  35.       GURU[ADR]
  36.       Exit 
  37.     End If 
  38.   Next 
  39.   '  
  40.   Data "ColdCapture",$2A
  41.   Data "CoolCapture",$2E
  42.   Data "WarmCapture",$32
  43.   Data " KickMemPtr",$222
  44.   Data " KickTagPtr",$226
  45. End Proc
  46. '
  47. '**** Alarm **** 
  48. '
  49. Procedure GURU[ADR]
  50.   Areg(0)=Varptr(T$)
  51.   Dreg(1)=69
  52.   RESPONSE=Intcall(-90)
  53.   If RESPONSE=0 Then _COLDRESET
  54.   '
  55.   Wait 50
  56.   T$="Please be carefull... "+Chr$($9B)+"1;33;40m"
  57.   '
  58.   N=Hunt(ADR To ADR+1540,"SADDAM")
  59.   If N : T$=T$+"SADDAM VIRUS" : Goto VHUNT : End If 
  60.   '
  61.   N=Hunt(ADR To ADR+1540,"SCA")
  62.   If N : T$=T$+"SCA" : Goto VHUNT : End If 
  63.   '
  64.   N=Hunt(ADR To ADR+1540,"NORTH STAR")
  65.   If N : T$=T$+"STARFIRE/NORTH STAR II" : Goto VHUNT : End If 
  66.   '
  67.   N=Hunt(ADR To ADR+1540,"The Pentagon Circle")
  68.   If N : T$=T$+"THE PENTAGON CIRCLE" : Goto VHUNT : End If 
  69.   '
  70.   Restore : I2=False
  71.   For I=0 To 37
  72.     Read N$,N : If ADR=N or ADR=N+$C00000 : I2=True : Exit : End If 
  73.   Next 
  74.   If I2=False
  75.     N$=Hex$(ADR,8)
  76.     If Instr(N$,"7E") : N$="LAMER! EXTERMINATOR" : I2=True : End If 
  77.     If Instr(N$,"7F") : N$="LAMER! EXTERMINATOR" : I2=True : End If 
  78.   End If 
  79.   If I2=False
  80.     T$=T$+"IT COULD BE A VIRUS"
  81.   Else 
  82.     T$=T$+N$+" VIRUS"
  83.   End If 
  84.   '
  85. VHUNT:
  86.   T$=T$+Chr$($9B)+"0;31;40m is in system !"
  87.   T$=T$+Chr$(10)+"Startaddress: "+Hex$(ADR,8)+Chr$(10)
  88.   T$=T$+Chr$($9B)+"0;33;40mAmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"
  89.   T$=T$+Chr$($9B)+"0;31;40m"+Chr$(10)
  90.   CLITEXT
  91.   '
  92.   Data "AIDS/VKILL",$7E880,"AIDS/VKILL",$7E882
  93.   Data "ALIEN NEW BEAT",$20000
  94.   Data "ASV",$7DC00
  95.   Data "BGS 9",$1B022,"BGS 9",$15002,"BGS 9",$15022,"BGS 9",$16002
  96.   Data "BYTE BANDIT",$7EBE2
  97.   Data "CCCP VIRUS",$B974
  98.   Data "CODER",$7F600
  99.   Data "COLOR",$70000
  100.   Data "DISK-HERPES",$7EC00
  101.   Data "EXTREME",$7F800,"EXTREME",$FF800
  102.   Data "FRENCH KISS",$7F0D0
  103.   Data "FUTURE DISASTER",$7FB00
  104.   Data "GREMLIN",$7F400
  105.   Data "GX.TEAM",$7F4D0
  106.   Data "JEFF-BUTONIC V3.0",$A22A,"JEFF-BUTONIC V3.0",$A20F
  107.   Data "JEFF-BUTONIC V3.0",$F702,"JEFF-BUTONIC V3.0",$A29A
  108.   Data "JEFF-BUTONIC V3.0",$A27A
  109.   Data "JITR",$7EC10
  110.   Data "JULIE",$7F800
  111.   Data "MEGAMASTER",$7E300
  112.   Data "PARATAX",$7EC3E
  113.   Data "PENTAGON VIRUS SLAYER",$7ED000
  114.   Data "REVENGE V1.2",$7E000
  115.   Data "SACHSEN NO.1 / NO.3",$78000
  116.   Data "SUNTRONIC",$7FA00
  117.   Data "THE SMILY CANCER",$7F000
  118.   Data "THE SMILY CANCER",$7FE00
  119.   Data "ULTRA FOX",$7EB00
  120.   Data "VERMIN",$7EB10
  121.   Data "WARHAWK",$7E600
  122.   Data "ZOMBI I",$7A000
  123. End Proc
  124. '
  125. '**** Optionen ****  
  126. '
  127. Procedure _COLDRESET
  128.   For I=0 To 109 : Read N : N$=N$+Chr$(N) : Next I
  129.   Call Varptr(N$)
  130.   Data 51,252,64,0,0,223,240,154,44,120
  131.   Data 0,4,32,86,145,252,0,0,2,118
  132.   Data 48,60,33,0,66,152,81,200,255,252
  133.   Data 32,124,0,0,0,0,48,60,0,254
  134.   Data 66,152,81,200,255,252,61,124,170,170
  135.   Data 0,36,45,124,204,204,204,204,0,38
  136.   Data 45,124,0,48,0,0,0,62,45,124
  137.   Data 0,222,0,0,0,78,45,124,187,187
  138.   Data 187,187,0,82,45,124,221,221,221,221
  139.   Data 2,42,32,124,1,0,0,0,34,124
  140.   Data 0,255,255,236,36,81,145,202,78,208
  141. End Proc
  142. Procedure _SEARCH
  143.   DATEI$="CON:0/83/640/21/AMC V1.00 by Volker Stepprath  » Search For String «"
  144.   XOPENWIN
  145.   '
  146.   T$="Enter string to search: "
  147.   XWRITE
  148.   XREAD
  149.   N$=T$
  150.   '
  151.   T$="Enter startaddress....: "
  152.   XWRITE
  153.   XREAD
  154.   S=Val(T$)
  155.   '
  156.   T$="Enter endaddress......: "
  157.   XWRITE
  158.   XREAD
  159.   E=Val(T$)+1540
  160.   '
  161.   S=Max(17,S)
  162.   If S>E Then Swap E,S
  163.   If S=E Then Add E,1540
  164.   '
  165.   XCLOSE
  166.   '
  167.   T$=Chr$(10)+"Searching for "+N$+"..."+Chr$(10)
  168.   CLITEXT
  169.   '
  170.   N=Hunt(S To E,N$)
  171.   If N>0 and N<>$200000 Then T$="String found at address: "+Hex$(N,8) Else T$="Sorry... string not found !"
  172.   T$=T$+Chr$(10)+Chr$($9B)+"0;33;40m"
  173.   T$=T$+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$($9B)+"0;31;40m"
  174.   T$=T$+Chr$(10)
  175.   CLITEXT
  176. End Proc
  177. Procedure _GENERAL
  178.   T$=Chr$($9B)+"0;33;40m"
  179.   T$=T$+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$(10)
  180.   T$=T$+Chr$($9B)+"0;31;40m"+"AMC is written in AMOS V1.31 and compiled with ACmp V1.0 !"+Chr$(10)
  181.   T$=T$+"It is only tested on an AMIGA 500 ( OS1.3 ) + 1 MegaByte !"+Chr$(10)
  182.   T$=T$+"AMC needs the `diskfont.library` in folder LIBS/ on SYS: !"+Chr$(10)
  183.   T$=T$+"AmosMemoryCheck V1.00 is, was, and will be Public Domain !"+Chr$(10)
  184.   T$=T$+"Please send bug reports, girls, or `6 Richtige` to follow:"+Chr$(10)
  185.   T$=T$+"Author: V.Stepprath, Spandauerstr.4, 4019 Monheim, GERMANY"+Chr$(10)
  186.   T$=T$+"Thanks F.Lionet, M.Tornsdorf, Testament ( for good music )"+Chr$(10)
  187.   T$=T$+Chr$($9B)+"0;32;40m"+"AMC ©1992 by Depeche Software   /   AMOS ©1991 by Mandarin"
  188.   T$=T$+Chr$(10)+Chr$($9B)+"0;31;40m"
  189.   CLITEXT
  190. End Proc
  191. Procedure _RUNBACK
  192.   T$="AMC V1.00 installed ... press CTRL+Fkeys for options !"
  193.   T$=Chr$($9B)+"0;33;40m"+T$+Chr$($9B)+"0;31;40m"+Chr$(10)
  194.   CLITEXT
  195.   '
  196.   _INTERVALL:
  197.   Every 500 Gosub ZEIT
  198.   Every On 
  199.   Repeat 
  200.     Multi Wait 
  201.     If Key Shift=8
  202.       If Key State(80) : _USAGE : End If 
  203.       If Key State(81) : _GENERAL : End If 
  204.       If Key State(82) : Every Off : _SHOWMEMORY : Goto _INTERVALL : End If 
  205.       If Key State(83) : _VEKTOR : End If 
  206.       If Key State(84) : Every Off : _SEARCH : Goto _INTERVALL : End If 
  207.       If Key State(85) : Amos To Front : End If 
  208.       If Key State(86) : _COLDRESET : End If 
  209.     End If 
  210.   Until Amos Here
  211.   Amos To Back 
  212.   T$="AMC V1.00 by Volker Stepprath removed from system !"
  213.   T$=Chr$($9B)+"0;33;40m"+T$+Chr$($9B)+"0;31;40m"+Chr$(10)
  214.   CLITEXT
  215.   '
  216.   End 
  217.   '  
  218.   ZEIT:
  219.     Every Off 
  220.     VIRUSTEST
  221.     Goto _INTERVALL
  222.   Return 
  223. End Proc
  224. Procedure _SHOWMEMORY
  225.   DATEI$="CON:0/83/640/21/AMC V1.00 by Volker Stepprath  » Show Memory «"
  226.   XOPENWIN
  227.   '
  228.   T$="Enter startaddress: "
  229.   XWRITE
  230.   XREAD
  231.   N=Val(T$)
  232.   '
  233.   T$="Enter output......: "
  234.   XWRITE
  235.   XREAD
  236.   DATEI$=T$
  237.   N$=DATEI$
  238.   '
  239.   XCLOSE
  240.   '
  241.   XOPENWIN
  242.   '
  243.   If N$=""
  244.     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)
  245.     T$=T$+Chr$($9B)+"0;31;40m"+String$("-",77)+Chr$(10)
  246.     XWRITE
  247.   End If 
  248.   '
  249.   T$=""
  250.   For I=0 To 19
  251.     For I2=0 To 76
  252.       C=Peek(N+I3)
  253.       If N$=""
  254.         If C<32 or(C>127 and C<161) : C=46 : End If 
  255.       End If 
  256.       T$=T$+Chr$(C) : Add I3,1
  257.     Next 
  258.     XWRITE
  259.     T$=""
  260.   Next 
  261.   '
  262.   If N$=""
  263.     T$=Chr$(10)
  264.     XWRITE
  265.   End If 
  266.   '
  267.   XCLOSE
  268. End Proc
  269. Procedure _VEKTOR
  270.   T$="*"+Chr$(0)
  271.   XOPENWIN
  272.   '
  273.   EXECBASE=4
  274.   EXECBASE=Leek(EXECBASE)
  275.   T$=Chr$(10)+"Vector....:  Original:  Pointer.:  Address.:"+Chr$(10)
  276.   T$=T$+String$("-",44)+Chr$(10)
  277.   '
  278.   For I=0 To 4
  279.     Read N$,OFFSET
  280.     ADR=EXECBASE+OFFSET
  281.     N=Leek(ADR)
  282.     If N Then V$=Chr$($9B)+"0;32;40m"
  283.     V$=V$+Hex$(N,8)+Chr$($9B)+"0;31;40m"
  284.     T$=T$+N$+" "+"$00000000  "+V$+"  "+Hex$(ADR,8)+Chr$(10)
  285.     V$=""
  286.   Next 
  287.   T$=T$+Chr$($9B)+"0;33;40m"+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$(10)+Chr$($9B)+"0;31;40m"
  288.   XWRITE
  289.   '
  290.   XCLOSE
  291.   '  
  292.   Data "ColdCapture ",$2A
  293.   Data "CoolCapture ",$2E
  294.   Data "WarmCapture ",$32
  295.   Data "KickMemPtr  ",$222
  296.   Data "KickTagPtr  ",$226
  297. End Proc
  298. Procedure _USAGE
  299.   T$=Chr$($9B)+"0;32;40mUsage: AMC [-? -G -S -V -F -R -C]"+Chr$(10)+Chr$($9B)+"0;31;40m"
  300.   T$=T$+"  -?=Usage...... ( CTRL+F1 )"+Chr$(10)
  301.   T$=T$+"  -G=General.... ( CTRL+F2 )"+Chr$(10)
  302.   T$=T$+"  -S=Show Memory ( CTRL+F3 )"+Chr$(10)
  303.   T$=T$+"  -V=Show Vector ( CTRL+F4 )"+Chr$(10)
  304.   T$=T$+"  -F=Search..... ( CTRL+F5 )"+Chr$(10)
  305.   T$=T$+"  -R=RunBack.... ( CTRL+F6 )"+Chr$(10)
  306.   T$=T$+"  -C=ColdReset.. ( CTRL+F7 )"+Chr$(10)
  307.   T$=T$+"  when using option -R, AMC must started like Run AMC -R"+Chr$(10)+Chr$($9B)+"0;33;40m"
  308.   T$=T$+"AmosMemoryCheck ( AMC ) V1.00 02/10/92 by Volker Stepprath"+Chr$(10)+Chr$($9B)+"0;31;40m"
  309.   CLITEXT
  310. End Proc
  311. '
  312. '**** Öffnen/Schreiben/Schließen ****
  313. '
  314. Procedure CLITEXT
  315.   XOPENWIN
  316.   XWRITE
  317.   XCLOSE
  318. End Proc
  319. '
  320. '**** Fensters/Datei öffnen **** 
  321. '
  322. Procedure XOPENWIN
  323.   If DATEI$="" Then DATEI$="*"
  324.   DATEI$=DATEI$+Chr$(0)
  325.   Dreg(1)=Varptr(DATEI$)
  326.   Dreg(2)=1006
  327.   HANDLE=Doscall(-30)
  328.   DATEI$=""
  329. End Proc
  330. '
  331. '**** Text schreiben ****
  332. '
  333. Procedure XWRITE
  334.   If HANDLE=0 Then Pop Proc
  335.   T$=T$+Chr$(0)
  336.   Dreg(1)=HANDLE
  337.   Dreg(2)=Varptr(T$)
  338.   Dreg(3)=Len(T$)
  339.   XWRITE=Doscall(-48)
  340. End Proc
  341. '
  342. '**** Text von Tastatur lesen **** 
  343. '
  344. Procedure XREAD
  345.   If HANDLE=0 Then Pop Proc
  346.   T$=T$+Chr$(0)
  347.   Dreg(1)=HANDLE
  348.   Dreg(2)=Varptr(T$)
  349.   Dreg(3)=Len(T$)
  350.   XREAD=Doscall(-42)
  351.   T$=Left$(T$,XREAD-1)
  352. End Proc
  353. '
  354. '**** Fensters/Datei schließen ****
  355. '
  356. Procedure XCLOSE
  357.   If HANDLE=0 Then Pop Proc
  358.   Dreg(1)=HANDLE
  359.   XCLOSE=Doscall(-36)
  360. End Proc
  361.