home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d03xx / d0331.lha / PatchLoadSeg / patchloadseg.s < prev    next >
Text File  |  1990-03-21  |  2KB  |  120 lines

  1. start    move.l    4,a6
  2.     lea    DosName,a1
  3.     move.l    378(a6),a0    ;Library list
  4.     jsr    -276(a6)    ;FindName 
  5.  
  6.     move.l    d0,a1        ;DosBase
  7.  
  8.     add.l    #$4e,d0
  9.  
  10.     jsr    -132(a6)    ;Forbid
  11.     move.l    d0,OldLoadSeg+2
  12.  
  13.     move.w    #$4ef9,-150(a1)
  14.     move.l    #NewLoadSeg,-148(a1)
  15.     jsr    -138(a6)    ;Permit
  16.  
  17.     clr.l    start-4        ;Remove Next hunk so NewLoadSeg stays 
  18.                 ;in memory after unload this program.
  19.     move.l    a1,a6
  20.     jsr    -60(a6)
  21.     move.l    d0,d1
  22.     move.l    #TextBegin,d2
  23.     move.l    #TextEnd-TextBegin,d3
  24.     jsr    -48(a6)        
  25.     clr.l    d0
  26.     rts
  27.  
  28. DosName
  29.     dc.b    'dos.library',0
  30. TextBegin:
  31.     dc.b    "PatchLoadSeg installed.",10
  32.     dc.b    "V1.20 Made by:",10
  33.     dc.b    "Pieter van Leuven",10
  34.     dc.b    "Markt 19A",10
  35.     dc.b    "5688 AJ  Oirschot",10
  36.     dc.b    "Holland",10
  37. TextEnd:
  38.  
  39.     section    "RES",code
  40.     dc.l    'Pvl.'
  41.     dc.l    'V1.2'
  42. NewLoadSeg
  43.     moveq.l    #$ed,d0
  44. OldLoadSeg
  45.     jsr    $0        ;Original LoadSeg
  46.  
  47.     movem.l    d0-d7/a0-a6,-(sp)
  48.     move.l    d0,d7
  49. loop
  50.     lsl.l    #2,d0        ;*4
  51.     move.l    d0,a1
  52.     lea    tablelink,a0    ;Table with information about viruses
  53. tableloop
  54.     move.w    (a0)+,d2    ;Get offset
  55.     beq.s    next_hunk    ;End of table. Goto next_hunk
  56.     move.l    (a0)+,d3    ;d3 = Value to check
  57.     cmp.l    0(a1,d2.w),d3    
  58.     beq.s    Kill        ;Virus detected and disable
  59.     bra.s    tableloop    ;Next Entry of table
  60. next_hunk
  61.     move.l    (a1),d0        ;d0 is pointer to next hunk
  62.     bne.s    loop        ;Check this new hunk
  63.  
  64.  
  65. quit    movem.l    (sp)+,d0-d7/a0-a6
  66.     rts
  67.  
  68. Kill     move.l    4,a6
  69.     jsr     -132(a6)
  70.     bsr.s    alertprog
  71.     move.l    4,a6
  72.     jsr    -138(a6)
  73.     move.l    d7,d0        ;Get pointer to first segment from stack
  74.     move.l    d0,d1
  75.     lsl.l    #2,d1        ;* 4
  76.     move.l    d1,a1
  77.     move.l    #$42804e75,4(a1)    ;Place new code in program 
  78.                     ;    clr.l    d0
  79.                     ;    rts
  80.         bra.s    quit
  81.  
  82. alertprog
  83.     lea    IntuitionText,a1
  84.     move.l    378(a6),a0    ;Library list
  85.     jsr    -276(a6)    ;FindName (intuition.library)
  86.     move.l    d0,a6
  87.     move.l    #40,d1        ;height of alert
  88.     clr.l    d0
  89.     lea    Alert,a0
  90.     jsr    -90(a6)        ;display alert
  91.     rts
  92.  
  93. tablelink
  94.     dc.w    $d4        ;IQR-virus offset 
  95.     dc.l    $b1985680    ;Control Value
  96.  
  97.     dc.w    $58        ;TTV1-virus
  98.     dc.l    $421fffb9
  99.  
  100.     dc.w    $40        ;Revenge of Lamer ....
  101.     dc.l    $b1985780
  102.  
  103.     dc.w    $440        ;Xeno
  104.     dc.l    $d8e5eeef
  105.  
  106.     dc.w    $40        ;Test program
  107.     dc.l    $45678901
  108.  
  109.     dc.w    0        ;End
  110.  
  111. Alert
  112.     dc.w    140
  113.     dc.b    22
  114.     dc.b    'Link-Virus Detected. ',0
  115.     dc.b    0
  116.  
  117. IntuitionText
  118.     dc.b    'intuition.library',0
  119.     even
  120.