home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 10 / Fresh_Fish_10_2352.bin / new / util / virus / anticiclovir / anticiclovir.s < prev    next >
Text File  |  1992-09-02  |  118KB  |  5,861 lines

  1. ; program       : AntiCicloVir
  2. ; programsort   : Viruskiller
  3. ; versionsnr.   : 2.4a
  4. ; genesis date  : 13.03.1995
  5. ; author        : Mathias Gutt
  6. ;                 Kantstr. 16
  7. ;          21335 Lüneburg
  8. ;          Tel.: 04131/49624
  9. ;          Germany
  10. ; This program shows a simple form of virus-hunting
  11. ; and so I hope, some novices can find some useful
  12. ; routines in AntiCicloVir.
  13. ; AntiCicloVir is completely Public Domain and that
  14. ; means, you can do everything with the program
  15. ; and this source, but read the docs !!!
  16. ; You can put out some routines from AntiCicloVir, to
  17. ; include them into your own program, or you may use
  18. ; AntiCicloVir as base for your own viruskiller, but
  19. ; it is not allowed, to use the same name !!!
  20. ; AntiCicloVir shows the system-vectors to you,
  21. ; looks for known viruses in memory, in the bootsectors
  22. ; of every disk from every drive and checks directories
  23. ; and files for viruses ...
  24. ; I used the masterseka v1.51 to write this one.
  25. ; Please excuse my bad anglian !!!
  26. ; I know, that this source is not the best one, but
  27. ; if you have some questions, please write me !
  28.  
  29.  
  30. Execbase = 4
  31. MEMF_PUBLIC = 1
  32. MEMF_CHIP = 2
  33. MEMF_FAST = 4
  34. MEMF_CLEAR = 65536
  35. MEMF_LARGEST = 131072
  36.  
  37. Addport = -354
  38. AllocCInfo = -30
  39. AllocMem = -198
  40. AllocSignal = -330
  41. AutoRequest = -348
  42. CheckBoot = -$2A
  43. Close = -36
  44. CloseDevice = -450
  45. CloseLibrary = -414
  46. CloseWindow = -72
  47. CopyMem = -624
  48. CurrentDir = -126
  49. Delay = -$00C6
  50. DeleteFile = -$0048
  51. DetermineFile = -42
  52. DisplayAlert = -90
  53. DoIORoutine = -456
  54. Examine = -102
  55. ExNext = -108
  56. FreeCInfo = -36
  57. FreeMem = -210
  58. FreeSignal = -336
  59. FindName = -276
  60. FindTask = -294
  61. GetMsg = -372
  62. Lock = -84
  63. Open = -$001E
  64. OpenDeviceRoutine = -444
  65. OldOpenLibrary = -408
  66. OpenWindow = -204
  67. Read = -42
  68. ReadBBBF = -$1E
  69. RemPort = -360
  70. Rename = -78
  71. rlAllocTableMem = -$1E
  72. rlFreeTableMem = -$24
  73. rlGetFileVName = -$2A
  74. rlGetMemVName = -$3C
  75. rlKillMemV = -$42
  76. SetProtection = -186
  77. SetWindowTitles = -276
  78. UnLock = -90
  79. UnPack = -48
  80. WaitIO = -474
  81. WaitPort = -384
  82. Write = -$0030
  83.  
  84. CloseLib: MACRO            ;Macro
  85. move.l ExecBase,a6        ;get ExecBase
  86. move.l ?1(pc),a1        ;get LibBase
  87. jsr CloseLibrary(a6)        ;call subroutine
  88. ENDM                ;end of macro
  89.  
  90. Requester: MACRO        ;Macro
  91. lea AutoRequestTextPtr(pc),a0    ;get Ptr of AutoRequestText
  92. move.l ?1,(a0)            ;insert address of Outputtext in AutoRequestText
  93. lea GadgetTextPtr(pc),a0    ;get Ptr of GadgetText
  94. move.l ?2,(a0)            ;insert address of OutputText in GadgetText
  95. lea GadgetText2Ptr(pc),a0    ;get Ptr of next GadgetText
  96. move.l ?3,(a0)            ;insert address of OutputText in next Gadget
  97. move.l #0,a0            
  98. lea AutoRequestText(pc),a1    ;get RequestText-structure    
  99. lea GadgetText(pc),a2        ;get GadgetText-structure
  100. lea GadgetText2(pc),a3        ;get GadgetText2-structure
  101. moveq #0,d0            ;no IDCMP-Flag
  102. moveq #0,d1            ;no IDMCP-Flag
  103. move.l ?4,d2            ;get Width for Request
  104. move.l ?5,d3            ;get Height for Request
  105. move.l Intuibase(pc),a6        ;get Intuibase
  106. jsr AutoRequest(a6)        ;call subroutine
  107. ENDM                ;end of macro
  108.  
  109. Requesterold: MACRO        ;Macro
  110. move.l #0,a0
  111. lea ?1,a1            ;get RequestText-structure
  112. lea ?2,a2            ;get GadgetText-structure
  113. lea ?3,a3            ;get Gadget2Text-structure
  114. moveq #0,d0            ;no IDCMP-Flag
  115. moveq #0,d1            ;no IDCMP-Flag
  116. move.l ?4,d2            ;get Width for Requester
  117. move.l ?5,d3            ;get Heigth for Requester
  118. move.l Intuibase(pc),a6        ;get Intuibase
  119. jsr AutoRequest(a6)        ;call subroutine
  120. ENDM                ;end of macro
  121.  
  122.  
  123. move.l a0,ParamAddress        ;get ParamAddress
  124. move.l d0,ParamLength        ;get ParamLength
  125.  
  126. ;WBStartup-Head
  127. ;This routine tries to find out, if AntiCicloVir was
  128. ;called from the Workbench or from the Shell.
  129.  
  130. move.l ExecBase,a6        ;get ExecBase
  131. suba.l a1,a1            ;get TaskName (=0)
  132. jsr FindTask(a6)        ;call subroutine
  133. move.l d0,a4            ;write task-address to a4
  134. tst.l 172(a4)            ;CLI or WB ?
  135. bne clicall            ;was called from shell
  136.  
  137. lea 92(a4),a0            ;Ptr of MsgPort
  138. jsr WaitPort(a6)        ;call subroutine
  139. lea 92(a4),a0            ;Ptr of MsgPort
  140. jsr GetMsg(a6)            ;call subroutine
  141. bra WBcall            ;was called from WB
  142.  
  143. clicall:
  144. bsr CheckFirstMark        ;branch to subroutine
  145. move.l Paramaddress(pc),a0    ;get Paramaddress
  146.  
  147. cmp.b #"-",(a0)+        ;look for option-line
  148. bne ScanFiles            ;if <>0 branch to scanfiles
  149.  
  150. Option:
  151. cmp.b #"c",(a0)            ;look for option c
  152. beq fastcheckset        ;if yes, branch to fastcheckset
  153. cmp.b #"m",(a0)            ;look for option m
  154. beq Clicall2            ;if yes, branch to Clicall2
  155.  
  156. fastcheckset:
  157. move.b #$FF,fastcheck        ;set fastcheck-flag
  158.  
  159. Clicall2:
  160. move.b #$FF,StartupFlag        ;set StartupFlag
  161.  
  162. WBcall:
  163. ; This one is a little color-cycling, to greet the
  164. ; user !
  165.  
  166. Colors:
  167. add.l #$00070007,d0
  168. cmp.l #$00FF00FF,d0
  169. bge AntiCicloVir
  170. move.w #1,d1
  171.  
  172. Colorcycling:
  173. move.b $dff005,d2
  174.  
  175. ColorcyclingLoop:
  176. move.l d0,$dff180
  177. move.l d0,$dff184
  178. cmp.b $dff005,d2
  179.  
  180. beq.s ColorcyclingLoop
  181. dbra d1,ColorCycling
  182. bra Colors
  183.  
  184. AntiCicloVir:
  185. bsr OpenDos            ;open DosLib
  186. cmp.l #0,d0            ;error ?
  187. beq Ende            ;Yes, end it !
  188. move.l d0,Dosbase        ;No, get DosBase
  189. bsr OpenIntui            ;open IntuiLib
  190. cmp.l #0,d0            ;error ?
  191. beq CloseDos            ;Yes, close DosLib
  192. move.l d0,Intuibase        ;No, get Intuibase
  193. bsr OpenBBBFLib            ;open BBBFLib
  194. move.l d0,BBBFBase        ;get BBBFBase
  195. bsr BBBFLibErrorCheck        ;branch to BBBFLibErrorCheck
  196. bsr OpenBrainFile        ;open BrainFile
  197. bsr BrainFileErrorCheck        ;branch to BrainFileErrorCheck
  198. bsr OpenRLLib            ;open RLLib
  199. move.l d0,RLBase        ;get RLBase
  200. bsr RLLibErrorCheck        ;branch to RLLibErrorCheck
  201. clr.l d0            ;clear d0
  202. bsr AllocTableMem        ;allocate memory for table
  203. move.l d0,RLStructPtr        ;get RLStructPtr
  204. cmp.b #$FF,StartupFlag        ;was Startup-flag set ?
  205. bne WBStart            ;No, branch to WBStart
  206. bsr OpenWin            ;open DOS-window
  207. cmp.l #0,d0            ;error ?
  208. beq CloseDos            ;Yes, close DosLib
  209. move.l d0,Handle        ;No, get Handle
  210.  
  211. WBStart:
  212. bsr vectors_table        ;show system-vectors
  213. cmp.b #$FF,StartupFlag        ;was Startup-flag set ?
  214. bne WBStart2            ;No, branch to WBStart2
  215. bsr Print            ;print my message
  216.  
  217. WBStart2:
  218. bsr CheckMem            ;check memory for viruses
  219. cmp.b #$FF,StartupFlag        ;was Startup-flag set ?
  220. bne WBStart3            ;No, branch to WBStart3
  221. bsr CloseWin            ;close DOS-Window
  222.  
  223. WBStart3:
  224. bsr FreeTableMem        ;free memory for table
  225. bsr CloseRLLib            ;close RLLib
  226. bsr CloseBBBFLib        ;close BBBFLib
  227. bsr CloseIntui            ;close IntuiLib
  228. bra CloseDos            ;close DosLib
  229.  
  230. ScanFiles:
  231. bsr OpenDos            ;open DosLib
  232. cmp.l #0,d0            ;error ?
  233. beq Ende            ;Yes, and good bye !
  234. move.l d0,Dosbase        ;No, get DosBase
  235. bsr OpenIntui            ;open IntuiLib
  236. cmp.l #0,d0            ;error ?
  237. beq CloseDos            ;Yes, end it !
  238. move.l d0,Intuibase        ;No, get Intuibase
  239. bsr OpenRLLib            ;open RLLib
  240. move.l d0,RLBase        ;get RLBase
  241. bsr RLLibErrorCheck        ;branch to RLLibErrorCheck
  242. clr.l d0            ;clear d0
  243. bsr AllocTableMem        ;allocate memory for table
  244. move.l d0,RLStructPtr        ;get RLStructPtr
  245. bsr OpenUnPackLib        ;open UnPackLib
  246. move.l d0,UPBase        ;get UPBase
  247. bsr UnPackLibErrorCheck        ;branch to UnPackLibErrorCheck
  248. clr.l d0            ;clear d0
  249. bsr DoAllocCInfo        ;allocate memory for CInfo-structure
  250. move.l d0,UPInfo        ;get UPInfo
  251. bsr OpenWin            ;open DOS-window
  252. cmp.l #0,d0            ;error ?
  253. beq CloseDos            ;Yes, close DosLib
  254. move.l d0,Handle        ;No, get Handle
  255. bsr Print            ;print my message
  256. bsr PrintScan            ;print scan-path
  257. move.b #$FF,fastcheck        ;set fastcheck-flag
  258. bsr CheckMem            ;check memory for viruses
  259. move.l ExecBase,a6        ;get ExecBase
  260. move.l #MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  261. move.l #260,d0            ;allocate 260 Bytes
  262. jsr AllocMem(a6)        ;connected CHIP-RAM !
  263. tst.l d0            ;error ?
  264. beq notenough            ;Yes, print notenough
  265. move.l d0,FileInfoBlockMem    ;No, get MemPtr
  266. move.l ExecBase,a6        ;get ExecBase
  267. move.l #MEMF_CHIP!MEMF_LARGEST,d1;allocate $5000 bytes
  268. move.l #$5000,d0        ;connected CHIP-RAM !
  269. jsr AllocMem(a6)        ;call subroutine
  270. tst.l d0            ;error ?
  271. beq notenough            ;Yes, print notenough
  272. move.l d0,FileMem        ;No, get MemPtr
  273. bsr GetLock            ;branch to GetLock
  274. cmp.l #0,d0            ;error ?
  275. beq ScanFilesEnd        ;Yes, end all !
  276. move.l d0,LockHandle        ;No, get Lock
  277. bsr ExamineIt            ;examine file
  278. cmp.l #0,d0            ;error ?
  279. beq FileTestEnd            ;Yes, branch to FileTestEnd
  280. cmp.b #$FE,FileFlag        ;check all ?
  281. beq DirectoryTest        ;Yes, checking directories
  282. move.l FileInfoBlockMem(pc),a0    ;No, get FileInfoBlock 
  283. cmp.l #0,4(a0)            ;directory ?
  284. ble FileTest            ;No, branch to filetest
  285.  
  286. DirectoryTest:            ;Yes !
  287. bsr MakeCurrentDir        ;branch to MakeCurrentDir
  288. move.l d0,OldLock        ;get old Lock
  289. cmp.b #$FE,FileFlag        ;check all ?
  290. beq SeekII2            ;Yes, branch to SeekII2 !
  291. bra Seek2            ;branch to Seek2
  292.  
  293. Seek:
  294. bsr CheckFile            ;branch to CheckFile
  295. Seek2:            
  296. bsr ExNextIt            ;get next FIB-datas
  297. cmp.l #0,d0            ;more datas ?
  298. bne Seek            ;Yes, branch to Seek
  299. bsr UnLockIt            ;No, unlock it
  300. bsr OldCurrentDir        ;branch to OldCurrentDir
  301. bra ScanFilesEnd        ;end scanfiles
  302.  
  303. SeekII:
  304. bsr CheckAllDirectories        ;branch to CheckAllDirectories
  305. move.l FileInfoBlockMem(pc),a0    ;get FIB-structure
  306. cmp.l #0,4(a0)            ;Directory ?
  307. ble SeekII2            ;No, branch to SeekII2
  308. move.l LockHandle(pc),-(sp)    ;save old lock
  309. move.l FileInfoBlockMem(pc),-(sp);save old FIB-structure-address
  310. add.l #1,subdirgen        ;count up !
  311.  
  312. move.l Dosbase(pc),a6        ;get DosBase
  313. move.l FileInfoBlockmem(pc),a0    ;get FIB-structure
  314. add.l #8,a0            ;get filename
  315. move.l a0,d1            ;write address of filename to d1
  316. move.l #-2,d2            ;use the read mode
  317. jsr Lock(a6)            ;call subroutine
  318.  
  319. move.l d0,Lockhandle        ;get new Lockhandle
  320.  
  321. bsr MakeCurrentDir        ;branch to MakeCurrentDir
  322.  
  323. move.l ExecBase,a6        ;get ExecBase
  324. move.l #MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  325. move.l #260,d0            ;allocate 260 bytes
  326. jsr AllocMem(a6)        ;call subroutine
  327. move.l d0,FileInfoBlockMem    ;get MemPtr
  328.  
  329. bsr ExamineIt            ;branch to ExamineIt
  330.  
  331. SeekII2:
  332. bsr ExNextIt            ;get next FIB-datas
  333. cmp.l #0,d0            ;more datas ?
  334. bne SeekII            ;Yes, branch to SeekII
  335. cmp.l #0,subdirgen        ;any more subdirectories ?
  336. beq SeekII3            ;No, branch to SeekII3
  337. sub.l #1,subdirgen        ;count down !
  338.  
  339. move.l ExecBase,a6        ;get ExecBase
  340. move.l FileInfoBlockMem(pc),a1    ;get FileInfoBlockMemPtr
  341. move.l #260,d0            ;deallocate 260 bytes
  342. jsr FreeMem(a6)            ;call subroutine
  343. move.l (sp)+,FileInfoBlockMem    ;get back address of old FIB-structure
  344.  
  345. bsr UnLockIt            ;branch to UnLockIt
  346. move.l (sp)+,Lockhandle        ;get back address of old lockhandle
  347.  
  348. bsr MakeCurrentDir        ;branch to MakeCurrentDir
  349. bra SeekII2            ;continue the Seek-loop !
  350.  
  351. SeekII3:
  352. bsr UnLockIt            ;No, unlock it
  353. bsr OldCurrentDir        ;branch to OldCurrentDir
  354. bra ScanFilesEnd        ;end scanfiles
  355.  
  356. FileTest:
  357. lea Directory(pc),a0        ;get Directory
  358. move.l ParamLength(pc),d0    ;get ParamLength
  359.  
  360. PathLoop:
  361. cmp.b #":",(a0)            ;look for :
  362. beq GetDirectoryname        ;Yes, get directoryname
  363. cmp.b #"/",(a0)+        ;look for /
  364. beq GetDirectoryname        ;Yes, get directoryname
  365. sub.l #1,d0            ;count down
  366. cmp.l #0,d0            ;zero ?
  367. bne PathLoop            ;No, continue loop !
  368. bra FileTest2            ;Yes, branch to FileTest2
  369.  
  370. GetDirectoryName:
  371. move.b #$FF,FileFlag        ;set FileFlag
  372. lea Directory(pc),a0        ;get Directory
  373. move.l ParamLength(pc),d0    ;get ParamLength
  374. add.l d0,a0            ;add lentgh to address of Directory
  375.  
  376. DirectoryNameLoop:
  377. cmp.b #":",(a0)            ;look for :
  378. beq MakeCurrentPath        ;Yes, branch to MakeCurrentPath
  379. cmp.b #"/",(a0)            ;look for /
  380. beq MakeCurrentPath        ;Yes, branch to MakeCurrentPath
  381. sub.l #1,a0            ;count down
  382. sub.l #1,d0            ;count down
  383. cmp.l #0,d0            ;zero ?
  384. bne DirectoryNameLoop        ;No, continue loop !
  385. bra FileTest2            ;Yes, branch to FileTest2
  386.  
  387. MakeCurrentPath:
  388. move.b #00,1(a0)        ;clear last byte
  389. bsr GetLock            ;get lock
  390. cmp.l #0,d0            ;error ?
  391. beq FileTestEnd            ;Yes, end FileTest
  392. move.l d0,FileLockHandle    ;No, get Lock
  393. bsr MakeCurrentFileDir        ;branch to MakeCurrentFileDir
  394. move.l d0,OldLock        ;get old Lock
  395.  
  396. FileTest2:
  397. bsr CheckFile            ;branch to CheckFile
  398. cmp.b #$FF,FileFlag        ;was FileFlag set ?
  399. bne FileTestEnd            ;No, end FileTest
  400.  
  401. bsr UnLockFilePath        ;Yes, unlock filepath
  402. bsr OldCurrentDir        ;branch to OldCurrentDir
  403.  
  404. FileTestEnd:
  405. bsr UnLockIt            ;unlock file
  406. bra ScanFilesEnd        ;end scanfiles
  407.  
  408. CheckFirstMark:
  409. move.l Paramaddress(pc),a0    ;get Paramaddress
  410. cmp.b #$22,(a0)            ;inverted commas ?
  411. beq GetPara2            ;Yes, branch to GetPara2
  412. bra GetPara            ;No, branch to GetPara
  413.  
  414. GetPara:
  415. move.l Paramaddress(pc),a0    ;get Paramaddress
  416. lea Directory(pc),a1        ;get Directory-address
  417.  
  418. ParaLoop:
  419. move.b (a0)+,(a1)+        ;copy Parameter to Directory
  420. cmp.b #" ",(a0)         ;Spacecode ?
  421. beq ParaLoopEnde        ;Yes, end the loop!
  422. cmp.b #$0A,(a0)            ;Returncode
  423. beq ParaLoopEndeII        ;Yes, end the loop !
  424. bra ParaLoop            ;No, continue loop !
  425.  
  426. ParaLoopEnde:
  427. add.l #1,a0            ;count up !
  428. move.b #0,(a1)            ;remove spacecode !
  429. bsr GetOption            ;branch to subroutine
  430. rts                ;return from subroutine
  431.  
  432. ParaLoopEndeII:
  433. move.b #0,(a1)            ;remove returncode !
  434. rts                ;return from subroutine
  435.  
  436. GetPara2:
  437. move.l Paramaddress(pc),a0    ;get Paramaddress
  438. add.l #1,a0            ;count up !
  439. lea Directory(pc),a1        ;get Directory-address
  440.  
  441. Para2Loop:
  442. move.b (a0)+,(a1)+        ;copy Parameter to Directory
  443. cmp.b #$22,(a0)         ;inverted commas ?
  444. bne Para2Loop            ;No, continue the loop !
  445.  
  446. Para2LoopEnde:
  447. add.l #1,a0            ;count up !
  448. bsr GetOption            ;branch to subroutine
  449. rts                ;return from subroutine
  450.  
  451. GetOption:
  452. lea All(pc),a1          ;get option-def-address
  453. cmp.b #"-",(a0)            ;hyphen ?
  454. bne GetOptionLoopEnd        ;No, end the GetOptionLoop !
  455.  
  456. clr.l d0            ;clear d0 !
  457. move.l #5, d1            ;set count in d1 !
  458.  
  459. GetOptionLoop:
  460. sub.l #1,d1            ;count down !
  461. cmp.l #0,d1            ;zero ?
  462. beq GetOptionLoopSet        ;Yes, end GetOptionLoop !
  463. move.b (a1)+,d0            ;get one byte from option-def in d0
  464. cmp.b (a0)+,d0          ;option-def = option ??
  465. bne GetOptionLoopEnd        ;No, end the loop !
  466. bra GetOptionLoop        ;Continue the loop !
  467.  
  468. GetOptionLoopSet:
  469. move.b #$FE,FileFlag        ;set FileFlag !
  470. GetOptionLoopEnd:
  471. rts                ;return from subroutine
  472.  
  473. OpenDos:
  474. move.l ExecBase,a6        ;get ExecBase
  475. lea Dosname(pc),a1        ;get LibName
  476. move.l #0,d0            ;get version
  477. jsr OldOpenLibrary(a6)        ;call subroutine
  478. rts                ;return from subroutine
  479.  
  480. OpenIntui:
  481. move.l ExecBase,a6        ;get ExecBase
  482. lea Intuiname(pc),a1        ;get LibName
  483. move.l #0,d0            ;get version
  484. jsr OldOpenLibrary(a6)        ;call subroutine
  485. rts                ;return from subroutine
  486.  
  487. OpenBBBFLib:
  488. move.l ExecBase,a6        ;get ExecBase
  489. lea BBBFName(pc),a1        ;get LibName
  490. move.l #0,d0            ;get version
  491. jsr OldOpenLibrary(a6)        ;call subroutine
  492. rts                ;return from subroutine
  493.  
  494. BBBFLibErrorCheck:
  495. cmp.l #0,BBBFBase        ;error ?
  496. beq BBBFLibErrDisplay        ;Yes, display it !
  497. rts                ;return from subroutine
  498.  
  499. OpenBrainFile:
  500. cmp.l #0,BBBFBase        ;BBBFBase available ?
  501. beq OpenBrainFileEnd        ;No, branch to OpenBrainFileEnd
  502. move.l BBBFBase(pc),a6        ;get BBBFBase
  503. lea BrainFileName(pc),a0    ;get BrainFileName
  504. clr.l d0            ;clear d0
  505. jsr ReadBBBF(a6)        ;call subroutine
  506. OpenBrainFileEnd:
  507. rts                ;return from subroutine
  508.  
  509. OpenRLLib:
  510. move.l ExecBase,a6        ;get ExecBase
  511. lea RLName(pc),a1        ;get LibName
  512. move.l #32,d0            ;get version
  513. jsr OldOpenLibrary(a6)        ;call subroutine
  514. rts                ;return from subroutine
  515.  
  516. RLLibErrorCheck:
  517. cmp.l #0,RLBase            ;error ?
  518. beq RLLibErrDisplay        ;Yes, display it !
  519. rts                ;return from subroutine
  520.  
  521. OpenUnPackLib:
  522. move.l ExecBase,a6        ;get ExecBase
  523. lea UnPackName(pc),a1        ;get LibName
  524. move.l #0,d0            ;get version
  525. jsr OldOpenLibrary(a6)        ;call subroutine
  526. rts                ;return from subroutine
  527.  
  528. UnPackLibErrorCheck:
  529. cmp.l #0,UPBase            ;error ?
  530. beq UnPackErrDisplay        ;Yes, display it !
  531. rts                 ;return from subroutine
  532.  
  533. OpenWin:
  534. move.l Dosbase(pc),a6        ;get DosBase
  535. move.l #DOSWin,d1        ;get Windowdef-address
  536. move.l #1006,d2            ;use the new mode
  537. jsr Open(a6)            ;call subroutine
  538. rts                ;return from subroutine
  539.  
  540. Print:
  541. move.l #Text,d2            ;get Text-Startaddress
  542. move.l #Textende,d3        ;get Text-Endaddress
  543. bsr PrintDOSText        ;branch to subroutine
  544. rts                ;return from subroutine
  545.  
  546. PrintScan:
  547. move.l #ScanText,d2        ;get ScanText-Startaddress
  548. move.l #ScanTextend,d3        ;get ScanText-Endaddress
  549. bsr PrintDOSText        ;branch to subroutine
  550. rts                ;return from subroutine
  551.  
  552. notenough:
  553. move.l #notenoughText,d2    ;get Text-Startaddress
  554. move.l #notenoughTextende,d3    ;get Text-Endaddress
  555. bsr PrintDOSText        ;branch to subroutine
  556. rts                ;return from subroutine
  557.  
  558. AllocTableMem:
  559. cmp.l #0,RLBase            ;RLBase available ?
  560. beq AllocTableMemEnd        ;No, branch to AllocTableMemEnd
  561. move.l RLBase(pc),a6        ;get RLBase
  562. jsr rlAllocTableMem(a6)        ;call subroutine
  563. AllocTableMemEnd:
  564. rts                ;return from subroutine
  565.  
  566. DoAllocCInfo:
  567. cmp.l #0,UPBase            ;UPBase available ?
  568. beq DoAllocCInfoEnd        ;No, branch to DoAllocCInfoEnd
  569. move.l UPBase(pc),a6        ;get UPBase
  570. jsr AllocCInfo(a6)        ;call subroutine
  571. DoAllocCInfoEnd:
  572. rts                ;return from subroutine
  573.  
  574. FreeTableMem:
  575. cmp.l #0,RLStructPtr        ;RLStruct available ?
  576. beq FreeTableMemEnd        ;No, branch to FreeTableMemEnd
  577. move.l RLBase(pc),a6        ;get RLBase
  578. move.l RLStructPtr(pc),a0       ;get RLStructPtr
  579. jsr rlFreeTableMem(a6)        ;call subroutine
  580. FreeTableMemEnd:
  581. rts                ;return from subroutine
  582.  
  583. DoFreeCInfo:
  584. cmp.l #0,UPInfo            ;UPInfo available ?
  585. beq DoFreeCInfoEnd        ;No, branch to DoFreeCInfoEnd
  586. move.l UPBase(pc),a6        ;get UPBase
  587. move.l UPInfo(pc),a0        ;get UPInfo
  588. jsr FreeCInfo(a6)        ;call subroutine
  589. DoFreeCInfoEnd:
  590. rts                ;return from subroutine
  591.  
  592. NoMemAlert:
  593. move.l Intuibase(pc),a6        ;get Intuibase
  594. clr.l d0            ;clear d0
  595. move.l #40,d1            ;get Alert-Heigth
  596. lea string(pc),a0        ;get string-address
  597. jsr DisplayAlert(a6)        ;call subroutine
  598. rts                ;return from subroutine
  599.  
  600. BBBFLibErrDisplay:
  601. move.l Intuibase(pc),a6        ;get Intuibase
  602. clr.l d0            ;clear d0
  603. move.l #40,d1            ;get Alert-Heigth
  604. lea BBBFstring(pc),a0        ;get string-address
  605. jsr DisplayAlert(a6)        ;call subroutine
  606. rts                ;return from subroutine
  607.  
  608. RLLibErrDisplay:
  609. move.l Intuibase(pc),a6        ;get Intuibase
  610. clr.l d0            ;clear d0
  611. move.l #40,d1            ;get Alert-Heigth
  612. lea RemoveLinkstring(pc),a0    ;get string-address
  613. jsr DisplayAlert(a6)        ;call subroutine
  614. rts                ;return from subroutine
  615.  
  616. UnPackErrDisplay:
  617. move.l Intuibase(pc),a6        ;get Intuibase
  618. clr.l d0            ;clear d0
  619. move.l #40,d1            ;get Alert-Heigth
  620. lea UnPackstring(pc),a0        ;get sting-address
  621. jsr DisplayAlert(a6)        ;call subroutine
  622. rts                ;return from subroutine
  623.  
  624. BrainFileErrorCheck:
  625. cmp.l #0,d0            ;error ?
  626. blt DisplayBrainFileError    ;Yes, branch to DisplayBrainFileError
  627. rts                ;return from subroutine
  628.  
  629. DisplayBrainFileError:
  630. lea BBBFErrList(pc),a0        ;get BBBFErrList-address
  631. move.l #-1,d1            ;get counter
  632.  
  633. DisplayBrainFileErrorLoop:
  634. cmp.l d1,d0            ;d1 = d0 ?
  635. beq DisplayBrainFileErrorAlert  ;display error !
  636. sub.l #1,d1            ;count down !
  637. cmp.l #0,(a0)+            ;count up !
  638. cmp.l #-5,d1            ;more than four loop ?
  639. bne DisplayBrainFileErrorLoop    ;continue the loop !
  640. rts                ;return from subroutine
  641.  
  642. DisplayBrainFileErrorAlert:
  643. move.l Intuibase(pc),a6        ;get Intuibase
  644. clr.l d0            ;clear d0
  645. move.l #40,d1            ;get Alert-Height
  646. move.l (a0),a0            ;get string-address
  647. jsr DisplayAlert(a6)        ;call subroutine
  648. rts                ;return from subroutine
  649.  
  650. UPErr:
  651. move.l UPInfo(pc),a0        ;get UPInfo
  652. move.l 24(a0),d0        ;get ErrorNum
  653. move.l #1,d1            ;get counter
  654. lea UnPackErrlist(pc),a0    ;get UnPackErrlist-startaddress 
  655.  
  656. UPErrLoop:
  657. cmp.l d0,d1            ;d0 = d1 ?
  658. beq DisplayUPErr        ;Yes, DisplayUPErr !
  659. add.l #1,d1            ;count up !
  660. cmp.l #0,(a0)+            ;count up !
  661. cmp.l #17,d1            ;more than 16 loops ?
  662. bne UPErrLoop            ;No, continue the loop !
  663. bra FileVirusCheck        ;branch to subroutine
  664.  
  665.  
  666. DisplayUPErr:
  667. move.l (a0),d0
  668. Requester d0,#ContinueText,#ContinueText,#610,#70
  669. bra FileVirusCheck        ;branch to subroutine
  670.  
  671. CloseWin:
  672. move.l Handle(pc),d1        ;get Handle
  673. move.l Dosbase(pc),a6        ;get DosBase
  674. jsr Close(a6)            ;call subroutine
  675. rts                ;return from subroutine
  676.  
  677. CloseUnPackLib:
  678. cmp.l #0,UPBase            ;UPBase opened ?
  679. beq CloseUnPackLibEnd        ;No, do not close it !
  680. CloseLib UPBase            ;Yes, close it !
  681. CloseUnPackLibEnd:
  682. rts                ;return from subroutine
  683.  
  684. CloseRLLib:
  685. cmp.l #0,RLBase            ;RLBase opened ?
  686. beq CloseRLLibEnd        ;No, do not close it !
  687. CloseLib RLBase            ;Yes, close it !
  688. CloseRLLibEnd:
  689. rts                ;return from subroutine
  690.  
  691. CloseBBBFLib:
  692. cmp.l #0,BBBFBase        ;BBBFBase opened ?
  693. beq CloseBBBFBaseEnd        ;No, do not close it !
  694. CloseLib BBBFBase        ;Yes, close it !
  695. CloseBBBFBaseEnd:
  696. rts                ;return from subroutine
  697.  
  698. CloseIntui:
  699. CloseLib Intuibase        ;close IntuiLib
  700. rts                ;return from subroutine
  701.  
  702. CloseDos:
  703. CloseLib DosBase        ;close DosLib
  704. clr.l d0            ;clear d0
  705.  
  706. Ende:
  707. rts                ;return from subroutine
  708.  
  709. GetLock:
  710. move.l Dosbase(pc),a6        ;get DosBase
  711. move.l #Directory,d1        ;get Directory
  712. move.l #-2,d2            ;use the read mode
  713. jsr Lock(a6)            ;call subroutine
  714. rts                ;return from subroutine
  715.  
  716. MakeCurrentDir:
  717. move.l Dosbase(pc),a6        ;get DosBase
  718. move.l LockHandle(pc),d1    ;get Lock
  719. jsr CurrentDir(a6)        ;call subroutine
  720. rts                ;return from subroutine
  721.  
  722. MakeCurrentFileDir:
  723. move.l Dosbase(pc),a6        ;get DosBase
  724. move.l FileLockHandle(pc),d1    ;get Lock
  725. jsr CurrentDir(a6)        ;call subroutine
  726. rts                ;return from subroutine
  727.  
  728. ExamineIt:
  729. move.l Dosbase(pc),a6        ;get DosBase
  730. move.l LockHandle(pc),d1    ;get Lock
  731. move.l FileInfoBlockMem(pc),d2    ;get FileInfoBlock-structure
  732. jsr Examine(a6)            ;call subroutine
  733. rts                ;return from subroutine
  734.  
  735. ExNextIt:
  736. move.l Dosbase(pc),a6        ;get DosBase
  737. move.l LockHandle(pc),d1    ;get Lock
  738. move.l FileInfoBlockMem(pc),d2     ;get FileInfoBlock-structure
  739. jsr ExNext(a6)            ;call subroutine
  740. rts                ;return from subroutine
  741.  
  742. UnLockIt:
  743. move.l Dosbase(pc),a6        ;get DosBase
  744. move.l LockHandle(pc),d1    ;get Lock
  745. jsr UnLock(a6)            ;call subroutine
  746. rts                ;return from subroutine
  747.  
  748. UnLockFilePath:
  749. move.l Dosbase(pc),a6        ;get DosBase
  750. move.l FileLockHandle(pc),d1    ;get FileInfoBlock-structure
  751. jsr UnLock(a6)            ;call subroutine
  752. rts                ;return from subroutine
  753.  
  754. OldCurrentDir:
  755. move.l Dosbase(pc),a6        ;get DosBase
  756. move.l OldLock(pc),d1        ;get old lock
  757. jsr CurrentDir(a6)        ;call subroutine
  758. rts                ;return from subroutine
  759.  
  760. ScanFilesEnd:
  761. move.l ExecBase,a6        ;get ExecBase
  762. move.l #260,d0            ;deallocate 260 Bytes
  763. move.l FileInfoBlockMem(pc),a1    ;memory from the
  764. jsr FreeMem(a6)            ;FileInfoBlock-structure
  765.  
  766. move.l ExecBase,a6        ;get ExecBase
  767. move.l #$5000,d0        ;deallocate $5000 Bytes
  768. move.l FileMem(pc),a1        ;memory from the
  769. jsr Freemem(a6)            ;filebuffer
  770.  
  771. bsr CloseWin            ;close DOS-window
  772. bsr FreeTableMem        ;free Table-Memory
  773. bsr DoFreeCInfo            ;free CInfo-Memory
  774. bsr CloseUnPackLib        ;close UnPackLib
  775. bsr CloseRLLib            ;close RLLib
  776. bsr CloseIntui            ;close IntuiLib
  777. bra CloseDos            ;close DosLib
  778.  
  779. even
  780. string:
  781. dc.b 0,200,10,`      NOT ENOUGH MEMORY !`,0
  782. dc.b 0,0,0,0
  783.  
  784. even
  785. BBBFstring:
  786. dc.b 0,200,10,`  Can not open Bootblock.library !`,0
  787. dc.b 0,0,0,0
  788.  
  789. even
  790. BBBFErrList:
  791. dc.l BBBFErr1String
  792. dc.l BBBFErr2String
  793. dc.l BBBFErr3String
  794. dc.l BBBFErr4String
  795.  
  796. even
  797. BBBFErr1string:
  798. dc.b 0,200,10,`  Can not open brainfile !!!`,0
  799. dc.b 0,0,0,0
  800.  
  801. even
  802. BBBFErr2string:
  803. dc.b 0,200,10,`  Brainfile corrupt error !`,0
  804. dc.b 0,0,0,0
  805.  
  806. even
  807. BBBFErr3string:
  808. dc.b 0,200,10,`  Brainfile already loaded !`,0
  809. dc.b 0,0,0,0
  810.  
  811. even
  812. BBBFErr4string:
  813. dc.b 0,200,10,`  Not enough memory for brainfile !`,0
  814. dc.b 0,0,0,0
  815.  
  816. even
  817. RemoveLinkstring:
  818. dc.b 0,200,10,`  Can not open removelink.library !`,0
  819. dc.b 0,0,0,0
  820.  
  821. even
  822. Unpackstring:
  823. dc.b 0,200,10,`  Can not open unpack.library !`,0
  824. dc.b 0,0,0,0
  825.  
  826. even
  827. Dosname:
  828. dc.b `dos.library`,0
  829.  
  830. even
  831. Intuiname:
  832. dc.b `intuition.library`,0
  833.  
  834. even
  835. BBBFName:
  836. dc.b `Bootblock.library`,0
  837.  
  838. even
  839. RLName:
  840. dc.b `removelink.library`,0
  841.  
  842. even
  843. UnpackName:
  844. dc.b `unpack.library`,0
  845.  
  846. even
  847. BrainFileName:
  848. dc.b `:L/Bootblock.brainfile`,0
  849.  
  850. even
  851. Dosbase:
  852. dc.l 0
  853.  
  854. Intuibase:
  855. dc.l 0
  856.  
  857. BBBFBase:
  858. dc.l 0
  859.  
  860. RLBase:
  861. dc.l 0
  862.  
  863. RLStructPtr:
  864. dc.l 0
  865.  
  866. UPBase:
  867. dc.l 0
  868.  
  869. UPInfo:
  870. dc.l 0
  871.  
  872. Handle:
  873. dc.l 0
  874.  
  875. DateiHandle:
  876. dc.l 0
  877.  
  878. LockHandle:
  879. dc.l 0
  880.  
  881. FileLockHandle:
  882. dc.l 0
  883.  
  884. OldLock:
  885. dc.l 0
  886.  
  887. FileInfoBlockMem:
  888. dc.l 0
  889.  
  890. FIBBackup:
  891. dc.l 0
  892.  
  893. FileMem:
  894. dc.l 0
  895.  
  896. HunkPos:
  897. dc.l 0
  898.  
  899. Paramaddress:
  900. dc.l 0
  901.  
  902. ParamLength:
  903. dc.l 0
  904.  
  905. subdirgen:
  906. dc.l 0
  907.  
  908. ScanText:
  909. dc.b $9b,`3;31m`
  910. dc.b `... scanning `
  911. even
  912. Directory:
  913. blk.b 500,0
  914. dc.b ` for link-, file- & diskvalidator-viruses, trojans an
  915. d bombs:`,10,10,10
  916. dc.b $9b,`0;31m`
  917. ScanTextend:
  918.  
  919. even
  920. Space:
  921. blk.b 80,0
  922.  
  923. Sign:
  924. dc.b 0
  925.  
  926. fastcheck:
  927. dc.b 0
  928.  
  929. StartupFlag:
  930. dc.b 0
  931.  
  932. FileFlag:
  933. dc.b 0
  934.  
  935. even
  936. All:
  937. dc.b `-all`,10
  938.  
  939. even
  940. DOSWin:
  941. dc.b `*`,0
  942.  
  943. even
  944. Text:
  945. dc.b ` `,10
  946. dc.b $9b,`1;31m`
  947. dc.b `               AntiCicloVir `
  948. dc.b $9b,`3;31m`
  949. dc.b `- Virus-Statikum Version 2.4a`,10
  950. dc.b `       (C) 1992-1995 by Matthias Gutt, Kantstr.16 , 21335 Lüneburg , Germany`,10
  951. dc.b ` `,10
  952. dc.b $9b,`0;33m`
  953. dc.b `KNOWN VIRUSES COUNT:`,10
  954. dc.b `Bootblock-Viruses     : 188 + Bootblock.library`,10
  955. dc.b `Linkviruses           :  15 + removelink.library`,10
  956. dc.b `Fileviruses           :  28 + removelink.library`,10
  957. dc.b `Disk-Validator-Viruses:   7 + removelink.library`,10
  958. dc.b `Trojans               :  11 + removelink.library`,10
  959. dc.b `Bombs                 :  17 + removelink.library`,10
  960. dc.b `---------------------------`,10
  961. dc.b `ENEMIES (TOTAL)       : 266 + SHI known viruses`,10
  962.  
  963. dc.b `Usage: AntiCicloVir [pathname [-all]]/[-c]/[-m]`,10
  964. dc.b `OPTIONS TABLE:`,10
  965. dc.b `-c = fast memorycheck`,10
  966. dc.b `-m = memorycheck + installing background task for looking`,10
  967. dc.b `     on every inserted disk for Bootblock- + Disk-Validator-viruses`,10
  968. dc.b ` `,10
  969. dc.b $9b,`0;31m`
  970. Textende:
  971.  
  972. even
  973. notenoughText:
  974. dc.b ` `,10
  975. dc.b `                            Not enough memory !`,10
  976.  
  977. notenoughTextende:
  978.  
  979. even
  980. CheckAllDirectories:
  981. cmp.l #0,subdirgen        ;parent dir ?
  982. beq CheckAllDirectories2    ;Yes, branch to CheckAllDirectories2
  983.  
  984. move.l subdirgen(pc),d0        ;get subdirgen
  985. mulu #4,d0            ;multiplicate subdirgen
  986.  
  987. move.l Dosbase(pc),a6        ;get Dosbase
  988. move.l Handle(pc),d1        ;get Handle
  989.  
  990. lea Space(pc),a0        ;get Space-address
  991. move.l a0,d2            ;copy a0 to d2
  992.  
  993. Spaceloop:
  994. move.b #" ",(a0)+        ;write spaces !
  995. sub.l #1,d0            ;count down !
  996. cmp.l #0,d0            ;zero ?
  997. bne Spaceloop            ;No, continue the loop !
  998.  
  999. sub.l d2,a0            ;subtract startaddress of Space from its endaddress
  1000. move.l a0,d3            ;get size
  1001. jsr Write(a6)            ;call subroutine
  1002.  
  1003. CheckAllDirectories2:
  1004. move.l Dosbase(pc),a6        ;get Dosbase
  1005. move.l Handle(pc),d1        ;get Handle
  1006. move.l FileInfoBlockMem(pc),d2    ;get FIB-structure
  1007. add.l #8,d2            ;get filename
  1008. move.l d2,a0            ;copy d2 to a0
  1009.  
  1010. TextLoop2:
  1011. cmp.b #$00,(a0)+        ;zerobyte ?
  1012. bne TextLoop2            ;No, continue the loop !
  1013.  
  1014. sub.l d2,a0            ;Yes, subtract end from startaddress
  1015. move.l a0,d3            ;get Textlength
  1016. jsr Write(a6)            ;call subroutine
  1017. bra Loadfile            ;branch to Loadfile !
  1018.  
  1019. CheckFile:
  1020. move.l #30,d0            ;get counter
  1021. lea FileNameText(pc),a0        ;get FileNameText-address
  1022.  
  1023. ClearFileNameTextLoop:
  1024. move.b #$20,(a0)+        ;clear all bytes with spaces
  1025. sub.l #1,d0            ;count down
  1026. cmp.l #0,d0            ;zero ?
  1027. bne ClearFileNameTextLoop    ;No, continue loop !
  1028.  
  1029. move.l FileInfoBlockMem(pc),a0    ;get FIB-structure
  1030. add.l #8,a0            ;get filename
  1031. lea FileNameText(pc),a1        ;get address of FileNamebuffer
  1032. move.l #30,d0            ;create counter
  1033.  
  1034. NameLoop:
  1035. move.b (a0)+,(a1)+        ;write filename to filenamebuffer
  1036. cmp.b #00,(a0)            ;look for zero
  1037. beq NameLoopEnd            ;Yes, end the loop !
  1038. sub.l #1,d0            ;count down
  1039. cmp.l #0,d0            ;zero ?
  1040. bne NameLoop            ;No, continue the loop !
  1041. NameLoopEnd:
  1042. move.l #FileNameText,d2        ;get FileNamebuffer-Startaddress
  1043. move.l #FileNameTextende,d3    ;get FileNamebuffer-Endaddress
  1044. bsr PrintDOSText        ;branch to subroutine
  1045.  
  1046. move.l FileInfoBlockMem(pc),a0    ;get FIB-structure
  1047. cmp.l #0,4(a0)            ;Directory ?
  1048. ble Sizehex            ;No, get filesize
  1049.  
  1050. move.l #DirText,d2        ;get DirText-Startaddress
  1051. move.l #DirTextende,d3        ;get DirText-Endaddress
  1052. bsr PrintDOSText        ;branch to subroutine
  1053. bra Protection            ;branch to Protection
  1054.  
  1055. Sizehex:
  1056. move.l FileInfoBlockMem(pc),a6    ;get FIB-structure
  1057. move.l 124(a6),d2        ;get Size-address
  1058. lea Length(pc),a0        ;get Sizebuffer-address
  1059. bsr hex                ;hex it !
  1060.  
  1061. move.l #SizeText,d2        ;get SizeText-Startaddress
  1062. move.l #SizeTextende,d3        ;get SizeText-Endaddress
  1063. bsr PrintDOSText        ;branch to subroutine
  1064.  
  1065. Protection:
  1066. move.l PBits(pc),ProtectText    ;write Protectionbits to the buffer
  1067.  
  1068. lea ProtectText(pc),a0        ;get ProtectText-Startaddress
  1069. move.l FileInfoBlockMem(pc),a6    ;get FIB-structure
  1070. move.l #03,d0            ;create counter
  1071.  
  1072. ProtectionLoop:
  1073. btst d0,116(a6)            ;is Protectionbit set ?
  1074. bne SetLine            ;Yes, write line !
  1075. ProtectionLoop2:
  1076. cmp.b #0,(a0)+            ;count up
  1077. sub.l #1,d0            ;count down
  1078. cmp.l #0,d0            ;lower than zero ?
  1079. bge ProtectionLoop        ;No, continue the loop !
  1080. bra ShowPBits            ;Yes, show Protectionbits
  1081.  
  1082. SetLine:
  1083. move.b #`-`,(a0)        ;write line
  1084. bra ProtectionLoop2        ;branch back to loop !
  1085.  
  1086. ShowPBits:
  1087. move.l Dosbase(pc),a6        ;get DosBase
  1088. move.l Handle(pc),d1        ;get Handle
  1089. move.l #ProtectText,d2        ;get ProtectText-Startaddress
  1090. move.l #8,d3            ;get Textlength
  1091. jsr Write(a6)            ;call subroutine
  1092.  
  1093. move.l Dosbase(pc),a6        ;get DosBase
  1094. move.l Handle(pc),d1        ;get Handle
  1095. move.l FileInfoBlockMem(pc),d2    ;get FIB-structure
  1096. add.l #144,d2            ;get CommentText-address
  1097. move.l d2,a0            ;copy d2 to a0
  1098. TextLoop:
  1099. cmp.b #$00,(a0)+        ;zerobyte ?
  1100. bne TextLoop            ;No, continue the loop !
  1101. sub.l d2,a0            ;Yes, subtract end- from startaddress
  1102. move.l a0,d3            ;get Textlength
  1103. jsr Write(a6)            ;call subroutine
  1104.  
  1105. Loadfile:
  1106. move.l Dosbase(pc),a6        ;get DosBase
  1107. move.l FileInfoBlockMem(pc),d1    ;get FIB-structure
  1108. add.l #8,d1            ;get filename
  1109. move.l #1005,d2            ;use the old mode
  1110. jsr Open(a6)            ;call subroutine
  1111. cmp.l #0,d0            ;error ?
  1112. beq OK2                ;Yes, end CheckFile
  1113. move.l d0,Dateihandle        ;No, get Dateihandle
  1114.  
  1115. move.l Dosbase(pc),a6        ;get DosBase
  1116. move.l Dateihandle(pc),d1    ;get Dateihandle
  1117. move.l FileMem(pc),d2        ;get Filebuffer
  1118. move.l #$5000,d3        ;read $5000 bytes
  1119. jsr Read(a6)            ;call subroutine
  1120.  
  1121. cmp.l #0,UPBase            ;UPBase available ?
  1122. beq FileVirusCheck        ;No, branch to FileVirusCheck
  1123. move.l UPBase(pc),a6        ;get UPBase
  1124. cmp.l #0,UPInfo            ;UPInfo available ?
  1125. beq FileVirusCheck        ;No, branch to FileVirusCheck
  1126. move.l UPInfo(pc),a0        ;get UPInfo
  1127. move.l FileInfoBlockMem(pc),a1    ;get FIB-structure
  1128. add.l #8,a1            ;get filename
  1129. jsr DetermineFile(a6)        ;call subroutine
  1130. cmp.l #0,d0            ;error ?
  1131. beq UPErr            ;Yes, branch to UPErr 
  1132.  
  1133. move.l UPInfo(pc),a0        ;get UPInfo
  1134. cmp.l #0,12(a0)            ;cruncher ?
  1135. beq FileVirusCheck        ;No, branch to FileVirusCheck
  1136.  
  1137. lea CruncherName(pc),a1        ;get CruncherName-Startaddress
  1138. move.l #40,d0            ;get counter
  1139.  
  1140. ClearCruncherNameLoop:
  1141. move.b #00,(a1)+        ;clear the buffer !
  1142. sub.l #1,d0            ;count down !
  1143. cmp.l #0,d0            ;zero ?
  1144. bne ClearCruncherNameLoop    ;No, continue the loop !
  1145.  
  1146. move.l 12(a0),a0        ;get CruncherName-Startaddress
  1147.                 ;from UPInfo
  1148. lea CruncherName(pc),a1        ;get CruncherName-Bufferaddress
  1149.  
  1150. CruncherNameLoop:
  1151. move.b (a0)+,(a1)+        ;write CruncherName to buffer
  1152. cmp.b #00,(a0)            ;any more byte ?
  1153. bne CruncherNameLoop        ;Yes, continue the loop !
  1154.  
  1155. move.l #CruncherText,d2        ;get CruncherText-Startaddress
  1156. move.l #CruncherTextende,d3    ;get CruncherText-Endaddress
  1157. bsr PrintDOSText        ;branch to subroutine
  1158.  
  1159. move.l UPBase(pc),a6        ;get UPBase
  1160. move.l UPInfo(pc),a0        ;get UPInfo
  1161. lea 8(a0),a3            ;get UPJump-address
  1162. lea UPJump(pc),a4        ;get own jump-address
  1163. move.l a4,(a3)            ;insert own jump-address in UPJump
  1164. jsr UnPack(a6)            ;call subroutine
  1165. cmp.l #0,d0            ;error ?
  1166. beq UPErr            ;Yes, branch to UPErr
  1167. rts                ;return from subroutine
  1168.  
  1169. UPJump:
  1170. bsr CopyCrunched        ;branch to virusscan
  1171. rts                ;return to unpack
  1172.  
  1173. CopyCrunched:
  1174. move.l ExecBase,a6        ;get ExecBase
  1175. move.l UPInfo(pc),a0          ;get UPInfo
  1176. move.l 16(a0),a0        ;get Decrunch-address from UPInfo
  1177. move.l FileMem(pc),a1        ;get FileMem-address
  1178. move.l #$5000,d0        ;get size
  1179. jsr CopyMem(a6)            ;call subroutine
  1180.  
  1181. FileVirusCheck:
  1182. move.l #53,d0            ;get counter
  1183. lea FileVirusOffsetlist(pc),a0    ;get offsetlist
  1184. lea Filevirustestbyteslist(pc),a1;get testbyteslist
  1185. lea FilevirusNameList(pc),a3    ;get FileVirusNamelist
  1186.  
  1187. CompareFileLoop:
  1188. move.l (a0)+,d1            ;get offset
  1189. add.l FileMem(pc),d1        ;add filebuffer-address
  1190. move.l d1,a2            ;write d1 to a2
  1191. move.l (a2),d1            ;get one longword from filebuffer
  1192. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  1193. beq Filevirus            ;Yes, branch to Filevirus
  1194. cmp.l #0,(a3)+            ;count FilevirusNamelist
  1195. sub.l #1,d0            ;count down
  1196. cmp.l #0,d0            ;zero ?
  1197. bne CompareFileLoop        ;No, continue the loop !
  1198.  
  1199. SpecialVirus:
  1200. move.l #4,d0            ;get counter
  1201. lea SpecialVirusOffsetList(pc),a0; get offsetlist
  1202. lea SpecialVirusTestbytesList(pc),a1;get testbyteslist
  1203. lea SpecialVirusNameList(pc),a3    ;get SpecialVirusNameList
  1204. lea SpecialVirusInvisibleNameList(pc),a5
  1205.  
  1206. CompareSpecialVirusLoop:
  1207. move.l (a0)+,d1            ;get offset
  1208. add.l FileMem(pc),d1        ;add filebufferaddress to offset
  1209. move.l d1,a2            ;write d1 to a2
  1210. move.l (a2),d1            ;get one longword from filebuffer 
  1211. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  1212. beq KillSpecialVirus        ;Yes, branch to KillSpecialVirus
  1213. cmp.l #0,(a3)+            ;count SpecialVirusNameList
  1214. cmp.l #0,(a5)+            ;count SpecialVirusInvisibleNameList
  1215. sub.l #1,d0            ;count down
  1216. cmp.l #0,d0            ;zero ?
  1217. bne CompareSpecialVirusLoop    ;No, continue the loop !
  1218.  
  1219. CheckFile2:
  1220. move.l FileMem(pc),a0        ;get filebuffer
  1221.  
  1222. cmp.l #$60040000,$24(a0)    ;RoLe-Virus ?
  1223. beq ReturnFile            ;Yes, branch to ReturnFile
  1224.  
  1225. cmp.l #"-lh5",$2(a0)        ;lha-archive ?
  1226. beq LHA5            ;Yes, branch to LHA5 !
  1227.  
  1228. cmp.l #"PP20",(a0)        ;PP-Data ?
  1229. beq PPData            ;Yes, branch to PPData
  1230.  
  1231. move.l FileInfoBlockMem(pc),d0    ;get FIB-structure
  1232. add.l #8,d0            ;get filename
  1233. move.l d0,a0            ;copy d0 to a0
  1234. InvisibleLoop:
  1235. cmp.b #$A0,(a0)+        ;Invisible sign in filename ?
  1236. beq InvisibleFile        ;Yes, branch to InvisibleFile
  1237. cmp.b #$00,(a0)            ;any more byte ?
  1238. bne InvisibleLoop        ;Yes, continue the loop !
  1239.  
  1240. move.l FileMem(pc),a0        ;get filebuffer
  1241. cmp.l #$000003F3,(a0)        ;executable ?
  1242. bne OK                ;No, end CheckFile
  1243.  
  1244. LinkLoop:
  1245. cmp.l #$000003E9,(a0)+        ;looking for first hunk
  1246. bne LinkLoop            ;No, continue the loop !
  1247.  
  1248. move.l a0,HunkPos        ;get Hunk-Startposition
  1249. move.l #12,d0            ;get counter
  1250. lea LinkvirusOffsetList(pc),a0    ;get offsetlist
  1251. lea LinkvirusTestbytesList(pc),a1;get testbyteslist
  1252. lea LinkvirusNameList(pc),a3    ;get LinkvirusNameList
  1253.  
  1254. CompareLinkLoop:
  1255. move.l (a0)+,d1            ;get offset
  1256. add.l HunkPos(pc),d1        ;add Hunkposition to offset
  1257. move.l d1,a2            ;write d1 to a2
  1258. move.l (a2),d1            ;get one longword from hunk
  1259. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  1260. beq Linkvirus            ;Yes, branch to Linkvirus
  1261. cmp.l #0,(a3)+            ;count LinkvirusNameList
  1262. sub.l #1,d0            ;count down
  1263. cmp.l #0,d0            ;zero ?
  1264. bne CompareLinkLoop        ;No, continue the loop !
  1265.  
  1266. CheckFile3:
  1267. move.l HunkPos(pc),a0        ;get fisrt Hunkposition
  1268.  
  1269. cmp.l #$024D4558,$6CC(a0)    ;HQCCruncher ?
  1270. beq HQCFile            ;Yes, branch to HQCFile
  1271.  
  1272. cmp.l #"powe",$60(a0)        ;PowerPacker ?
  1273. beq PowerPackerFile        ;Yes, branch to PowerPackerFile
  1274.  
  1275. cmp.l #"xplo",$30(a0)        ;Imploder
  1276. beq ImploderFile        ;Yes, branch to ImploderFile
  1277.  
  1278. cmp.l #0,RLBase            ;RLBase available ?
  1279. beq HunkCheck            ;No, branch to HunkCheck
  1280. move.l RLBase(pc),a6        ;get RLBase
  1281. cmp.l #0,RLStructPtr        ;RLStruct available ?
  1282. beq HunkCheck            ;No, branch to HunkCheck
  1283. move.l RLStructPtr(pc),a0    ;get RLStructPtr
  1284. lea 26(a0),a3            ;get BufferPtr
  1285. move.l FileMem(pc),(a3)        ;get FileMem-address
  1286. jsr rlGetFileVName(a6)        ;call subroutine
  1287.  
  1288. move.l RLStructPtr(pc),a0    ;get RLStructPtr
  1289. cmp.l #0,(a0)            ;filevirus ?
  1290. beq HunkCheck            ;No, branch to HunkCheck
  1291.  
  1292. move.l (a0),a0            ;get address of FileInfection-structure
  1293. lea 4(a0),a3            ;get virusname-address
  1294. lea 20(a0),a5            ;get origin filename-address
  1295. cmp.w #0,16(a0)            ;linkvirus ?
  1296. beq Linkvirus            ;Yes, branch to Linkvirus
  1297. cmp.w #1,16(a0)            ;filevirus ?
  1298. beq Filevirus            ;Yes, branch to Filevirus
  1299. cmp.w #2,16(a0)            ;SpecialVirus ?
  1300. beq KillSpecialVirus        ;Yes, branch to KillSpecialVirus
  1301.  
  1302. HunkCheck:
  1303. move.l FileMem(pc),a0        ;get filebuffer
  1304. cmp.l #$000003F3,(a0)        ;executable ?
  1305. beq EXECUTABLEFile        ;Yes, branch to ExecutableFile
  1306.  
  1307.  
  1308. OK:
  1309. move.l Dosbase(pc),a6        ;get DosBase
  1310. move.l Dateihandle(pc),d1    ;get Dateihandle
  1311. jsr Close(a6)            ;call subroutine
  1312.  
  1313. OK2:
  1314. move.l #FileText2,d2        ;get FileText-Startaddress
  1315. move.l #FileText2ende,d3    ;get FileText-Endaddress
  1316. bsr PrintDOSText        ;branch to subroutine
  1317. rts                ;return from subroutine
  1318.  
  1319. PrintDOSText:
  1320. move.l Dosbase(pc),a6        ;get DosBase
  1321. move.l Handle(pc),d1        ;get Handle
  1322. sub.l d2,d3            ;get Textlength
  1323. jsr Write(a6)            ;call subroutine
  1324. rts                ;return from subroutine
  1325.  
  1326. FileVirusNameLoop:
  1327. move.l #40,d0            ;get counter
  1328. lea FileVirusName(pc),a0    ;get FileVirusNamebuffer
  1329.  
  1330. ClearFileVirusNameLoop:
  1331. move.b #$00,(a0)+        ;clear all bytes
  1332. sub.l #1,d0            ;count down
  1333. cmp.l #0,d0            ;zero ?
  1334. bne ClearFileVirusNameLoop    ;No, continue the Loop !
  1335.  
  1336. move.l #FileText,d2        ;get FileText-Startaddress
  1337. move.l #FileTextende,d3        ;get FileText-Endaddress
  1338. lea FileVirusName(pc),a0    ;get FileVirusNamebuffer
  1339.  
  1340. FileVirusNameLoopLoop:
  1341. move.b (a1)+,(a0)+        ;write Virusname to Filevirusbuffer
  1342. cmp.b #$00,(a1)            ;zero ?
  1343. bne FileVirusNameLoopLoop    ;No, continue the loop !
  1344. bsr PrintDOSText        ;branch to subroutine
  1345. rts                ;return from subroutine
  1346.  
  1347. FileVirus:
  1348. clr.l (a2)            ;clear testbytes in filebuffer
  1349. move.l (a3),a1            ;get VirusText-Address
  1350. bsr FileVirusNameLoop        ;branch to FileVirusNameLoop
  1351.  
  1352. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1353. add.l #8,d4            ;get filename
  1354. bsr KillFileVirus        ;branch to subroutine
  1355. bra OK2                ;end CheckFile
  1356.  
  1357. ReturnFile:
  1358. clr.l $24(a0)            ;clear testbytes in filebuffer
  1359. lea ReturnoftheLamerExterminatorText(pc),a1
  1360. bsr FileVirusNameLoop        ;branch to FileVirusNameLoop
  1361. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1362. add.l #8,d4            ;get filename
  1363. bsr KillFileVirus3        ;branch to subroutine
  1364. bra OK2                ;end CheckFile
  1365.  
  1366. HQCFile:
  1367. clr.l $6CC(a0)            ;clear testbytes in filebuffer
  1368. move.l #HQCCruncherText,d2    ;get HQCCruncherText-StartAddress
  1369. move.l #HQCCruncherTextende,d3    ;get HQCCruncherText-Endaddress
  1370. bsr PrintDOSText        ;branch to subroutine
  1371. bra OK                ;end CheckFile
  1372.  
  1373. PowerPackerFile:
  1374. clr.l $60(a0)            ;clear testbytes in filebuffer
  1375. move.l #PowerPackerText,d2    ;get PowerPackerText-Startaddress
  1376. move.l #PowerPackerTextende,d3    ;get PowerPackerText-Endaddress
  1377. bsr PrintDOSText        ;branch to subroutine
  1378. bra OK                ;end CheckFile
  1379.  
  1380. ImploderFile:
  1381. clr.l $30(a0)            ;clear the testbytes in filebuffer
  1382. move.l #ImploderText,d2        ;get ImploderText-Startaddress
  1383. move.l #ImploderTextende,d3    ;get ImploderText-Endaddress
  1384. bsr PrintDOSText        ;branch to subroutine
  1385. bra OK                ;end CheckFile
  1386.  
  1387. LHA5:
  1388. clr.l $2(a0)            ;clear the testbytes
  1389. move.l #LHA5Text,d2        ;get LHA5Text-Startaddress
  1390. move.l #LHA5Textende,d3        ;get LHA5Text-Endaddress
  1391. bsr PrintDOSText        ;branch to subroutine
  1392. bra OK                ;end CheckFile
  1393.  
  1394. PPData:
  1395. clr.l (a0)            ;clear the testbytes
  1396. move.l #PPDataText,d2        ;get PPDataText-Startaddress
  1397. move.l #PPDataTextende,d3    ;get PPDataText-Endaddress
  1398. bsr PrintDOSText        ;branch to subroutine
  1399. bra OK                ;end CheckFile
  1400.  
  1401. EXECUTABLEFile:
  1402. move.l #ExecutableText,d2    ;get ExecutableText-Startaddress
  1403. move.l #ExecutableTextende,d3    ;get ExecutableText-Endaddress
  1404. bsr PrintDOSText        ;branch to subroutine
  1405. bra OK                ;end CheckFile
  1406.  
  1407. InvisibleFile:
  1408. move.l #InvisibleFileText,d2    ;get InvisibleText-Startaddress
  1409. move.l #InvisibleFileTextende,d3;get InvisibleText-Endaddress
  1410. bsr PrintDOSText        ;branch to subroutine
  1411. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1412. add.l #8,d4            ;get filename
  1413. bsr KillFileVirus4        ;branch to subroutine
  1414. bra OK2                ;end CheckFile
  1415.  
  1416. LinkvirusNameLoop:
  1417. move.l #40,d0            ;get counter
  1418. lea LinkvirusName(pc),a0    ;get LinkvirusNamebuffer-address
  1419.  
  1420. ClearLinkvirusNameLoop:
  1421. move.b #$00,(a0)+        ;clear the buffer
  1422. sub.l #1,d0            ;count down
  1423. cmp.l #0,d0            ;zero ?
  1424. bne ClearLinkvirusNameLoop    ;No, continue the loop !
  1425.  
  1426. move.l #LinkText,d2        ;get LinkText-Startaddress
  1427. move.l #LinkTextende,d3        ;get LinkText-Endaddress
  1428. lea LinkVirusName(pc),a0    ;get Linkvirusnamebuffer-address
  1429.  
  1430. LinkVirusNameLoopLoop:
  1431. move.b (a1)+,(a0)+        ;write Virusname to LinkvirusNamebuffer
  1432. cmp.b #$00,(a1)            ;zero ?
  1433. bne LinkVirusNameLoopLoop    ;No, continue the loop !
  1434. bsr PrintDOSText        ;branch to subroutine
  1435. rts                ;return from subroutine
  1436.  
  1437. Linkvirus:
  1438. clr.l (a2)            ;clear testbytes from filebuffer
  1439. move.l (a3),a1            ;get VirusText-Address
  1440. bsr LinkvirusNameLoop        ;branch to LinkvirusLoop
  1441. bra OK2                ;end CheckFile
  1442.  
  1443. CloseVirus:
  1444. move.l Dosbase(pc),a6        ;get DosBase
  1445. move.l Dateihandle(pc),d1    ;get Dateihandle
  1446. jsr Close(a6)            ;call subroutine
  1447. rts                ;return from subroutine
  1448.  
  1449. KillFileVirus:
  1450. bsr CloseVirus            ;branch to subroutine
  1451. KillFileVirus2:            
  1452. Requester #KillFileTexten,#Yes,#No,#310,#80
  1453. cmp.l #0,d0            ;Zero ?
  1454. beq KillFileVirusNext        ;Yes, do not kill the filevirus
  1455.  
  1456. DeleteVirus:
  1457. move.l Dosbase(pc),a6        ;get DosBase
  1458. move.l d4,d1            ;get filename
  1459. move.l #%00000000,d2        ;unprotect
  1460. jsr SetProtection(a6)        ;call subroutine
  1461.  
  1462. move.l Dosbase(pc),a6        ;get DosBase
  1463. move.l d4,d1            ;get filename
  1464. jsr DeleteFile(a6)        ;call subroutine
  1465. KillFileVirusNext:
  1466. rts                ;return from subroutine
  1467.  
  1468. RenameVirus:
  1469. move.l Dosbase(pc),a6        ;get DosBase
  1470. move.l d4,d2            ;get new filename
  1471. jsr Rename(a6)            ;call subroutine
  1472. rts                ;return from subroutine
  1473.  
  1474. KillSpecialVirus:
  1475. clr.l (a2)            ;clear testbytes in filebuffer
  1476. lea SpecialVirusName(pc),a0    ;get SpecialVirusNamebuffer-address
  1477. move.l #40,d0            ;get counter
  1478.  
  1479. ClearSpecialVirusNameLoop:
  1480. move.b #00,(a0)+        ;clear the buffer
  1481. sub.l #1,d0            ;count down
  1482. cmp.l #0,d0            ;Zero ?
  1483. bne ClearSpecialVirusNameLoop    ;No, continue the loop !
  1484.  
  1485. lea SpecialVirusName(pc),a0    ;get SpecialVirusNamebuffer-address
  1486. move.l (a3),a1            ;get Virusname-Address
  1487.  
  1488. SpecialVirusNameLoop:
  1489. move.b (a1)+,(a0)+        ;write VirusName to SpecialVirusNamebuffer
  1490. cmp.b #0,(a1)            ;Zero ?
  1491. bne SpecialVirusNameLoop    ;No, continue the loop !
  1492.  
  1493. bsr CloseVirus            ;branch to subroutine
  1494. Requester #KillSpecialVirusText,#Yes,#No,#610,#70
  1495. cmp.l #0,d0            ;Zero ?
  1496. beq KillSpecialVirusNext    ;Yes, do not kill the filevirus
  1497. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1498. add.l #8,d4            ;get filename
  1499. bsr DeleteVirus            ;branch to subroutine
  1500. KillSpecialVirusNext:    
  1501. Requester #SpecialVirusOrigText,#Yes,#No,#610,#70
  1502. cmp.l #0,d0            ;Zero ?
  1503. beq KillSpecialVirusNextNext    ;Yes, do not rename the original
  1504. move.l (a5),d1            ;No, get original-filename-address
  1505. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1506. add.l #8,d4            ;get filename
  1507. bsr RenameVirus            ;branch to subroutine
  1508. KillSpecialVirusNextNext:
  1509. bra OK2                ;end CheckFile
  1510.  
  1511. KillFileVirus3:
  1512. bsr CloseVirus            ;branch to subroutine
  1513. Requester #RenameFileTexten,#Yes,#No,#400,#70
  1514. cmp.l #0,d0            ;Zero ?
  1515. beq KillFileVirus3Next        ;Yes, do not rename the file
  1516.  
  1517. move.l Dosbase(pc),a6        ;get DosBase
  1518. move.l d4,d1            ;get old filename
  1519. move.l #RETURN,d2        ;get new filename
  1520. jsr Rename(a6)            ;call subroutine
  1521. KillFileVirus3Next:
  1522. rts                ;return from subroutine
  1523.  
  1524. KillFileVirus4:
  1525. bsr CloseVirus            ;branch to subroutine
  1526. Requester #RenameInvisibleFileText,#Yes,#No,#350,#70
  1527. cmp.l #0,d0            ;Zero ?
  1528. beq KillFileVirus4Next
  1529.  
  1530. move.l Dosbase(pc),a6        ;get DosBase
  1531. move.l d4,d1            ;get old filename
  1532. move.l #CRITICAL,d2        ;get new filename
  1533. jsr Rename(a6)            ;call subroutine
  1534. KillFileVirus4Next:
  1535. rts                ;return from subroutine
  1536.  
  1537. even
  1538. AutoRequestText:
  1539. dc.b 0,2
  1540. dc.b 0
  1541. even
  1542. dc.w 20,20
  1543. dc.l 0
  1544. AutoRequestTextPtr:
  1545. dc.l 0
  1546. dc.l 0
  1547.  
  1548. even
  1549. KillFileTexten:
  1550. dc.b `Shall I delete this File ?`,0
  1551.  
  1552. even
  1553. KillSpecialVirusText:
  1554. dc.b `Shall I delete the filevirus `
  1555. SpecialVirusName: blk.b 40,0
  1556.  
  1557. even
  1558. SpecialVirusOrigText:
  1559. dc.b `Shall I rename the original file ?`,0
  1560.  
  1561. even
  1562. RenameFileTexten:
  1563. dc.b `Shall I rename the Disk-Validator ?`,0
  1564.  
  1565. even
  1566. RenameInvisibleFileText:
  1567. dc.b `Shall I rename this file ?`,0
  1568.  
  1569. even
  1570. GadgetText:
  1571. dc.b 0,2
  1572. dc.b 0
  1573. even
  1574. dc.w 4,4
  1575. dc.l 0
  1576. GadgetTextPtr:
  1577. dc.l 0
  1578. dc.l 0
  1579.  
  1580. even
  1581. GadgetText2:
  1582. dc.b 0,2
  1583. dc.b 0
  1584. even
  1585. dc.w 4,4
  1586. dc.l 0
  1587. GadgetText2Ptr:
  1588. dc.l 0
  1589. dc.l 0
  1590.  
  1591. even
  1592. Yes:
  1593. dc.b `Yes !`,0
  1594.  
  1595. even
  1596. No:
  1597. dc.b `No !`,0
  1598.  
  1599. even
  1600. ContinueText:
  1601. dc.b ` OK `,0
  1602.  
  1603. even
  1604. ContinueText2:
  1605. dc.b 0,2
  1606. dc.b 0
  1607. even
  1608. dc.w 4,4
  1609. dc.l 0
  1610. dc.l ContinueText
  1611. dc.l 0
  1612. dc.l 0
  1613.  
  1614. even
  1615. UnPackErrList:
  1616. dc.l OpenErr
  1617. dc.l ReadWriteErr
  1618. dc.l MemoryErr
  1619. dc.l DetermineErr
  1620. dc.l PasswordErr
  1621. dc.l HunkErr
  1622. dc.l ExternErr
  1623. dc.l CorruptErr
  1624. dc.l DeviceErr
  1625. dc.l DevOpenErr
  1626. dc.l CRCErr
  1627. dc.l CheckSumErr
  1628. dc.l OldErr
  1629. dc.l DevErrErr
  1630. dc.l ProtectErr
  1631. dc.l OutputErr
  1632.  
  1633. even
  1634. OpenErr:
  1635. dc.b `Can not open file !`,0
  1636.  
  1637. even
  1638. ReadWriteErr:
  1639. dc.b `Read/Write Error !`,0
  1640.  
  1641. even
  1642. MemoryErr:
  1643. dc.b `not enough memory !`,0
  1644.  
  1645. even
  1646. DetermineErr:
  1647. dc.b `Can not determine file !`,0
  1648.  
  1649. even
  1650. PassWordErr:
  1651. dc.b `Illegal Password !`,0
  1652.  
  1653. even
  1654. HunkErr:
  1655. dc.b `Hunk-Error !`,0
  1656.  
  1657. even
  1658. ExternErr:
  1659. dc.b `Extern File Error !`,0
  1660.  
  1661. even
  1662. CorruptErr:
  1663. dc.b `Crunched file is corrupt !`,0
  1664.  
  1665. even
  1666. DeviceErr:
  1667. dc.b `Illegal Device !`,0
  1668.  
  1669. even
  1670. DevOpenErr:
  1671. dc.b `Could not open device or create port !`,0
  1672.  
  1673. even
  1674. CRCErr:
  1675. dc.b `CRC CheckSum Error !`,0
  1676.  
  1677. even
  1678. CheckSumErr:
  1679. dc.b `CheckSum Error !`,0
  1680.  
  1681. even
  1682. OldErr:
  1683. dc.b `Decruncher In Lib. Too Old !`,0
  1684.  
  1685. even
  1686. DevErrErr:
  1687. dc.b `Error from device !`,0
  1688.  
  1689. even
  1690. ProtectErr:
  1691. dc.b `Could not set Protectionbits !`,0
  1692.  
  1693. even
  1694. OutputErr:
  1695. dc.b `Output File Error !`,0
  1696.  
  1697. even
  1698. RETURN:
  1699. dc.b `:L/LAMER-Virus`,0
  1700.  
  1701. even
  1702. CRITICAL:
  1703. dc.b `:CRITICAL-Virus`,0
  1704.  
  1705. even
  1706. SpecialVirusNameList:
  1707. dc.l BGS9Text
  1708. dc.l BGS9IIText
  1709. dc.l TerroristsText
  1710. dc.l NaSTText
  1711.  
  1712. even
  1713. SpecialVirusTestbytesList:
  1714. dc.l `TTV1`
  1715. dc.l `TTV1`
  1716. dc.l `TTV1`
  1717. dc.l `NaST`
  1718.  
  1719. even
  1720. SpecialVirusOffsetlist:
  1721. dc.l $00000A04
  1722. dc.l $00000A04
  1723. dc.l $00000620
  1724. dc.l $0000007A
  1725.  
  1726. even
  1727. SpecialVirusInvisibleNameList:
  1728. dc.l BGS9Invisible
  1729. dc.l BGS9Invisible2
  1730. dc.l TerroristsInvisible
  1731. dc.l NaSTInvisible
  1732.  
  1733. even
  1734. BGS9Invisible:
  1735. dc.b `:DEVS/           `,0
  1736.  
  1737. even
  1738. BGS9Invisible2:
  1739. dc.b `:DEVS/ é         `,0
  1740.  
  1741. even
  1742. TerroristsInvisible:
  1743. dc.b `:           `,0
  1744.  
  1745. even
  1746. NaSTInvisible:
  1747. dc.b `:c/              `,0
  1748.  
  1749. even
  1750. FileNameText: dc.b `                              `,0
  1751. FileNameTextende:
  1752.  
  1753. even
  1754. SizeText:
  1755. dc.b ` : $`
  1756. Length: dc.b `00000000  `,0
  1757. SizeTextende:
  1758.  
  1759. even
  1760. ExecutableText:
  1761. dc.b `   :EXECUTABLE   `,0
  1762. ExecutableTextende:
  1763.  
  1764. even
  1765. PBits:
  1766. dc.b `rwed`,0
  1767.  
  1768. even
  1769. ProtectText:
  1770. dc.b `       `,0
  1771. ProtectTextende:
  1772.  
  1773. even
  1774. FileText2:
  1775. dc.b `   : OK`,10
  1776. FileText2ende:
  1777.  
  1778. even
  1779. DirText:
  1780. dc.b `      <DIR>   `,0
  1781. DirTextende:
  1782.  
  1783. even
  1784. HQCCruncherText:
  1785. dc.b $9b,`1;33m`
  1786. dc.b `   uses HQC-Cruncher !`,0
  1787. dc.b $9b,`0;31m`
  1788. HQCCruncherTextende:
  1789.  
  1790. even
  1791. PowerPackerText:
  1792. dc.b $9b,`1;33m`
  1793. dc.b `   uses powerpacker-Cruncher !`,0
  1794. dc.b $9b,`0;31m`
  1795. PowerPackerTextende:
  1796.  
  1797. even
  1798. ImploderText:
  1799. dc.b $9b,`1;33m`
  1800. dc.b `   uses implode.library !`,0
  1801. dc.b $9b,`0;31m`
  1802. ImploderTextende:
  1803.  
  1804. even
  1805. LHA5Text:
  1806. dc.b $9b,`1;33m`
  1807. dc.b `   uses lha5-archive !`,0
  1808. dc.b $9b,`0;31m`
  1809. LHA5Textende:
  1810.  
  1811. even
  1812. PPDataText:
  1813. dc.b $9b,`1;33m`
  1814. dc.b `   contains PowerPacker datas !`,0
  1815. dc.b $9b,`0;31m`
  1816. PPDataTextende:
  1817.  
  1818. even
  1819. InvisibleFileText:
  1820. dc.b $9b,`1;33m`
  1821. dc.b `   : ... filename contains invisible signs ! Possibility: FILEVIRUS !!!`,10
  1822. dc.b $9b,`0;31m`
  1823. InvisibleFileTextende:
  1824.  
  1825. even
  1826. CruncherText:
  1827. dc.b $9b,`1;33m`
  1828. dc.b `   :... file is `
  1829. even
  1830. CruncherName: blk.b 40,0
  1831. dc.b ` crunched !!!`,10
  1832. dc.b $9b,`0;31m`
  1833. CruncherTextende:
  1834.  
  1835. even
  1836. FileText:
  1837. dc.b $9b,`1;33m`
  1838. dc.b `   : ... contains `
  1839. even
  1840. FileVirusname: blk.b 40,0
  1841. dc.b ` Filevirus !!!`,10
  1842. dc.b $9b,`0;31m`
  1843. FileTextende:
  1844.  
  1845. even
  1846. LinkText:
  1847. dc.b $9b,`1;33m`
  1848. dc.b `   : ... includes `
  1849. even
  1850. LinkVirusname: blk.b 40,0
  1851. dc.b ` Linkvirus !!!`,10
  1852. dc.b $9b,`0;31m`
  1853. LinkTextende:
  1854.  
  1855. even
  1856. LinkvirusNameList:
  1857. dc.l AntiChristText
  1858. dc.l BestialDevastationText
  1859. dc.l CCCPText
  1860. dc.l GotchaLamerText
  1861. dc.l HochofenText
  1862. dc.l IRQText
  1863. dc.l QRDLText
  1864. dc.l RedOctoberText
  1865. dc.l SmilyCancerText
  1866. dc.l TravelingJackText
  1867. dc.l TravelingJack2Text
  1868. dc.l XenoText
  1869.  
  1870. even
  1871. LinkvirusTestbytesList:
  1872. dc.l $00000250
  1873. dc.l `VAST`
  1874. dc.l `CCCP`
  1875. dc.l `tcha`
  1876. dc.l `hofe`
  1877. dc.l $000003EC
  1878. dc.l $60000342
  1879. dc.l `devi`
  1880. dc.l $60026068
  1881. dc.l $48E7FFFE
  1882. dc.l $48E7FFFE
  1883. dc.l `Nudo`
  1884.  
  1885. even
  1886. LinkvirusOffsetList:
  1887. dc.l $00000788
  1888. dc.l $00000070
  1889. dc.l $0000004C
  1890. dc.l $0000013C
  1891. dc.l $00000B90
  1892. dc.l $000000A4
  1893. dc.l $00000008
  1894. dc.l $00000484
  1895. dc.l $00000004
  1896. dc.l $00000010
  1897. dc.l $00000014
  1898. dc.l $00000414
  1899.  
  1900. even
  1901. FilevirusNameList:
  1902. dc.l AmigaKnightText
  1903. dc.l AntiChristTextText
  1904. dc.l BeethovenText
  1905. dc.l BlueboxText
  1906. dc.l BretHawnesText
  1907. dc.l ColorText
  1908. dc.l CommodoreText
  1909. dc.l CompuPhagozyteText
  1910. dc.l CompuPhagozyte2Text
  1911. dc.l CompuPhagozyteIIText
  1912. dc.l CompuPhagozyteIIIText
  1913. dc.l CompuPhagozyteIIIBCText
  1914. dc.l CompuPhagozyteIVText
  1915. dc.l DStructureText
  1916. dc.l DAGCreatorText
  1917. dc.l DarthVaderText
  1918. dc.l DisasterMasterText
  1919. dc.l DiskKillerText
  1920. dc.l DisktroyerV10Text
  1921. dc.l DisktroyerV20Text
  1922. dc.l DiskVal1234Text
  1923. dc.l DMTrashText
  1924. dc.l DriveInfoText
  1925. dc.l ExcrementCreatorText
  1926. dc.l FreedomText
  1927. dc.l GotchaLamerCreatorText
  1928. dc.l GZUSText
  1929. dc.l INTELText
  1930. dc.l JeffBUTONICV131Text
  1931. dc.l JeffBUTONICV300Text
  1932. dc.l LamerLoadWBText
  1933. dc.l LamerVirusXText
  1934. dc.l Liberatorv121Text
  1935. dc.l Liberatorv30Text
  1936. dc.l Liberatorv501Text
  1937. dc.l ModemCheckerText
  1938. dc.l ModemCheckerloadWBText
  1939. dc.l NANOoldText
  1940. dc.l NanonewText
  1941. dc.l NoGuruv20Text
  1942. dc.l PPBombText
  1943. dc.l RevengeOfTheLAMERExterminatorText
  1944. dc.l SADDAMText
  1945. dc.l SEPULTURAText
  1946. dc.l ShowSysopText
  1947. dc.l SmilyCancerLoadWBText
  1948. dc.l SnoopDosText
  1949. dc.l TelecomText
  1950. dc.l TFCRevengeLoadWBText
  1951. dc.l TimeBombV09Text
  1952. dc.l TravelingJackTextText
  1953. dc.l VirusConstructionSetText
  1954. dc.l xprzspeedV32Text
  1955.  
  1956. even
  1957. FilevirusTestbytesList:
  1958. dc.l `STAR`
  1959. dc.l `ntic`
  1960. dc.l `Beet`
  1961. dc.l `inpu`
  1962. dc.l `BRET`
  1963. dc.l `TURK`
  1964. dc.l `COMM`
  1965. dc.l ` Com`
  1966. dc.l `The `
  1967. dc.l `COMP`
  1968. dc.l `agoz`
  1969. dc.l `gozy`
  1970. dc.l `agoz`
  1971. dc.l `Stru`
  1972. dc.l $00000510
  1973. dc.l `DART`
  1974. dc.l $610002FA
  1975. dc.l `DISK`
  1976. dc.l `iskt`
  1977. dc.l `iskt`
  1978. dc.l `trac`
  1979. dc.l `user`
  1980. dc.l $4EAEFF3A
  1981. dc.l `EXCR`
  1982. dc.l `Free`
  1983. dc.l ` LAM`
  1984. dc.l `-Zus`
  1985. dc.l `oadw`
  1986. dc.l `DASA`
  1987. dc.l $4E714E71
  1988. dc.l `LAME`
  1989. dc.l `MER `
  1990. dc.l `erat`
  1991. dc.l `Libe`
  1992. dc.l `Libe`
  1993. dc.l `HECK`
  1994. dc.l `FUCK`
  1995. dc.l `N A `
  1996. dc.l `Nano`
  1997. dc.l `FNNF`
  1998. dc.l `egam`
  1999. dc.l $60040000
  2000. dc.l `BitM`
  2001. dc.l $4E716100
  2002. dc.l `SPOS`
  2003. dc.l `=WO/`
  2004. dc.l `oopD`
  2005. dc.l `brar`
  2006. dc.l `Fana`
  2007. dc.l `VIRU`
  2008. dc.l ` Jac`
  2009. dc.l `Star`
  2010. dc.l `Spee`
  2011.  
  2012. even
  2013. FilevirusOffsetList:
  2014. dc.l $00000342
  2015. dc.l $00000008
  2016. dc.l $00000044
  2017. dc.l $000001A0
  2018. dc.l $00000028
  2019. dc.l $00000260
  2020. dc.l $0000010E
  2021. dc.l $00000460
  2022. dc.l $00000380
  2023. dc.l $000001B0
  2024. dc.l $0000035C
  2025. dc.l $00000030
  2026. dc.l $00000030
  2027. dc.l $00000168
  2028. dc.l $00000710
  2029. dc.l $00000300
  2030. dc.l $00000028
  2031. dc.l $00000162
  2032. dc.l $00000220
  2033. dc.l $00000224
  2034. dc.l $000006C0
  2035. dc.l $000004C2
  2036. dc.l $0000002C
  2037. dc.l $000000C8
  2038. dc.l $0000054E
  2039. dc.l $000002F0
  2040. dc.l $0000361C
  2041. dc.l $0000027C
  2042. dc.l $00000206
  2043. dc.l $00000088
  2044. dc.l $00000448
  2045. dc.l $00000460
  2046. dc.l $0000129C
  2047. dc.l $00002784
  2048. dc.l $00003E80
  2049. dc.l $000033F0
  2050. dc.l $0000054C
  2051. dc.l $00000492
  2052. dc.l $0000003A
  2053. dc.l $000002F0
  2054. dc.l $00000410
  2055. dc.l $00000020
  2056. dc.l $00000702
  2057. dc.l $00000180
  2058. dc.l $000003D0
  2059. dc.l $00000C00
  2060. dc.l $000006B0
  2061. dc.l $00000290
  2062. dc.l $00000050
  2063. dc.l $000007C0
  2064. dc.l $00000010
  2065. dc.l $00000050
  2066. dc.l $000023F0
  2067.  
  2068. vectors_table:
  2069. bsr OpenTable            ;open table-window
  2070. cmp.l #0,d0            ;error ?
  2071. beq vectorsend            ;Yes, end vectors_table
  2072. move.l d0,vectorshandle        ;No, get handle
  2073. bsr vectors            ;show vectors
  2074. bsr vectorswait            ;delay vectors
  2075. bra vectorsend            ;close vectors_table
  2076.  
  2077. OpenTable:
  2078. move.l Dosbase(pc),a6        ;get ExecBase
  2079. move.l #Table,d1        ;get DOSWindowDef-Address
  2080. move.l #1006,d2            ;use the mode new
  2081. jsr Open(a6)            ;call subroutine
  2082. rts                ;return from subroutine
  2083.  
  2084. vectors:
  2085. move.l #17,d0            ;get counter
  2086. lea ExecVectorsList(pc),a3    ;get vectorslist
  2087. lea ExecVectorsNameList(pc),a4    ;get ExecVectorsNameList
  2088.  
  2089. ExecVectorsLoop:
  2090. move.l (a3)+,d4            ;get offset
  2091. move.l 4,a6            ;get ExecBase
  2092. add.l d4,a6            ;add offset to ExecBase
  2093. move.l (a6),d2            ;write ROM-address to d2
  2094. move.l (a4)+,a0            ;get vectorbuffer
  2095. bsr hex                ;hex !!!
  2096. sub.l #1,d0            ;count down
  2097. cmp.l #0,d0            ;Zero ?
  2098. bne ExecVectorsLoop        ;No, continue the loop !
  2099.  
  2100. bsr FindTrackDisk        ;get TrackDiskBase
  2101. move.l a1,a6            ;write TrackDiskBase to a6
  2102. move.l #2,d0            ;get counter
  2103. lea TrackDiskVectorsList(pc),a3    ;get offsetlist
  2104. lea TrackDiskVectorsNameList(pc),a4;get TrackDiskVectorsNameList
  2105.  
  2106. TrackDiskVectorsLoop:
  2107. move.l a6,a1            ;get TrackDiskBase
  2108. add.l (a3)+,a1            ;add offset to TrackDiskBase
  2109. move.l (a1),d2            ;write ROM-address to d2
  2110. move.l (a4)+,a0            ;get vectorbuffer
  2111. bsr hex                ;hex !!!
  2112. sub.l #1,d0            ;count down
  2113. cmp.l #0,d0            ;Zero ?
  2114. bne TrackDiskVectorsLoop    ;No, continue the loop !
  2115.  
  2116. bsr Findkeyboard        ;get KeyBoardBase
  2117. move.l -$0000001C(a1),d2    ;get offset
  2118. lea BeginIOVec(pc),a0        ;get vectorbuffer
  2119. bsr hex                ;hex !!!
  2120.  
  2121. move.l #4,d0            ;get counter
  2122. lea DOSVectorsList(pc),a3    ;get offsetlist
  2123. lea DOSVectorsNameList(pc),a4    ;get DOSVectorsNameList
  2124.  
  2125. DOSVectorsLoop:
  2126. move.l DosBase(pc),a6        ;get DosBase
  2127. add.l (a3)+,a6            ;add offset to DosBase
  2128. move.l (a6),d2            ;write ROM-address to d2
  2129. move.l (a4)+,a0            ;get vectorbuffer
  2130. bsr hex                ;hex !!!
  2131. sub.l #1,d0            ;count down
  2132. cmp.l #0,d0            ;Zero ?
  2133. bne DOSVectorsLoop        ;No, continue the loop !
  2134.  
  2135. move.l #2,d0            ;get counter
  2136. lea IntuitionVectorsList(pc),a3    ;get offsetlist
  2137. lea IntuitionVectorsNameList(pc),a4;get IntuitionVectorsNameList
  2138.  
  2139. IntuitionLoop:
  2140. move.l Intuibase(pc),a6        ;get IntuiBase
  2141. add.l (a3)+,a6            ;add offset to Intuibase
  2142. move.l (a6),d2            ;write ROM-address to d2
  2143. move.l (a4)+,a0            ;get vectorbuffer
  2144. bsr hex                ;hex !!!
  2145. sub.l #1,d0            ;count down
  2146. cmp.l #0,d0            ;Zero ?
  2147. bne IntuitionLoop        ;No, continue the loop !
  2148.  
  2149. move.l #Systemvectorstabletext,d2;get Systemvectorstabletext-Startaddress
  2150. move.l #Systemvectorstableend,d3;get Systemvectorstable-Endaddress
  2151. bsr PrintDOSText2        ;branch to subroutine
  2152. rts                ;return from subroutine
  2153.                     
  2154. hex:                
  2155. ;this routine converts the ROM-addresses to hexadecimal
  2156. ;numbers
  2157.  
  2158. move.l #8,d1            ;get counter
  2159.  
  2160. HexaLoop:
  2161. rol.l #4,d2            ;rotate 4 bits left
  2162. move.l d2,d3            ;get byte
  2163. and.b #$0f,d3            ;get nibble
  2164. add.b #$30,d3            ;get ciphers
  2165. cmp.b #$39,d3            ;d3 > 9 ?
  2166. ble display            ;No, diplay hexa-cipher
  2167. add.b #7,d3            ;Yes, get letter A-F
  2168.  
  2169. Display:
  2170. move.b d3,(a0)+            ;display one byte
  2171. sub.l #1,d1            ;count down
  2172. cmp.l #0,d1            ;Zero ?
  2173. bne HexaLoop            ;No, continue the loop !
  2174. rts                ;return from subroutine
  2175.  
  2176. vectorswait:
  2177. move.l Dosbase(pc),a6        ;get DosBase
  2178. move.l #300,d1            ;value for Delay
  2179. jsr Delay(a6)            ;call subroutine
  2180.  
  2181. CloseTable:
  2182. move.l Dosbase(pc),a6        ;get DosBase
  2183. move.l vectorshandle(pc),d1    ;get handle
  2184. jsr Close(a6)            ;call subroutine
  2185. rts                ;return from subroutine
  2186.  
  2187. PrintDOSText2:
  2188. move.l Dosbase(pc),a6        ;get DosBase
  2189. move.l vectorshandle(pc),d1    ;get handle
  2190. sub.l d2,d3            ;calculate textlength
  2191. jsr Write(a6)            ;call subroutine
  2192. rts                ;return from subroutine
  2193.  
  2194. vectorsend:
  2195. rts                ;return from subroutine
  2196.  
  2197. even
  2198. Table:
  2199. dc.b `CON:0/0/600/200/System-Vectors-Table:`,0
  2200.  
  2201. even
  2202. Vectorshandle:
  2203. dc.l 0
  2204.  
  2205. even
  2206. ExecVectorsNameList:
  2207. dc.l ColdCapture
  2208. dc.l CoolCapture
  2209. dc.l WarmCapture
  2210. dc.l CHKSumVec
  2211. dc.l KickCheckSum
  2212. dc.l DoIO
  2213. dc.l KickMemPtr
  2214. dc.l KickTagPtr
  2215. dc.l RasterBeamVec
  2216. dc.l OldOpenLibraryVec
  2217. dc.l OpenLibr
  2218. dc.l SKD
  2219. dc.l AlertVec
  2220. dc.l AllocMemVec
  2221. dc.l FreeMemVec
  2222. dc.l PutMsgVec
  2223. dc.l OpenDeviceVec
  2224.  
  2225. even
  2226. ExecVectorsList:
  2227. dc.l 42
  2228. dc.l 46
  2229. dc.l 50
  2230. dc.l 82
  2231. dc.l 554
  2232. dc.l -454
  2233. dc.l 546
  2234. dc.l 550
  2235. dc.l $90
  2236. dc.l -406
  2237. dc.l -550
  2238. dc.l -610
  2239. dc.l -106
  2240. dc.l -196
  2241. dc.l -208
  2242. dc.l -364
  2243. dc.l -442
  2244.  
  2245. even
  2246. TrackDiskVectorsNameList:
  2247. dc.l BeginIO
  2248. dc.l CloseVec
  2249.  
  2250. even
  2251. TrackDiskVectorsList:
  2252. dc.l -$0000001C
  2253. dc.l -$0000000A
  2254.  
  2255. even
  2256. DOSVectorsNameList:
  2257. dc.l OP
  2258. dc.l LoadSeg
  2259. dc.l WriteVec
  2260. dc.l LockVec
  2261.  
  2262. even
  2263. DOSVectorsList:
  2264. dc.l -28
  2265. dc.l -148
  2266. dc.l -46
  2267. dc.l -82
  2268.  
  2269. even
  2270. IntuitionVectorsNameList:
  2271. dc.l WindowOpen
  2272. dc.l DisplayAlertVec
  2273.  
  2274. even
  2275. IntuitionVectorsList:
  2276. dc.l -202
  2277. dc.l -88
  2278.  
  2279. even
  2280. Systemvectorstabletext:
  2281. dc.b `     ExecBase:`,10
  2282. dc.b `     ColdCapture:    $`
  2283. ColdCapture: dc.b `00000000`,0
  2284. dc.b ` CoolCapture:   $`
  2285. CoolCapture: dc.b `00000000`,10
  2286. dc.b `     WarmCapture:    $`
  2287. WarmCapture: dc.b `00000000`,0
  2288. dc.b ` ChkSum:        $`
  2289. CHKSumVec: dc.b `00000000`,10
  2290. dc.b `     KickMemPtr:     $`
  2291. KickMemPtr: dc.b `00000000`,0
  2292. dc.b ` KickTagPtr:    $`
  2293. KickTagPtr: dc.b `00000000`,10
  2294. dc.b `     KickCheckSum:   $`
  2295. KickCheckSum: dc.b `00000000`,0
  2296. dc.b ` RasterBeam Int.$`
  2297. RasterBeamVec: dc.b `00000000`,10
  2298. dc.b `     exec.library:`,10
  2299. dc.b `     Alert:          $`
  2300. AlertVec: dc.b `00000000`,0
  2301. dc.b ` AllocMem:      $`
  2302. AllocMemVec: dc.b `00000000`,10
  2303. dc.b `     FreeMem:        $`
  2304. FreeMemVec: dc.b `00000000`,0
  2305. dc.b ` PutMsg:        $`
  2306. PutMsgVec: dc.b `00000000`,10
  2307. dc.b `     OldOpenLibrary: $`
  2308. OldOpenLibraryVec: dc.b `00000000`,0
  2309. dc.b ` OpenDevice:    $`
  2310. OpenDeviceVec: dc.b `00000000`,10
  2311. dc.b `     DoIO:           $`
  2312. DoIO: dc.b `00000000`,0
  2313. dc.b ` OpenLibrary:   $`
  2314. OpenLibr: dc.b `00000000`,10
  2315. dc.b `     SumKickData:    $`
  2316. SKD: dc.b `00000000`,10
  2317. dc.b `     dos.library:`,10
  2318. dc.b `     Open:           $`
  2319. OP: dc.b `00000000`,0
  2320. dc.b ` Write:         $`
  2321. WriteVec: dc.b `00000000`,10
  2322. dc.b `     Lock:           $`
  2323. LockVec: dc.b `00000000`,0
  2324. dc.b ` LoadSeg:       $`
  2325. LoadSeg: dc.b `00000000`,10
  2326. dc.b `     intuition.library:`,10
  2327. dc.b `     DisplayAlert:   $`
  2328. DisplayAlertVec: dc.b `00000000`,0
  2329. dc.b ` OpenWindow:    $`
  2330. WindowOpen: dc.b `00000000`,10
  2331. dc.b `     trackdisk.device:`,10
  2332. dc.b `     BeginIO:        $`
  2333. BeginIO: dc.b `00000000`,0
  2334. dc.b ` Close:         $`
  2335. CloseVec: dc.b `00000000`,10
  2336. dc.b `     keyboard.device:`,10
  2337. dc.b `     BeginIO:        $`
  2338. BeginIOVec: dc.b `00000000`,10
  2339. Systemvectorstableend:
  2340.  
  2341. even
  2342. CheckMem:
  2343. move.l #129,d0
  2344. lea AbsoluteMemoryPositionVirusOffsetList(pc),a0
  2345. lea AbsoluteMemoryPositionVirusTestbytesList(pc),a1
  2346. lea AbsoluteMemoryPositionVirusNameList(pc),a3
  2347.  
  2348. CompareAbsMemLoop:
  2349. move.l (a0)+,a2            ;get offset
  2350. move.l (a2),d1            ;get longword from offset-position
  2351. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2352. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2353. cmp.l #0,(a3)+            ;count AbsoluteMemoryPositionVirusNameList
  2354. sub.l #1,d0            ;count down
  2355. cmp.l #0,d0            ;Zero ?
  2356. bne CompareAbsMemLoop        ;No, continue the loop !
  2357.  
  2358. ColdRelativeMemoryPosition:
  2359. move.l #8,d0
  2360. lea ColdRelativeMemoryPositionVirusOffsetList(pc),a0
  2361. lea ColdRelativeMemoryPositionVirusTestbytesList(pc),a1
  2362. lea ColdRelativeMemoryPositionVirusNameList(pc),a3
  2363.  
  2364. CompareColdRelativeMemoryPositionLoop:
  2365. move.l (a0)+,d1            ;get offset
  2366. move.l ExecBase,a6        ;get ExecBase
  2367. move.l 42(a6),d2        ;get ColdCapture-Startaddress
  2368. add.l d2,d1            ;add offset to this Startaddress
  2369. move.l d1,a2            ;write d1 to a2
  2370. move.l (a2),d1            ;write longword from memory to d1
  2371. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2372. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2373. cmp.l #0,(a3)+            ;count ColdRelativeMemoryPositionVirusNameList
  2374. sub.l #1,d0            ;count down
  2375. cmp.l #0,d0            ;Zero ?
  2376. bne CompareColdRelativeMemoryPositionLoop;No, continue the loop !
  2377.  
  2378. CoolRelativeMemoryPosition:
  2379. move.l #23,d0
  2380. lea CoolRelativeMemoryPositionVirusOffsetList(pc),a0
  2381. lea CoolRelativeMemoryPositionVirusTestbytesList(pc),a1
  2382. lea CoolRelativeMemoryPositionVirusNameList(pc),a3
  2383.  
  2384. CompareCoolRelativeMemoryPositionLoop:
  2385. move.l (a0)+,d1            ;get offset
  2386. move.l ExecBase,a6        ;get ExecBase
  2387. move.l 46(a6),d2        ;get CoolCapture-Startaddress
  2388. add.l d2,d1            ;add offset to this Startaddress
  2389. move.l d1,a2            ;write d1 to a2
  2390. move.l (a2),d1            ;write longword from memory to d1
  2391. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2392. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2393. cmp.l #0,(a3)+            ;count CoolRelativeMemoryPositionVirusNameList
  2394. sub.l #1,d0            ;count down
  2395. cmp.l #0,d0            ;Zero ?
  2396. bne CompareCoolRelativeMemoryPositionLoop;No, continue the loop !
  2397.  
  2398. move.l ExecBase,a6        ;get ExecBase
  2399. move.l 550(a6),ROMTag        ;get first ROMTag
  2400.  
  2401. KickTagRelativeMemoryPosition:
  2402. move.l #56,d0
  2403. lea KickTagRelativeMemoryPositionVirusOffsetList(pc),a0
  2404. lea KickTagRelativeMemoryPositionVirusTestbytesList(pc),a1
  2405. lea KickTagRelativeMemoryPositionVirusNameList(pc),a3
  2406.  
  2407. CompareKickTagRelativeMemoryPositionLoop:
  2408. move.l (a0)+,d1            ;get offset
  2409. move.l ROMTag(pc),d2        ;get ROMTag-Startaddress
  2410. add.l d2,d1            ;add offset to this Startaddress
  2411. move.l d1,a2            ;write d1 to a2
  2412. move.l (a2),d1            ;write longword from memory to d1
  2413. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2414. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2415. cmp.l #0,(a3)+            ;count KickTagRelativeMemoryPositionVirusNameList
  2416. sub.l #1,d0            ;count down
  2417. cmp.l #0,d0            ;Zero ?
  2418. bne CompareKickTagRelativeMemoryPositionLoop;No, continue the loop !
  2419.  
  2420. move.l ROMTag(pc),a0        ;get next ROMTag
  2421. cmp.l #0,4(a0)            ;any more lists ?
  2422. beq CheckMemNext        ;No, branch to CheckMemNext
  2423. move.l 4(a0),ROMTag        ;get next ROMTag
  2424. sub.l #$80000000,ROMTag        ;remove bit
  2425. bra KickTagRelativeMemoryPosition;scan the next ROMTag !
  2426.  
  2427. CheckMemNext:
  2428. lea HochofenName(pc),a1        ;get HochofenName-Address
  2429. bsr Task            ;branch to subroutine
  2430. cmp.l #0,d0            ;Zero ?
  2431. bne Hochofen            ;No, its the Hochofen-virus
  2432.  
  2433. lea ModemCheckerName(pc),a1    ;get ModemCheckerName-Address
  2434. bsr Task            ;branch to subroutine
  2435. cmp.l #0,d0            ;Zero ?
  2436. bne ModemChecker        ;No, its the ModemChecker-virus
  2437.  
  2438. cmp.l #0,RLBase            ;RLBase available ?
  2439. beq KillMem            ;No, branch to KillMem
  2440. move.l RLBase(pc),a6        ;get RLBase
  2441. cmp.l #0,RLStructPtr        ;RLStruct available ?
  2442. beq KillMem            ;No, branch to KillMem
  2443. move.l RLStructPtr(pc),a0    ;get RLStructPtr
  2444. jsr rlKillMemV(a6)        ;call subroutine
  2445. move.l RLStructPtr(pc),a0    ;get RLStruct
  2446. cmp.l #0,4(a0)            ;virus in memory ?
  2447. beq KillMem            ;no, branch to KillMem
  2448. move.l 4(a0),a0            ;get MemoryInfection-structure
  2449. lea 4(a0),a3            ;get VirusNamePtr
  2450. bra AMIGAMemoryVirus        ;branch to subroutine
  2451.  
  2452. Task:
  2453. move.l ExecBase,a6        ;get ExecBase
  2454. jsr FindTask(a6)        ;call subroutine
  2455. rts                ;return from subroutine
  2456.  
  2457. KillMem:
  2458. move.l ExecBase,a6        ;get ExecBase
  2459. cmp.l #0,42(a6)            ;is ColdCapture at zero ?
  2460. bne AskColdCapture        ;No, branch to AskColdCapture
  2461. KillMemII:
  2462. move.l ExecBase,a6        ;get ExecBase
  2463. cmp.l #0,46(a6)            ;is CoolCapture at zero ?
  2464. bne AskCoolCapture        ;No, branch to AskCoolCapture
  2465. KillMemIII:
  2466. move.l ExecBase,a6        ;get ExecBase
  2467. cmp.l #0,550(a6)        ;is KickTagPtr at zero ?
  2468. bne AskKickTagPtr        ;No, branch to KickTagPtr
  2469.  
  2470. KillMem2:
  2471. bra NoAMIGAMemoryVirus        ;branch to NoAMIGAMemoryVirus
  2472.  
  2473. AskColdCapture:
  2474. Requester #AColdText,#Yes,#No,#360,#70
  2475. cmp.l #1,d0            ;was Yes-Gadget touched ?
  2476. beq KillColdCapture        ;Yes, KillColdCapture
  2477. bra KillMemII            ;No, branch to KillMemII
  2478.  
  2479. AskCoolCapture:
  2480. Requester #ACoolText,#Yes,#No,#360,#70
  2481. cmp.l #1,d0            ;was Yes-Gadaget touched ?
  2482. beq KillCoolCapture        ;Yes, KillCoolCapture
  2483. bra KillMemIII            ;No, branch to KillMemIII
  2484.  
  2485. AskKickTagPtr:
  2486. Requester #AKickText,#Yes,#No,#360,#70
  2487. cmp.l #1,d0            ;was Yes-Gadget touched
  2488. beq KillKickTagPtr        ;Yes, KillKickTagPtr
  2489. bra NoAMIGAMemoryVirus        ;No, branch to NoAMIGAMemoryVirus
  2490.  
  2491. KillColdCapture:
  2492. move.l 4,a6            ;get ExecBase
  2493. clr.l 42(a6)            ;clear ColdCapture
  2494. bsr ChkSum            ;calculate new ChkSum
  2495. bra KillMemII            ;branch to KillMemII
  2496.  
  2497. KillCoolCapture:
  2498. move.l 4,a6            ;get ExecBase
  2499. clr.l 46(a6)            ;clear CoolCapture
  2500. bsr ChkSum            ;calculate new ChkSum
  2501. bra KillMemIII            ;branch to KillMemIII
  2502.  
  2503. ChkSum:
  2504. clr.w 82(a6)            ;clear old ChkSum
  2505. lea 34(a6),a0            ;get Versionnumber
  2506. clr.l d0            ;clear d0
  2507. moveq #23,d0            ;get counter
  2508. clr.w d1            ;clear d1
  2509. ChkSumLoop:
  2510. add.w (a0)+,d1            ;add the lower words
  2511.                 ;of the ExecBase-structure
  2512. dbf d0,ChkSumLoop        ;until d0 is count down
  2513.  
  2514. not.w d1            ;invert this sum
  2515. move.w d1,82(a6)        ;get new ChkSum
  2516. clr.l d0            ;clear d0
  2517. rts                ;return from subroutine
  2518.  
  2519. KillKickMemPtr:
  2520. move.l 4,a6            ;get ExecBase
  2521. move.l 546(a6),a0        ;get KickMemPtr
  2522. move.l (a0),d0            ;get successor
  2523. move.l d0,546(a6)        ;enter address of successor
  2524.                 ;to KickMemPtr
  2525. bsr KillKickCheckSum        ;calculate new KickCheckSum
  2526. rts                ;return from subroutine
  2527.  
  2528. KillKickTagPtr:
  2529. move.l 4,a6            ;get ExecBase
  2530. move.l 550(a6),a0        ;get KickTagPtr
  2531. move.l 4(a0),d0            ;get successor
  2532. move.l d0,550(a6)        ;enter address of successor
  2533.                 ;to KickTagPtr
  2534. cmp.l #0,550(a6)        ;new entry ?
  2535. beq NoAMIGAMemoryVirus        ;No, branch to NoAMIGAMemoryVirus
  2536. sub.l #$80000000,550(a6)    ;remove bit
  2537. bsr KillKickCheckSum        ;calculate new KickCheckSum
  2538. bra NoAMIGAMemoryVirus        ;branch to NoAMIGAMemoryVirus
  2539.  
  2540. KillKickCheckSum:
  2541. move.l 4,a6            ;get ExecBase
  2542. jsr -612(a6)            ;call subroutine
  2543. move.l d0,554(a6)        ;enter new KickCheckSum
  2544.                 ;to KickCheckSum
  2545. rts                ;return from subroutine
  2546.  
  2547. FindTrackDisk:
  2548. move.l ExecBase,a6        ;get ExecBase
  2549. lea $0000015E(a6),a0        ;get ListPtr
  2550. lea TrackName(pc),a1        ;get DevName
  2551. jsr FindName(a6)        ;call subroutine
  2552. move.l d0,a1            ;get address of TrackDisk
  2553. rts                ;return from subroutine
  2554.  
  2555. Findkeyboard:
  2556. move.l ExecBase,a6        ;get ExecBase
  2557. lea $0000015E(a6),a0        ;get ListPtr
  2558. lea KeyName(pc),a1        ;get DevName
  2559. jsr FindName(a6)        ;call subroutine
  2560. move.l d0,a1            ;get address of Keyboard
  2561. rts                ;return from subroutine
  2562.  
  2563. returntoSystem:
  2564. rts                ;return from subroutine
  2565.  
  2566. even
  2567. ROMTag:
  2568. dc.l 0
  2569.  
  2570. even
  2571. AColdText:
  2572. dc.b `Shall I restore ColdCapture ?`,0
  2573.  
  2574. even
  2575. ACoolText:
  2576. dc.b `Shall I restore CoolCapture ?`,0
  2577.  
  2578. even
  2579. AKickText:
  2580. dc.b `Shall I restore KickTagPtr ?`,0
  2581.  
  2582. even
  2583. TrackName:
  2584. dc.b `trackdisk.device`,0
  2585.  
  2586. even
  2587. KeyName:
  2588. dc.b `keyboard.device`,0
  2589.  
  2590. even
  2591. Hochofenname:
  2592. dc.b `Greetings to Hochofen`,0
  2593.  
  2594. even
  2595. ModemCheckerName:
  2596. dc.b `Diskdriver.proc`,0
  2597.  
  2598. even
  2599. AbsoluteMemoryPositionVirusNameList:
  2600. dc.l The16BitCrewText
  2601. dc.l The2001Text
  2602. dc.l AEKText
  2603. dc.l AIDSText
  2604. dc.l AlienNewBeatText
  2605. dc.l AmigaMasterText
  2606. dc.l ASSText
  2607. dc.l ASVText
  2608. dc.l AsylantText
  2609. dc.l BamigaSectorOneText
  2610. dc.l BBProtText
  2611. dc.l BeethovenText
  2612. dc.l BigBossText
  2613. dc.l BlackflashText
  2614. dc.l BladeRunnersText
  2615. dc.l BLFText
  2616. dc.l BlowJobText
  2617. dc.l BretHawnesText
  2618. dc.l ButonicText
  2619. dc.l ByteVoyagerText
  2620. dc.l ByteVoyagerIIText
  2621. dc.l CascadeText
  2622. dc.l ClonkText
  2623. dc.l CodersNightmareText
  2624. dc.l ColorText
  2625. dc.l CompuPhagozyteText
  2626. dc.l CompuPhagozyte2Text
  2627. dc.l CompuPhagozyteIIText
  2628. dc.l CompuPhagozyteIIIText
  2629. dc.l CompuPhagozyteIIIBCText
  2630. dc.l CompuPhagozyteIVText
  2631. dc.l DStructureText
  2632. dc.l DAGText
  2633. dc.l DAT89Text
  2634. dc.l DATACRIMEText
  2635. dc.l DigitalEmotionsText
  2636. dc.l DisgustText
  2637. dc.l DiskguardText
  2638. dc.l DiskHerpesText
  2639. dc.l DiskTerminatorText
  2640. dc.l DottyText
  2641. dc.l DUMDUMText
  2642. dc.l ExcrementText
  2643. dc.l ExecutorsText
  2644. dc.l FASTText
  2645. dc.l FastEddieText
  2646. dc.l GadaffiText
  2647. dc.l GlasnostText
  2648. dc.l GoldenRiderText
  2649. dc.l GraffitiText
  2650. dc.l GremlinText
  2651. dc.l GXTeamText
  2652. dc.l GyrosText
  2653. dc.l HCSText
  2654. dc.l HCSIIText
  2655. dc.l HillyText
  2656. dc.l HODENText
  2657. dc.l IceText
  2658. dc.l IndianaJonesText
  2659. dc.l InfectorText
  2660. dc.l InfluenzaText
  2661. dc.l INGOText
  2662. dc.l JITRText
  2663. dc.l JulieText
  2664. dc.l KaukiText
  2665. dc.l KefrensText
  2666. dc.l KilledText
  2667. dc.l LADSText
  2668. dc.l LoverboySexmachineText
  2669. dc.l LSDText
  2670. dc.l MADIIText
  2671. dc.l MEXXText
  2672. dc.l MGM89Text
  2673. dc.l MOSHText
  2674. dc.l MOSH2Text
  2675. dc.l MutilatorText
  2676. dc.l NANOoldText
  2677. dc.l NANOnewText
  2678. dc.l NastyNastyText
  2679. dc.l NorthStarText
  2680. dc.l NorthStarIIText
  2681. dc.l OverkillText
  2682. dc.l PARATAXIText
  2683. dc.l PARATAXIIIText
  2684. dc.l PayDayText
  2685. dc.l PentagonSlayerText
  2686. dc.l PentagonSlayer2Text
  2687. dc.l PentagonSlayer3Text
  2688. dc.l PlastiqueText
  2689. dc.l REPText
  2690. dc.l REVENGEText
  2691. dc.l SachsenText
  2692. dc.l SADDAMHUSSEINText
  2693. dc.l SaoPauloText
  2694. dc.l SATANText
  2695. dc.l SCAText
  2696. dc.l SendarionText
  2697. dc.l SherlockText
  2698. dc.l SmilyCancerText
  2699. dc.l SSText
  2700. dc.l SSIIText
  2701. dc.l SuicideMachineText
  2702. dc.l SuperboyText
  2703. dc.l SupplyTeamText
  2704. dc.l SystemZV30Text
  2705. dc.l SystemZV40Text
  2706. dc.l SystemZV50Text
  2707. dc.l SystemZV51Text
  2708. dc.l SystemZV53Text
  2709. dc.l SystemZV54Text
  2710. dc.l SystemZV61Text
  2711. dc.l TargetText
  2712. dc.l TelStarText
  2713. dc.l TermigatorText
  2714. dc.l TIMEBOMBText
  2715. dc.l TNKText
  2716. dc.l TomatesGentechnic10Text
  2717. dc.l TomatesGentechnic20text
  2718. dc.l TURKText
  2719. dc.l UltrafoxText
  2720. dc.l USSR492Text
  2721. dc.l VirusConstructionSetBootblockText
  2722. dc.l VirusSlayerText
  2723. dc.l VirusV1Text
  2724. dc.l WahnfriedText
  2725. dc.l WARHAWKText
  2726. dc.l ZaccessV10Text
  2727. dc.l ZLXText
  2728. dc.l ZombiText
  2729.  
  2730. even
  2731. AbsoluteMemoryPositionVirusTestbytesList:
  2732. dc.l $43726577
  2733. dc.l $30303132
  2734. dc.l ` AEK`
  2735. dc.l $48495621
  2736. dc.l `ALIE`
  2737. dc.l `Mast`
  2738. dc.l `ROTE`
  2739. dc.l `SV!A`
  2740. dc.l `ASYL`
  2741. dc.l `BS1!`
  2742. dc.l `B-Pr`
  2743. dc.l `BETH`
  2744. dc.l `A!BI`
  2745. dc.l `blac`
  2746. dc.l `lade`
  2747. dc.l `trac`
  2748. dc.l `cato`
  2749. dc.l `BRET`
  2750. dc.l `BAHA`
  2751. dc.l `VOYA`
  2752. dc.l `oyag`
  2753. dc.l `Casc`
  2754. dc.l `LONK`
  2755. dc.l `oder`
  2756. dc.l `TURK`
  2757. dc.l `gozy`
  2758. dc.l `The `
  2759. dc.l `COMP`
  2760. dc.l `agoz`
  2761. dc.l `gozy`
  2762. dc.l `agoz`
  2763. dc.l `Stru`
  2764. dc.l `from`
  2765. dc.l `T '8`
  2766. dc.l `DATA`
  2767. dc.l `EMOT`
  2768. dc.l `Viru`
  2769. dc.l `DISK`
  2770. dc.l ` H e`
  2771. dc.l `isk-`
  2772. dc.l `Dott`
  2773. dc.l `MDUM`
  2774. dc.l `EXCR`
  2775. dc.l `XECU`
  2776. dc.l `ains`
  2777. dc.l `EDDI`
  2778. dc.l $47414441
  2779. dc.l `Glas`
  2780. dc.l `Gold`
  2781. dc.l `fiti`
  2782. dc.l `grap`
  2783. dc.l `libr`
  2784. dc.l `GYRO`
  2785. dc.l $482E432E
  2786. dc.l `H.C.`
  2787. dc.l `dos.`
  2788. dc.l `HODE`
  2789. dc.l `INC!`
  2790. dc.l `ndia`
  2791. dc.l `INFE`
  2792. dc.l `I N `
  2793. dc.l `INGO`
  2794. dc.l `JITR`
  2795. dc.l `dos.`
  2796. dc.l `dos.`
  2797. dc.l `efre`
  2798. dc.l `Kill`
  2799. dc.l `LADS`
  2800. dc.l `Love`
  2801. dc.l $4C534421
  2802. dc.l $004D4144
  2803. dc.l `MEXX`
  2804. dc.l `MGM8`
  2805. dc.l `MOSH`
  2806. dc.l `MOSH`
  2807. dc.l `grap`
  2808. dc.l `N A `
  2809. dc.l `Nano`
  2810. dc.l `Nast`
  2811. dc.l $4E4F5254
  2812. dc.l $57726974
  2813. dc.l `Over`
  2814. dc.l `PARA`
  2815. dc.l `PARA`
  2816. dc.l `PayD`
  2817. dc.l $656E7461
  2818. dc.l `enta`
  2819. dc.l `enta`
  2820. dc.l ` L A`
  2821. dc.l `REP!`
  2822. dc.l $52657665
  2823. dc.l `ACHS`
  2824. dc.l `2000`
  2825. dc.l `PAUL`
  2826. dc.l `ATAN`
  2827. dc.l $53434121
  2828. dc.l `Send`
  2829. dc.l `ORSI`
  2830. dc.l $52494F4E
  2831. dc.l `!SS!`
  2832. dc.l `HEIL`
  2833. dc.l `uici`
  2834. dc.l `Supe`
  2835. dc.l `uppl`
  2836. dc.l ` V3.`
  2837. dc.l ` V4.`
  2838. dc.l ` V5.`
  2839. dc.l `5.1 `
  2840. dc.l `V5.3`
  2841. dc.l `V5.4`
  2842. dc.l `V6.1`
  2843. dc.l $43524E00
  2844. dc.l `grap`
  2845. dc.l `NsAx`
  2846. dc.l $424F4D42
  2847. dc.l `TNK!`
  2848. dc.l `OMAT`
  2849. dc.l `Toma`
  2850. dc.l `TURK`
  2851. dc.l `NuNu`
  2852. dc.l `Sent`
  2853. dc.l $00BFE001
  2854. dc.l `VIRU`
  2855. dc.l `sind`
  2856. dc.l `AHNF`
  2857. dc.l `WARH`
  2858. dc.l `ZACC`
  2859. dc.l `ZLX!`
  2860. dc.l `bi I`
  2861.  
  2862. even
  2863. AbsoluteMemorypositionVirusOffsetList:
  2864. dc.l $0007EDE0
  2865. dc.l $0007EFE8
  2866. dc.l $0007EFD0
  2867. dc.l $0007EFF0
  2868. dc.l $00020240
  2869. dc.l $0007EF30
  2870. dc.l $0007F4B2
  2871. dc.l $0007DF00
  2872. dc.l $0007EF30
  2873. dc.l $0007EFE8
  2874. dc.l $0007A338
  2875. dc.l $0007F008
  2876. dc.l $0007EFE2
  2877. dc.l $0007F010
  2878. dc.l $0007EF30
  2879. dc.l $0007F31A
  2880. dc.l $0007F02E
  2881. dc.l $0007F004
  2882. dc.l $0007EF2C
  2883. dc.l $0007F330
  2884. dc.l $0007F2E2
  2885. dc.l $0007E3E2
  2886. dc.l $0007D398
  2887. dc.l $0007FA5C
  2888. dc.l $00070260
  2889. dc.l $0007C400
  2890. dc.l $0007C380
  2891. dc.l $0007C1B0
  2892. dc.l $0007C35C
  2893. dc.l $0007C030
  2894. dc.l $0007C030
  2895. dc.l $0007C168
  2896. dc.l $0007EFB6
  2897. dc.l $0007FAC0
  2898. dc.l $0007DDC6
  2899. dc.l $0007EE80
  2900. dc.l $0007EDB8
  2901. dc.l $0007FCF4
  2902. dc.l $0007EF90
  2903. dc.l $0007EF24
  2904. dc.l $0007F018
  2905. dc.l $0007FA10
  2906. dc.l $0007F454
  2907. dc.l $0007EF48
  2908. dc.l $0007F240
  2909. dc.l $0007F3D4
  2910. dc.l $0007FB40
  2911. dc.l $0007F730
  2912. dc.l $0007C34C
  2913. dc.l $0007EF90
  2914. dc.l $0007F760
  2915. dc.l $0007F8C0
  2916. dc.l $0007EE3E
  2917. dc.l $0007EF44
  2918. dc.l $0007EF4E
  2919. dc.l $0007F440
  2920. dc.l $0007F2D4
  2921. dc.l $0007EFE4
  2922. dc.l $0007E91E
  2923. dc.l $0007F310
  2924. dc.l $0007F3D2
  2925. dc.l $0007F408
  2926. dc.l $0007EC18
  2927. dc.l $0007F826
  2928. dc.l $0007EE98
  2929. dc.l $0007EFAC
  2930. dc.l $0007EE64
  2931. dc.l $0007F408
  2932. dc.l $0007EDD6
  2933. dc.l $0007EFE4
  2934. dc.l $0007FB72
  2935. dc.l $0007EFE4
  2936. dc.l $0007E582
  2937. dc.l $0007C016
  2938. dc.l $0007C016
  2939. dc.l $0007CD4C
  2940. dc.l $0007C492
  2941. dc.l $0007C03A
  2942. dc.l $0007F1D6
  2943. dc.l $0007EF84
  2944. dc.l $0007EF9A
  2945. dc.l $0007F722
  2946. dc.l $0007EFCC
  2947. dc.l $0007EE82
  2948. dc.l $0007EC10
  2949. dc.l $0007FD86
  2950. dc.l $0007F368
  2951. dc.l $0007E2DA
  2952. dc.l $0007EE12
  2953. dc.l $0007EFE4
  2954. dc.l $0007E3E2
  2955. dc.l $000782D8
  2956. dc.l $0007F012
  2957. dc.l $0007FEF0
  2958. dc.l $0007CF26
  2959. dc.l $0007EFE8
  2960. dc.l $0007E3E2
  2961. dc.l $0007FCF6
  2962. dc.l $0007FB00
  2963. dc.l $0007C012
  2964. dc.l $0007C01A
  2965. dc.l $0007E424
  2966. dc.l $0007EEE2
  2967. dc.l $0007F2C8
  2968. dc.l $0007F42A
  2969. dc.l $0007F42A
  2970. dc.l $0007F42A
  2971. dc.l $0007F42C
  2972. dc.l $0007F42A
  2973. dc.l $0007F42A
  2974. dc.l $0007F42A
  2975. dc.l $0007ED9C
  2976. dc.l $0007FED4
  2977. dc.l $0007F712
  2978. dc.l $00070346
  2979. dc.l $0007EFE4
  2980. dc.l $00070182
  2981. dc.l $0007F640
  2982. dc.l $0007F066
  2983. dc.l $0007EDB0
  2984. dc.l $0007F454
  2985. dc.l $0007F146
  2986. dc.l $0007FA10
  2987. dc.l $0007EF22
  2988. dc.l $0007F312
  2989. dc.l $0007E966
  2990. dc.l $0007EDD6
  2991. dc.l $0007EFE4
  2992. dc.l $0007A18C
  2993.  
  2994.  
  2995. even
  2996. ColdRelativeMemoryPositionVirusNameList:
  2997. dc.l DestructorText
  2998. dc.l DiskVal1234Text
  2999. dc.l HARDEXText
  3000. dc.l Joshua2Text
  3001. dc.l LAMEText
  3002. dc.l LOOMText
  3003. dc.l RISCText
  3004. dc.l SADDAMText
  3005.  
  3006. even
  3007. ColdRelativeMemoryPositionVirusTestbytesList:
  3008. dc.l `estr`
  3009. dc.l $0C681234
  3010. dc.l `RDEX`
  3011. dc.l `trac`
  3012. dc.l `LAME`
  3013. dc.l `LOOO`
  3014. dc.l `ISC `
  3015. dc.l `libr`
  3016.  
  3017. even
  3018. ColdRelativeMemoryPositionVirusOffsetList:
  3019. dc.l $00000180
  3020. dc.l $00000148
  3021. dc.l $0000057E
  3022. dc.l $00000242
  3023. dc.l $0000014A
  3024. dc.l $0000057C
  3025. dc.l $0000057E
  3026. dc.l $00000560
  3027.  
  3028. even
  3029. CoolRelativeMemoryPositionVirusNameList:
  3030. dc.l AIDS2Text
  3031. dc.l AngelText
  3032. dc.l AustralianParasiteText
  3033. dc.l BadBytesText
  3034. dc.l BlizzProV31Text
  3035. dc.l BlizzProV33Text
  3036. dc.l CCCPText
  3037. dc.l CrackerExterminatorText
  3038. dc.l Crime2Text
  3039. dc.l CrimePlusText
  3040. dc.l DarthVaderText
  3041. dc.l DiskDoktorsText
  3042. dc.l DISKFurunkelText
  3043. dc.l DivinaExterminatorText
  3044. dc.l ExcrementText
  3045. dc.l LameBlameText
  3046. dc.l MICROSYSTEMSText
  3047. dc.l MOSH2Text
  3048. dc.l ObeliskText
  3049. dc.l PARATAXIIText
  3050. dc.l QRDLText
  3051. dc.l USSR492Text
  3052. dc.l WAFTText
  3053.  
  3054. even
  3055. CoolRelativeMemoryPositionVirusTestbytesList:
  3056. dc.l `A'e*`
  3057. dc.l `Ange`
  3058. dc.l `Aust`
  3059. dc.b `TTS `
  3060. dc.l `Bliz`
  3061. dc.l `Bliz`
  3062. dc.l `CCCP`
  3063. dc.l `CRAC`
  3064. dc.l `Crim`
  3065. dc.l `rime`
  3066. dc.l `DART`
  3067. dc.l `Dokt`
  3068. dc.l `DISK`
  3069. dc.l `IVIN`
  3070. dc.l `EXCR`
  3071. dc.l `ameB`
  3072. dc.l `MICR`
  3073. dc.l `MOSH`
  3074. dc.l `GURU`
  3075. dc.l `ARAT`
  3076. dc.l `QRDL`
  3077. dc.l `Sent`
  3078. dc.l `est-`
  3079.  
  3080. even
  3081. CoolRelativeMemoryPositionVirusOffsetList:
  3082. dc.l $0000033E
  3083. dc.l $00000262
  3084. dc.l $000002DE
  3085. dc.l $00000310
  3086. dc.l -$00000222
  3087. dc.l -$00000238
  3088. dc.l -$00000030
  3089. dc.l -$00000096
  3090. dc.l $00000346
  3091. dc.l $000002B8
  3092. dc.l $00000268
  3093. dc.l $0000017C
  3094. dc.l $0000035C
  3095. dc.l $000002EA
  3096. dc.l -$00000026
  3097. dc.l $00000050
  3098. dc.l $0000032C
  3099. dc.l -$00000072
  3100. dc.l -$00000034
  3101. dc.l $0000013C
  3102. dc.l $00000190
  3103. dc.l -$00000026
  3104. dc.l $000002DE
  3105.  
  3106. even
  3107. KickTagRelativeMemoryPositionVirusNameList:
  3108. dc.l AmigaFreakText
  3109. dc.l AmigaKnightText
  3110. dc.l BGS9Text
  3111. dc.l BootXText
  3112. dc.l ByteBanditText
  3113. dc.l ByteBanditPlusText
  3114. dc.l ByteBandit2Text
  3115. dc.l ByteBanditturboText
  3116. dc.l ByteWarriorText
  3117. dc.l CobraText
  3118. dc.l DetlefText
  3119. dc.l DisasterMasterText
  3120. dc.l ElectroVisionText
  3121. dc.l EuropeanText
  3122. dc.l ExtremeText
  3123. dc.l FICAText
  3124. dc.l ForpibText
  3125. dc.l FrityText
  3126. dc.l GermanyText
  3127. dc.l GuardiansBootAidsText
  3128. dc.l HaukeText
  3129. dc.l IncognitoText
  3130. dc.l IngerIQText
  3131. dc.l IngosReturnText
  3132. dc.l IRQText
  3133. dc.l JeffBUTONICV131Text
  3134. dc.l JeffBUTONICV300Text
  3135. dc.l JoshuaText
  3136. dc.l LamerExterminatoroldIIIText
  3137. dc.l LamerExterminatornewText
  3138. dc.l LamerExterminatorIText
  3139. dc.l LamerExterminatorIIText
  3140. dc.l LamerExterminatorIVVText
  3141. dc.l LamerExterminatorVIText
  3142. dc.l LamerExterminatorVIIText
  3143. dc.l LamerExterminatorVIIIText
  3144. dc.l NaSTText
  3145. dc.l Obelisk2Text
  3146. dc.l OPAPAText
  3147. dc.l ReturnoftheLamerExterminatorText
  3148. dc.l RevengeBootloaderText
  3149. dc.l RevengeOfTheLAMERExterminatorText
  3150. dc.l RevengeOfTheLAMERExterminatorText
  3151. dc.l SCARFACEText
  3152. dc.l SEPULTURAText
  3153. dc.l ShitText
  3154. dc.l SonjaText
  3155. dc.l SystemZV64Text
  3156. dc.l SystemZV65Text
  3157. dc.l TerroristsText
  3158. dc.l TFCRevengeText
  3159. dc.l UKLamerStyleText
  3160. dc.l VIPHSText
  3161. dc.l WarsawAvengerText
  3162. dc.l ZaccessV20Text
  3163. dc.l ZaccessV30Text
  3164.  
  3165. even
  3166. KickTagRelativeMemoryPositionVirusTestbytesList:
  3167. dc.l `AMIG`
  3168. dc.l `STAR`
  3169. dc.l `TTV1`
  3170. dc.l `Boot`
  3171. dc.l $42616E64
  3172. dc.l `NqNq`
  3173. dc.l `dos.`
  3174. dc.l `trac`
  3175. dc.l `Viru`
  3176. dc.l `OBRA`
  3177. dc.l `intu`
  3178. dc.l `-seq`
  3179. dc.l `ELEC`
  3180. dc.l `Euro`
  3181. dc.l `XTRE`
  3182. dc.l `F.I.`
  3183. dc.l `FORP`
  3184. dc.l `rity`
  3185. dc.l `Germ`
  3186. dc.l `-aid`
  3187. dc.l `Hauk`
  3188. dc.l `dos.`
  3189. dc.l `nger`
  3190. dc.l `INGO`
  3191. dc.l `RQ-T`
  3192. dc.l `JEFF`
  3193. dc.l `DASA`
  3194. dc.l `trac`
  3195. dc.l `LAME`
  3196. dc.l `LAME`
  3197. dc.l `AMER`
  3198. dc.l `LAME`
  3199. dc.l `AMER`
  3200. dc.l `AMER`
  3201. dc.l `LAME`
  3202. dc.l `LAME`
  3203. dc.l `NaST`
  3204. dc.l `BELI`
  3205. dc.l `PARA`
  3206. dc.l `amer`
  3207. dc.l `Reve`
  3208. dc.l $38204F63
  3209. dc.l `1986`
  3210. dc.l `SCAR`
  3211. dc.l `brar`
  3212. dc.l `SHIT`
  3213. dc.l `onja`
  3214. dc.l `V6.4`
  3215. dc.l `V6.5`
  3216. dc.l `TTV1`
  3217. dc.l `anat`
  3218. dc.l `devi`
  3219. dc.l `VIPH`
  3220. dc.l `rsaw`
  3221. dc.l `ZACC`
  3222. dc.l `ACCE`
  3223.  
  3224. even
  3225. KickTagRelativeMemoryPositionVirusOffsetList:
  3226. dc.l -$000003C4
  3227. dc.l $00000242
  3228. dc.l $00000A26
  3229. dc.l -$00000184
  3230. dc.l -$000003C2
  3231. dc.l -$0000013C
  3232. dc.l -$000003BC
  3233. dc.l -$0000002A
  3234. dc.l $000002B4
  3235. dc.l -$00000052
  3236. dc.l $00000218
  3237. dc.l $00000562
  3238. dc.l -$000003D2
  3239. dc.l -$000003D2
  3240. dc.l -$000001A2
  3241. dc.l $000004CA
  3242. dc.l -$000003C8
  3243. dc.l -$000003CA
  3244. dc.l -$000003D2
  3245. dc.l -$00000024
  3246. dc.l -$000003D2
  3247. dc.l -$000003BE
  3248. dc.l -$000003CE
  3249. dc.l -$0000002A
  3250. dc.l -$00000348
  3251. dc.l $0000099C
  3252. dc.l $000001A6
  3253. dc.l $000000EA
  3254. dc.l -$0000002E
  3255. dc.l -$00000028
  3256. dc.l -$00000022
  3257. dc.l -$0000002A
  3258. dc.l -$00000026
  3259. dc.l -$00000028
  3260. dc.l -$00000090
  3261. dc.l -$00000064
  3262. dc.l $0000009C
  3263. dc.l -$0000009C
  3264. dc.l -$00000098
  3265. dc.l -$000000DC
  3266. dc.l -$000003B8
  3267. dc.l -$00000834
  3268. dc.l -$0000082A
  3269. dc.l -$0000003E
  3270. dc.l $00000698
  3271. dc.l -$0000017C
  3272. dc.l -$0000001E
  3273. dc.l -$000003DA
  3274. dc.l -$000003DA
  3275. dc.l $0000007A
  3276. dc.l -$00000126 
  3277. dc.l -$000000E0
  3278. dc.l -$00000398
  3279. dc.l -$00000370
  3280. dc.l -$000003CC
  3281. dc.l -$0000019C
  3282.  
  3283. NoAMIGAMemoryVirus:
  3284. cmp.b #$FF,fastcheck        ;was fastcheck-flag set ?
  3285. beq returntoSystem        ;Yes, returntoSystem
  3286.  
  3287. move.l ExecBase,a6        ;get ExecBase
  3288. move.l #MEMF_LARGEST,d1        ;want connected memory
  3289. move.l #$5000,d0        ;want $5000 bytes
  3290. jsr AllocMem(a6)        ;call subroutine
  3291.  
  3292. move.l d0,DiskValMem        ;get MemPtr
  3293. tst.l d0            ;error ?
  3294. beq NoMemAlert            ;Yes, branch to NoMemAlert
  3295. clr.b TrackdiskFlag        ;clear TrackDiskFlag
  3296.  
  3297. clr.l AddressCounter        ;clear AddressCounter
  3298. clr.l DriveCounter        ;clear DriveCounter
  3299. clr.l DriveLoopCounter        ;clear DriveLoopCounter
  3300. clr.l OpenDriveCount        ;clear OpenDriveCount
  3301.  
  3302. OpenDrivesLoop:
  3303. bsr BootblockStart        ;open TrackDiskDevice
  3304. cmp.b #$FF,TrackdiskFlag    ;No more drives ?
  3305. beq OpenDrivesLoopEnd        ;Yes, end the loop
  3306. add.l #4,AddressCounter        ;count up AddressCounter
  3307. add.l #1,DriveCounter        ;count up DriveCounter
  3308. add.l #1,OpenDriveCount        ;count up OpenDriveCount
  3309. cmp.l #4,OpenDriveCount        ;all floopydisks opened ?
  3310. bne OpenDrivesLoop
  3311.  
  3312. OpenDrivesLoopEnd:
  3313. cmp.l #0,OpenDriveCount        ;TrackDisk-Error ?
  3314. beq IntuiEnde2            ;Yes, branch to IntuiEnde2
  3315.  
  3316. sub.l #4,AddressCounter        ;correct AddressCounter
  3317. sub.l #1,DriveCounter        ;correct DriveCounter
  3318.  
  3319. move.l Intuibase(pc),a6        ;get Intuibase
  3320. lea NewWindow(pc),a0        ;get NewWindow-structure
  3321. jsr OpenWindow(a6)        ;call subroutine
  3322. move.l d0,Winhandle        ;get Winhandle
  3323. bra IntuiWait3            ;branch to IntuiWait3
  3324.  
  3325. IntuiWait:
  3326. move.l Winhandle(pc),a0        ;get Winhandle
  3327. move.l ExecBase,a6        ;get ExecBase
  3328. move.l 86(a0),a0        ;get Message
  3329. jsr GetMsg(a6)            ;call subroutine
  3330.  
  3331. IntuiWait3:
  3332. move.l Winhandle(pc),a0        ;get Winhandle
  3333. move.l 86(a0),a0        ;get Message
  3334. move.l ExecBase,a6        ;get ExecBase
  3335. jsr WaitPort(a6)        ;call subroutine
  3336. move.l d0,a1            ;get Message
  3337. move.l 20(a1),d1        ;write Message to d1    
  3338. cmp.l #$8000,d1            ;Diskinserted ?
  3339. beq VirusCheck          ;Yes, branch to VirusCheck
  3340.  
  3341. IntuiPart2:
  3342. cmp.l #$200,d1            ;WindowClosed ?
  3343. beq IntuiEnde            ;Yes, end Intui
  3344. bra IntuiWait            ;branch to IntuiWait
  3345.  
  3346. IntuiEnde:
  3347. move.l Winhandle(pc),a0        ;get Winhandle
  3348. move.l Intuibase(pc),a6        ;get Intuibase
  3349. jsr CloseWindow(a6)        ;call subroutine
  3350.  
  3351. clr.l AddressCounter        ;clear AddressCounter
  3352. clr.l DriveCounter        ;clear DriveCounter
  3353. clr.l DriveLoopCounter        ;clear DriveLoopCounter
  3354.  
  3355. CloseDriveLoop:
  3356. add.l #1,DriveLoopCounter    ;count up DriveLoopCounter
  3357. bsr BootblockEnde        ;close TrackDiskDevice
  3358. add.l #4,AddressCounter        ;count up AddressCounter
  3359. add.l #1,DriveCounter        ;count up DriveCounter
  3360. move.l DriveLoopCounter(pc),d0    ;get DriveLoopCounter
  3361. cmp.l OpenDriveCount(pc),d0    ;all drives closed ?
  3362. bne CloseDriveLoop        ;No, continue the loop
  3363.  
  3364. IntuiEnde2:
  3365. move.l ExecBase,a6        ;get ExecBase
  3366. move.l DiskValMem(pc),a1    ;get DiskValMemPtr
  3367. move.l #$5000,d0        ;deallocate $5000 bytes
  3368. jsr FreeMem(a6)            ;call subroutine
  3369. rts                ;return from subroutine
  3370.  
  3371. Even
  3372. NewWindow:
  3373. dc.w 100
  3374. dc.w 0
  3375. dc.w 400
  3376. dc.w 10
  3377. dc.b 0
  3378. dc.b 1
  3379. dc.l $200!$8000
  3380. dc.l $1000!1!2!4!8
  3381. dc.l 0
  3382. dc.l 0
  3383. dc.l Windowtitle
  3384. dc.l 0
  3385. dc.l 0
  3386. dc.w 300
  3387. dc.w 10
  3388. dc.w 300
  3389. dc.w 10
  3390. dc.w 1
  3391.  
  3392.  
  3393. even
  3394. WindowTitle:
  3395. dc.b `AntiCicloVir V2.4a by Matthias Gutt`,0
  3396.  
  3397. even
  3398. Winhandle:
  3399. dc.l 0
  3400.  
  3401.  
  3402. BootblockStart:
  3403. move.l ExecBase,a6        ;get ExecBase
  3404. move.l #MEMF_CHIP!MEMF_PUBLIC!MEMF_LARGEST,d1;get connected CHIP-RAM
  3405. move.l #$2048,d0        ;want $2048 bytes
  3406. jsr AllocMem(a6)        ;call subroutine
  3407. tst.l d0            ;error ?
  3408. beq BootblockCheckEnde        ;Yes, end BootblockCheck
  3409. lea Sectorbuffer(pc),a0        ;get Sectorbufferbase
  3410. add.l AddressCounter(pc),a0    ;get AddressCounter
  3411. move.l d0,(a0)          ;No, get Sectorbufferaddress
  3412. move.l d0,TrackSecBuffer    ;get Sectorbuffer in TrackDiskIOStdReq-structure
  3413.  
  3414. move.l ExecBase,a6        ;get ExecBase
  3415. move.l #MEMF_CHIP!MEMF_PUBLIC!MEMF_LARGEST,d1;get connected CHIP-RAM
  3416. move.l #64,d0            ;need 64 bytes for Labelbuffer
  3417. jsr AllocMem(a6)        ;call subroutine
  3418. tst.l d0            ;error ?
  3419. beq BootBlockCheckEnde2        ;Yes, end BootblockCheck
  3420. lea Labelbuffer(pc),a0        ;get Labelbufferbase
  3421. add.l AddressCounter(pc),a0    ;get AddressCounter
  3422. move.l d0,(a0)            ;get Labelbufferaddress
  3423. move.l d0,TrackLabBuffer    ;get Labelbuffer in TrackDiskIORequest-structure
  3424.  
  3425. cmp.l #0,DriveCounter        ;first floopydisk ?
  3426. bne BootblockStart2        ;No, skip to BootBlockStart2
  3427.  
  3428. move.l #0,a1            ;my task
  3429. bsr Task            ;branch to subroutine
  3430. move.l d0,AntiCicloTask        ;get TaskPtr
  3431.  
  3432. move.l ExecBase,a6        ;get ExecBase
  3433. move.l #-1,d0            ;allocate free signal
  3434. jsr AllocSignal(a6)        ;call subroutine
  3435. cmp.l #0,d0            ;error ?
  3436. ble BootblockCheckEnde3        ;Yes, end the BootblockCheck
  3437. clr.l d7            ;No, clear d7
  3438. move.l d0,d7            ;get Signalbit
  3439. move.b d0,Sigbit        ;get Signalbit in MsgPort-Structure
  3440.  
  3441. move.l ExecBase,a6        ;get ExecBase
  3442. move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  3443. move.l #1000,d0            ;want 1000 bytes
  3444. jsr AllocMem(a6)        ;call subroutine
  3445. tst.l d0            ;error ?
  3446. beq BootBlockCheckEnde4        ;Yes, end the BootblockCheck !
  3447. move.l d0,MsgPortMem        ;No, get MsgPortMemPtr
  3448.  
  3449. move.l ExecBase,a6        ;get ExecBase
  3450. lea MsgPortStructure(pc),a0    ;get MsgPort-structure
  3451. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3452. move.l #34,d0            ;get size
  3453. jsr CopyMem(a6)            ;call subroutine
  3454.  
  3455. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3456. add.l #20,a0            ;get MsgList
  3457. move.l a0,(a0)          ;get lh_Head
  3458. move.l a0,8(a0)            ;get lh_TailPred
  3459. add.l #4,(a0)            ;get lh_Tail
  3460.  
  3461. move.l ExecBase,a6        ;get ExecBase
  3462. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3463. jsr AddPort(a6)            ;call subroutine
  3464.  
  3465. BootBlockStart2:
  3466. move.l MsgPortMem(pc),d0    ;get MsgPortMemPtr
  3467. move.l d0,TrackDiskMsgPortMem    ;insert MsgPortMemPtr in TrackDiskIOStd-Req-structure
  3468. move.l ExecBase,a6        ;get ExecBase
  3469. move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  3470. move.l #100,d0            ;need only 100 bytes
  3471. jsr AllocMem(a6)        ;call subroutine
  3472. tst.l d0            ;error ?
  3473. beq BootblockCheckEnde5        ;Yes, end BootblockCheck
  3474. lea TrackDiskIOSTDRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3475. add.l AddressCounter(pc),a0    ;get AddressCounter
  3476. move.l d0,(a0)            ;get TrackDiskIOStd-ReqMemPtr
  3477.  
  3478. move.l ExecBase,a6        ;get ExecBase
  3479. lea TrackDiskIOSTdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3480. add.l AddressCounter(pc),a0    ;get AddressCounter
  3481. move.l (a0),a1            ;get TDIOStdReqMem-Ptr
  3482. lea TrackdiskIOStdRequest(pc),a0;get TDIOStdReq-structure
  3483. move.l #100,d0            ;get size
  3484. jsr CopyMem(a6)            ;call subroutine
  3485.  
  3486. move.l ExecBase,a6        ;get ExecBase
  3487. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3488. add.l AddressCounter(pc),a0    ;get AddressCounter
  3489. move.l (a0),a1            ;get TDIOStdReqMem-Ptr
  3490. lea TrackName(PC),a0        ;get TrackName
  3491. move.l DriveCounter(pc),d0    ;use drive unit x
  3492. move.l #0,d1            ;no flags
  3493. jsr OpenDeviceRoutine(a6)    ;call subroutine
  3494. move.b #$FE,TrackDiskFlag    ;set Control Flag
  3495. tst.l d0            ;error ?
  3496. bne BootBlockCheckEnde6        ;Yes, end BootBlockCheck !
  3497. clr.b TrackDiskFlag        ;clear TrackDiskFlag
  3498. rts                ;return from subroutine
  3499.  
  3500. ReadBootBlock:
  3501. bsr DisplayCheck        ;branch to DisplayCheck
  3502. lea TrackDiskIOStdRequestMem(pc),a0;Get TDIOStdReqMemBase
  3503. add.l AddressCounter(pc),a0    ;get AddressCounter
  3504. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3505. move.w #02,28(a1)        ;enter read-command to TrackDiskIOStdReqMemPtr
  3506. move.l #2048,$24(a1)        ;enter 2048 bytes to TrackDiskIOStdReqMemPtr
  3507. bsr BootBlockCheck        ;branch to subroutine
  3508. bsr CheckTDError        ;branch to subroutine
  3509. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3510. add.l AddressCounter(pc),a0    ;get AddressCounter
  3511. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3512. move.w #09,28(a1)        ;turn off motor
  3513. move.l #0,$24(a1)        ;turn off motor
  3514. bsr BootBlockCheck        ;branch to subroutine
  3515. bsr CheckTDError        ;branch to subroutine
  3516. bsr CheckBootMem        ;branch to subroutine
  3517. rts                ;return from subroutine
  3518.  
  3519. CheckTDError:
  3520. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdRequestMemBase
  3521. add.l AddressCounter(pc),a0    ;get AddressCounter
  3522. move.l (a0),a1            ;get TrackDiskIORequestMem-Ptr
  3523. clr.l d1            ;clear d1
  3524. move.b $1F(a1),d1        ;get Error-flag
  3525. sub.b #20,d1            ;subtract error-flag
  3526. lea TDErrorlist(pc),a5        ;get TDErrorlist
  3527. clr.l d0            ;clear d0
  3528.  
  3529. CheckTDErrorLoop:
  3530. cmp.b d0,d1            ;is counter = error-flag ?
  3531. beq TDError            ;Yes, branch to TDError !
  3532. cmp.l #0,(a5)+            ;No, count up TDErrorlist !
  3533. add.l #1,d0            ;count up !
  3534. cmp.l #16,d0            ;more than 15 loops ?
  3535. bne CheckTDErrorLoop        ;No, continue the loop !
  3536. rts                ;return from subroutine
  3537.  
  3538. DisplayCheck:
  3539. move.b DriveCounter(pc),d0    ;get DriveCounter
  3540. add.b d0,DriveNumber        ;add DriveCounter to DriveNumber
  3541. move.l Intuibase(pc),a6        ;get Intuibase
  3542. move.l Winhandle(pc),a0        ;get Winhandle
  3543. lea CheckWindowTitle(pc),a1    ;get CheckWindowTitle-address
  3544. move.l #-1,a2            ;no new screen-title
  3545. jsr SetWindowTitles(a6)        ;call subroutine
  3546. move.b #$30,DriveNumber        ;set old DriveNumber
  3547. rts                ;return from subroutine
  3548.  
  3549. DisplayWindowTitle:
  3550. move.l Intuibase(pc),a6        ;get Intuibase
  3551. move.l Winhandle(pc),a0        ;get Winhandle
  3552. lea WindowTitle(pc),a1        ;get WindowTitle-address
  3553. move.l #-1,a2            ;no new screen-title
  3554. jsr SetWindowTitles(a6)        ;call subroutine
  3555. rts                ;return from subroutine
  3556.  
  3557.  
  3558. BootblockCheck:
  3559. move.l ExecBase,a6        ;get ExecBase
  3560. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3561. add.l AddressCounter(pc),a0    ;get AddressCounter
  3562. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3563. jsr DoIORoutine(a6)        ;call subroutine
  3564.  
  3565. move.l ExecBase,a6        ;get ExecBase
  3566. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3567. jsr GetMsg(a6)            ;call subroutine
  3568. move.l d0,TrackDiskMessage    ;get TrackDiskMessage
  3569. rts                ;return from subroutine
  3570.  
  3571. WriteBootBlock:
  3572. move.l ExecBase,a6        ;get ExecBase
  3573. lea Sectorbuffer(pc),a0        ;get Sectorbufferbase
  3574. add.l AddressCounter(pc),a0    ;get AddressCounter
  3575. move.l (a0),a1            ;get Sectorbuffer-Ptr
  3576. add.l #4,a1            ;use old DOS-name
  3577. lea Bootblock(pc),a0        ;get Bootblockprg-Address
  3578. clr.l d0            ;clear d0
  3579. move.b -1(a1),d0        ;calculate new BootChecksum
  3580. sub.l d0,start            ;enter new BootCheckSum
  3581. move.l #1020,d0            ;get size
  3582. jsr CopyMem(a6)            ;call subroutine
  3583.  
  3584.  
  3585. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3586. add.l AddressCounter(pc),a0    ;get AddressCounter
  3587. move.l (a0),a1            ;get TrackDiskIOStdReqMemPtr
  3588. move.w #03,28(a1)        ;enter write-command
  3589. move.l #1024,$24(a1)        ;enter 1024 bytes to write
  3590. bsr BootBlockCheck        ;branch to subroutine
  3591. bsr CheckTDError        ;branch to subroutine
  3592.  
  3593. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3594. add.l AddressCounter(pc),a0    ;get AddressCounter
  3595. move.l (a0),a1            ;get TrackDiskIOStdReqMemPtr
  3596. move.w #04,28(a1)        ;enter update-command
  3597. bsr BootblockCheck        ;branch to subroutine
  3598.  
  3599. bsr CheckTDError        ;branch to subroutine
  3600.  
  3601. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3602. add.l AddressCounter(pc),a0    ;get AddressCounter
  3603. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3604. move.w #09,28(a1)        ;turn off motor
  3605. move.l #0,$24(a1)        ;turn off motor
  3606. bsr BootBlockCheck        ;branch to subroutine
  3607. bsr CheckTDError        ;branch to subroutine
  3608. rts                ;return from subroutine
  3609.  
  3610. TDError:
  3611. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3612. add.l AddressCounter(pc),a0    ;get AddressCounter
  3613. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3614. move.w #09,28(a1)        ;turn off motor
  3615. clr.b $1F(a1)            ;clear error-flag
  3616. move.l #0,$24(a1)        ;turn off motor
  3617. bsr BootBlockCheck        ;branch to subroutine
  3618.  
  3619. lea AutoRequestTextPtr(pc),a0    ;get RequestTextPtr
  3620. move.l (a5),(a0)        ;insert OutputText in RequestTextPtr    
  3621. lea GadgetTextPtr(pc),a0    ;get GadgetTextPtr
  3622. move.l #ContinueText,(a0)    ;insert OutputText in GadgetTextPtr
  3623. lea GadgetText2Ptr(pc),a0    ;get next GadgetTextPtr
  3624. move.l #ContinueText,(a0)    ;insert OutputText in next GadgetTextPtr
  3625. move.l #0,a0            
  3626. lea AutoRequestText(pc),a1    ;get RequestText-structure    
  3627. lea GadgetText(pc),a2        ;get GadgetText-structure
  3628. lea GadgetText2(pc),a3        ;get GadgetText2-structure
  3629. moveq #0,d0            ;no IDCMP-Flag
  3630. moveq #0,d1            ;no IDMCP-Flag
  3631. move.l #610,d2            ;get Width for Request
  3632. move.l #70,d3            ;get Height for Request
  3633. move.l Intuibase(pc),a6        ;get Intuibase
  3634. jsr AutoRequest(a6)        ;call subroutine
  3635. rts                ;return from subroutine
  3636.  
  3637. BootblockEnde:
  3638. move.l ExecBase,a6        ;get ExecBase
  3639. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3640. add.l AddressCounter(pc),a0    ;get AddressCounter
  3641. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3642. jsr CloseDevice(a6)        ;call subroutine
  3643.  
  3644. cmp.l #0,DriveCounter        ;first floppydisk ?
  3645. bne BootblockEnde2        ;No, branch to BootblockEnde2
  3646.  
  3647. move.l ExecBase,a6        ;get ExecBase
  3648. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3649. jsr RemPort(a6)            ;call subroutine
  3650.  
  3651. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3652. move.b #$FF,$8(a0)        ;remove listtype
  3653. move.l #-1,$14(a0)        ;remove flag
  3654.  
  3655. move.l ExecBase,a6        ;get ExecBase
  3656. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3657. move.l #1000,d0            ;get size
  3658. jsr FreeMem(a6)            ;call subroutine
  3659.  
  3660. BootBlockEnde2:
  3661. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3662. add.l AddressCounter(pc),a0    ;get AddressCounter
  3663. move.l (a0),a0            ;get TrackDiskIOStdReqMem-Ptr
  3664. move.b #$FF,$8(a0)        ;remove listtype
  3665. move.l #$FFFFFFFF,$14(a0)    ;remove DevicePtr
  3666. move.l #$FFFFFFFF,$18(a0)    ;remove UnitPtr
  3667. move.l ExecBase,a6        ;get ExecBase
  3668. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMem-Ptr
  3669. add.l AddressCounter(pc),a0    ;get AddressCounter
  3670. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3671. move.l #100,d0            ;get size
  3672. jsr FreeMem(a6)            ;call subroutine
  3673.  
  3674. cmp.l #0,DriveCounter        ;first floppydisk
  3675. bne BootBlockEnde3        ;No, branch to BootBlockEnde3
  3676. move.l ExecBase,a6        ;get ExecBase
  3677. move.l d7,d0            ;get Signalbit
  3678. jsr FreeSignal(a6)        ;call subroutine
  3679.  
  3680. BootBlockEnde3:
  3681. move.l ExecBase,a6        ;get ExecBase
  3682. lea Labelbuffer(pc),a0        ;get LabelbufferBase
  3683. add.l AddressCounter(pc),a0    ;get AddressCounter
  3684. move.l (a0),a1            ;get LabelbufferMem-Ptr
  3685. move.l #64,d0            ;get size
  3686. jsr FreeMem(a6)            ;call subroutine
  3687.  
  3688. move.l ExecBase,a6        ;get ExecBase
  3689. lea Sectorbuffer(pc),a0     ;get SectorbufferBase
  3690. add.l AddressCounter(pc),a0    ;get AddressCounter
  3691. move.l (a0),a1            ;get SectorbufferMem-Ptr
  3692. move.l #$2048,d0        ;get size
  3693. jsr FreeMem(a6)            ;call subroutine
  3694. rts                ;return from subroutine
  3695.  
  3696. CheckBootMem:
  3697. bsr DisplayWindowTitle        ;branch to DisplayWindowTitle
  3698. move.l #185,d0            
  3699. lea BootblockVirusOffsetlist(pc),a0
  3700. lea BootblockVirusTestbytesList(pc),a1
  3701. lea BootblockVirusNameList(pc),a3
  3702. lea Sectorbuffer(pc),a4        ;get SectorbufferBase
  3703. add.l AddressCounter(pc),a4    ;get AddressCounter
  3704.  
  3705. CompareBootblockLoop:
  3706. move.l (a0)+,d1            ;get offset
  3707. add.l (a4),d1                    ;add offset to Sectorbuffer
  3708. move.l d1,a2            ;write d1 to a2
  3709. move.l (a2),d1            ;write longword from sectorbuffer to d1
  3710. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  3711. beq BootblockVirus        ;Yes, branch to BootBlockVirus
  3712. cmp.l #0,(a3)+            ;count BootblockVirusNameList
  3713. sub.l #1,d0            ;count down
  3714. cmp.l #0,d0            ;Zero ?
  3715. bne CompareBootblockLoop    ;No, continue the loop !
  3716.  
  3717. cmp.l #0,BBBFBase        ;BBBFBase available ?
  3718. beq CompareBootBlockLoopEnd    ;No, branch to CompareBootBlockLoopEnd
  3719. move.l BBBFBase(pc),a6        ;get BBBFBase
  3720. lea Sectorbuffer(pc),a0        ;get SectorbufferBase
  3721. add.l AddressCounter(pc),a0    ;get AddressCounter
  3722. move.l (a0),a0            ;get SectorbufferMem-Ptr
  3723. lea status(pc),a1        ;get status
  3724. jsr CheckBoot(a6)        ;call subroutine
  3725. cmp.l #1,status            ;virus ?
  3726. beq BBBFBootblockVirus        ;Yes, branch to BBBFBootblockVirus
  3727. cmp.l #2,status            ;not bootable ?
  3728. beq NotBootAble            ;Yes, branch to NotBootAble
  3729. CompareBootBlockLoopEnd:
  3730. rts                ;return from subroutine
  3731.  
  3732. BBBFBootblockVirus:
  3733. lea Directory(pc),a3        ;get Directory-address
  3734. add.l #4,d0            ;count to BootBlockVirusText-Startaddress
  3735. move.l d0,(a3)            ;get BootBlockVirus-Text-Startaddress
  3736.  
  3737. BootblockVirus:
  3738. lea BootblockVirusName(pc),a0    ;get BootblockVirusNamebuffer
  3739. move.l #40,d0            ;get counter
  3740.  
  3741. ClearBootblockVirusNameLoop2:
  3742. move.b #00,(a0)+        ;clear the buffer
  3743. sub.l #1,d0            ;count down
  3744. cmp.l #0,d0            ;Zero ?
  3745. bne ClearBootblockVirusNameLoop2;No, continue the loop !
  3746.  
  3747. lea BootblockVirusName(pc),a0    ;get BootblockVirusNamebuffer
  3748. move.l (a3),a1            ;get VirusText-Address
  3749.  
  3750. BootblockVirusNameLoop:
  3751. move.b (a1)+,(a0)+        ;write VirusName to BootblockVirusNamebuffer
  3752. cmp.b #0,(a1)            ;Zero ?
  3753. bne BootblockVirusNameLoop    ;No, continue the loop !
  3754.  
  3755. BootRequester:
  3756. Requesterold BootReqText,Install,Continuetext2,#610,#70
  3757. cmp.l #1,d0            ;was Gadget touched ?
  3758. beq WriteBootblock        ;Yes, WriteBootblock
  3759. rts                ;return from subroutine
  3760.  
  3761. NotBootable:
  3762. Requesterold NotBootableReq,Continuetext2,Continuetext2,#610,#70
  3763. rts
  3764.  
  3765. BootblockCheckEnde:
  3766. bsr NoMemAlert            ;branch to subroutine
  3767. move.b #$FF,TrackdiskFlag    ;set TrackDiskFlag
  3768. rts                ;return from subroutine
  3769.  
  3770. BootblockCheckEnde6:
  3771. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3772. add.l AddressCounter(pc),a0    ;get AddressCounter
  3773. move.l (a0),a0            ;get TrackDiskIOStdReqMem-Ptr
  3774. move.b #$FF,$8(a0)        ;remove listtype
  3775. move.l #$FFFFFFFF,$14(a0)    ;remove Devicestructure
  3776. move.l #$FFFFFFFF,$18(a0)    ;remove UnitStructure
  3777. move.l ExecBase,a6        ;get ExecBase
  3778. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3779. add.l AddressCounter(pc),a0    ;get AddressCounter
  3780. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3781. move.l #100,d0            ;get size
  3782. jsr FreeMem(a6)            ;call subroutine
  3783.  
  3784.  
  3785. BootblockCheckEnde5:
  3786. cmp.l #0,DriveCounter        ;first floppydisk ?
  3787. bne BootblockCheckEnde3        ;Yes, branch to BootblockCheckEnde3
  3788.  
  3789. move.l ExecBase,a6        ;get ExecBase
  3790. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3791. jsr RemPort(a6)            ;call subroutine
  3792.  
  3793. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3794. move.b #$FF,$8(a0)        ;remove listtype
  3795. move.l #-1,$14(a0)        ;remove flags
  3796.  
  3797. move.l ExecBase,a6        ;get ExecBase
  3798. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3799. move.l #1000,d0            ;get size
  3800. jsr FreeMem(a6)            ;call subroutine
  3801.  
  3802. BootblockCheckEnde4:
  3803. cmp.l #0,DriveCounter        ;first floopydisk ?
  3804. bne BootBlockCheckEnde3        ;Yes, branch to BootBlockCheckEnde0
  3805. move.l ExecBase,a6        ;get ExecBase
  3806. move.l d7,d0            ;get Signalbit
  3807. jsr FreeSignal(a6)        ;call subroutine
  3808.  
  3809. BootblockCheckEnde3:
  3810. move.l ExecBase,a6        ;get ExecBase
  3811. lea Labelbuffer(pc),a0        ;get LabelbufferBase
  3812. add.l AddressCounter(pc),a0    ;get AddressCounter
  3813. move.l (a0),a1            ;get LabelBufferMem-Ptr
  3814. move.l #64,d0            ;get size
  3815. jsr FreeMem(a6)            ;call subroutine
  3816.  
  3817. BootblockCheckEnde2:
  3818. move.l ExecBase,a6        ;get ExecBase
  3819. lea Sectorbuffer(pc),a0        ;get Sectorbuffer
  3820. add.l AddressCounter(pc),a0    ;get AddressCounter
  3821. move.l (a0),a1            ;get SectorbufferMem-Ptr
  3822. move.l #$2048,d0        ;get size
  3823. jsr FreeMem(a6)            ;call subroutine
  3824.  
  3825. BootBlockCheckEnde0:
  3826. cmp.b #$FE,TrackDiskFlag    ;only no more drives ?
  3827. beq BootBlockCheckEnde00    ;display NO alert !
  3828. bsr NoMemAlert            ;branch to subroutine
  3829. BootBlockCheckEnde00:
  3830. move.b #$FF,TrackdiskFlag    ;set TrackDiskFlag
  3831. rts                ;return from subroutine
  3832.  
  3833. even
  3834. BootReqText:
  3835. dc.b 0,2
  3836. dc.b 0
  3837. even
  3838. dc.w 20,20
  3839. dc.l 0
  3840. dc.l BootText
  3841. dc.l 0
  3842.  
  3843. even
  3844. Install:
  3845. dc.b 0,2
  3846. dc.b 0
  3847. even
  3848. dc.w 12,4
  3849. dc.l 0
  3850. dc.l InstallText
  3851. dc.l 0
  3852.  
  3853. InstallText:
  3854. dc.b ` Install `,0
  3855.  
  3856. even
  3857. TDErrorlist:
  3858. dc.l NotSpecified
  3859. dc.l NoSecHdr
  3860. dc.l BadSecPreamble
  3861. dc.l BadSecId
  3862. dc.l BadHdrSum
  3863. dc.l BadSecSum
  3864. dc.l TooFewSecs
  3865. dc.l BadSecHdr
  3866. dc.l WriteProt
  3867. dc.l DiskChanged
  3868. dc.l SeekError
  3869. dc.l NoMem
  3870. dc.l BadUnitNum
  3871. dc.l BadDriveType
  3872. dc.l DriveInUse
  3873. dc.l PostReset
  3874.  
  3875. even
  3876. NotSpecified:
  3877. dc.b `Error not specified !`,0
  3878.  
  3879. even
  3880. NoSecHdr:
  3881. dc.b `Sector-head not found !`,0
  3882.  
  3883. even
  3884. BadSecPreamble:
  3885. dc.b `Error in sector-preamble !`,0
  3886.  
  3887. even
  3888. BadSecID:
  3889. dc.b `Error in sector-ID !`,0
  3890.  
  3891. even
  3892. BadHdrSum:
  3893. dc.b `CheckSum-error in header !`,0
  3894.  
  3895. even
  3896. BadSecSum:
  3897. dc.b `CheckSum-error in sector !`,0
  3898.  
  3899. even
  3900. TooFewSecs:
  3901. dc.b `Not enough sectors on track !`,0
  3902.  
  3903. even
  3904. BadsecHdr:
  3905. dc.b `Sector-head unreadable !`,0
  3906.  
  3907. even
  3908. WriteProt:
  3909. dc.b `Disk write-protected !`,0
  3910.  
  3911. even
  3912. DiskChanged:
  3913. dc.b `No disk in drive !`,0
  3914.  
  3915. even
  3916. SeekError:
  3917. dc.b `ReadHeader-position wrong !`,0
  3918.  
  3919. even
  3920. NoMem:
  3921. dc.b `Not enough memory !`,0
  3922.  
  3923. even
  3924. BadUnitNum:
  3925. dc.b `Called floppydrive not connected !`,0
  3926.  
  3927. even
  3928. BadDriveType:
  3929. dc.b `wrong floppydrive !`,0
  3930.  
  3931. even
  3932. DriveInUse:
  3933. dc.b `Drive already will be used !`,0
  3934.  
  3935. even
  3936. PostReset:
  3937. dc.b `No entry after postreset !`,0
  3938.  
  3939. even
  3940. MsgPortStructure:        
  3941. dc.l 0                
  3942. dc.l 0                
  3943. dc.b 4                
  3944. dc.b 0                
  3945. dc.l PortName                          
  3946. dc.b 0
  3947. Sigbit:                
  3948. dc.b 0                   
  3949. AntiCicloTask:
  3950. dc.l 0        
  3951. dc.l 0
  3952. dc.l 0
  3953. dc.l 0
  3954. dc.b 5
  3955. dc.b 0
  3956.  
  3957. even
  3958. TrackdiskIOStdRequest:        ;IOStdRequest-structure
  3959. dc.l 0                ;Ptr of successor
  3960. dc.l 0                ;Ptr of predecessor
  3961. dc.b 6                ;messagetype
  3962. dc.b 0                ;priority
  3963. dc.l MessageName                ;Ptr of Messagename
  3964. TrackDiskMsgPortMem:
  3965. dc.l 0              ;Ptr of MsgPort
  3966. dc.w 56                ;messagelength
  3967. dc.l 0                ;Ptr to Device-structure
  3968. dc.l 0                      ;Ptr to Unit-structure
  3969. dc.w 2                ;Command
  3970. dc.b 0                ;Flags
  3971. dc.b 0                ;Errorbyte
  3972. dc.l 0                ;Actualbyte
  3973. dc.l 2048            ;Number of Bytes
  3974. TrackSecbuffer:
  3975. dc.l 0                     ;Buffer-address
  3976. dc.l 0                ;Sector-Nr.
  3977. dc.l 0                ;DiskChangeCount
  3978. TrackLabbuffer:
  3979. dc.l 0                ;SecLabelBuffer
  3980.  
  3981. even
  3982. CheckWindowTitle:
  3983. dc.b `checking floppydrive DF` 
  3984. DriveNumber: dc.b `0: !!!`,0
  3985.  
  3986. even
  3987. MsgPortMem:
  3988. dc.l 0
  3989.  
  3990. TrackdiskIOStdRequestMem:
  3991. dc.l 0
  3992. dc.l 0
  3993. dc.l 0
  3994. dc.l 0
  3995.  
  3996. TrackDiskMessage:
  3997. dc.l 0
  3998.  
  3999. Sectorbuffer:
  4000. dc.l 0
  4001. dc.l 0
  4002. dc.l 0
  4003. dc.l 0
  4004.  
  4005. Labelbuffer:
  4006. dc.l 0
  4007. dc.l 0
  4008. dc.l 0
  4009. dc.l 0
  4010.  
  4011. status:
  4012. dc.l 0
  4013.  
  4014. TrackdiskFlag:
  4015. dc.b 0
  4016.  
  4017. even
  4018. OpenDriveCount:
  4019. dc.l 0
  4020.  
  4021. even
  4022. DriveCounter:
  4023. dc.l 0
  4024.  
  4025. even
  4026. DriveLoopCounter:
  4027. dc.l 0
  4028.  
  4029. even
  4030. AddressCounter:
  4031. dc.l 0
  4032.  
  4033. even
  4034. MessageName:
  4035. dc.b `AntiCicloVir.message`,0
  4036.  
  4037. even
  4038. PortName:
  4039. dc.b `AntiCicloVir.port`,0
  4040.  
  4041. even
  4042. BootText:
  4043. dc.b `VIRUS in Bootsectors:  `
  4044. Bootblockvirusname: blk.b 40,0
  4045.  
  4046. even
  4047. NotBootableReq:
  4048. dc.b 0,2
  4049. dc.b 0
  4050. even
  4051. dc.w 20,20
  4052. dc.l 0
  4053. dc.l NotBootAbleText
  4054. dc.l 0
  4055.  
  4056. even
  4057. NotBootableText:
  4058. dc.b `Disk is not bootable !!!`,0
  4059.  
  4060. even
  4061. BootblockvirusNameList:
  4062. dc.l The16BitCrewText
  4063. dc.l The2001Text
  4064. dc.l AEKText
  4065. dc.l AHCText
  4066. dc.l AIDSText
  4067. dc.l AIDS2Text
  4068. dc.l AlienNewBeatText
  4069. dc.l AmigaFreakText
  4070. dc.l AmigaMasterText
  4071. dc.l AngelText
  4072. dc.l ASSText
  4073. dc.l ASVText
  4074. dc.l AsylantText
  4075. dc.l AustralianParasiteText
  4076. dc.l BadBytesText
  4077. dc.l BamigaSectorOneText
  4078. dc.l BBProtText
  4079. dc.l BigBossText
  4080. dc.l BlackflashText
  4081. dc.l BladeRunnersText
  4082. dc.l BLFText
  4083. dc.l BlizzProV31Text
  4084. dc.l BlizzProV33Text
  4085. dc.l BlowJobText
  4086. dc.l BootXText
  4087. dc.l ButonicText
  4088. dc.l ByteBanditText
  4089. dc.l ByteBanditPlusText
  4090. dc.l ByteBandit2Text
  4091. dc.l ByteBanditturboText
  4092. dc.l ByteVoyagerText
  4093. dc.l ByteVoyagerIIText
  4094. dc.l ByteWarriorText
  4095. dc.l CascadeText
  4096. dc.l CCCPText
  4097. dc.l ClaasAbrahamText
  4098. dc.l ClonkText
  4099. dc.l CobraText
  4100. dc.l CodersNightmareText
  4101. dc.l CopyLockText
  4102. dc.l CrackerExterminatorText
  4103. dc.l DAGText
  4104. dc.l DAT89Text
  4105. dc.l DatacrimeText
  4106. dc.l DestructorText
  4107. dc.l DetlefText
  4108. dc.l DigitalEmotionsText
  4109. dc.l DisgustText
  4110. dc.l DiskDoktorsText
  4111. dc.l DISKFurunkelText
  4112. dc.l DiskGuardText
  4113. dc.l DiskHerpesText
  4114. dc.l DiskTerminatorText
  4115. dc.l DivinaExterminatorText
  4116. dc.l DottyText
  4117. dc.l DUMDUMText
  4118. dc.l ElectroVisionText
  4119. dc.l EuropeanText
  4120. dc.l ExcrementText
  4121. dc.l ExecutorsText
  4122. dc.l ExtremeText
  4123. dc.l FASTText
  4124. dc.l FastEddieText
  4125. dc.l FICAText
  4126. dc.l ForpibText
  4127. dc.l FrityText
  4128. dc.l fuckdeviceText
  4129. dc.l GadaffiText
  4130. dc.l GermanyText
  4131. dc.l GlasnostText
  4132. dc.l GraffitiText
  4133. dc.l GremlinText
  4134. dc.l GuardiansBootAidsText
  4135. dc.l GXTeamText
  4136. dc.l GyrosText
  4137. dc.l HaukeText
  4138. dc.l HCSText
  4139. dc.l HCSIIText
  4140. dc.l HighlanderText
  4141. dc.l HillyText
  4142. dc.l HODENText
  4143. dc.l IceText
  4144. dc.l IncognitoText
  4145. dc.l IndianaJonesText
  4146. dc.l InfectorText
  4147. dc.l InfluenzaText
  4148. dc.l IngerIQText
  4149. dc.l IngoText
  4150. dc.l JITRText
  4151. dc.l JoshuaText
  4152. dc.l JulieText
  4153. dc.l KaukiText
  4154. dc.l KefrensText
  4155. dc.l KilledText
  4156. dc.l LADSText
  4157. dc.l LameBlameText
  4158. dc.l LamerExterminatoroldText
  4159. dc.l LamerExterminatornewText
  4160. dc.l LamerExterminatorIText
  4161. dc.l LamerExterminatorIIText
  4162. dc.l LamerExterminatorIIIText
  4163. dc.l LamerExterminatorIVText
  4164. dc.l LamerExterminatorVText
  4165. dc.l LamerExterminatorVIText
  4166. dc.l LoverboySexmachineText
  4167. dc.l LSDText
  4168. dc.l MADText
  4169. dc.l MADIIText
  4170. dc.l MallanderText
  4171. dc.l MEXXText
  4172. dc.l MGM89Text
  4173. dc.l MICROSYSTEMSText
  4174. dc.l MOSHText
  4175. dc.l MOSH2Text
  4176. dc.l MutilatorText
  4177. dc.l NastyNastyText
  4178. dc.l NorthStarText
  4179. dc.l NorthStarIIText
  4180. dc.l ObeliskText
  4181. dc.l Obelisk2Text
  4182. dc.l OPAPAText
  4183. dc.l OverkillText
  4184. dc.l PARATAXIText
  4185. dc.l PARATAXIIText
  4186. dc.l PARATAXIIIText
  4187. dc.l PayDayText
  4188. dc.l PentagonSlayerText
  4189. dc.l PentagonSlayer2Text
  4190. dc.l PentagonSlayer3Text
  4191. dc.l PlastiqueText
  4192. dc.l REPText
  4193. dc.l RevengeBootloaderText
  4194. dc.l REVENGEText
  4195. dc.l SachsenText
  4196. dc.l SADDAMHUSSEINText
  4197. dc.l SaoPauloText
  4198. dc.l SATANText
  4199. dc.l SCAText
  4200. dc.l ScarfaceText
  4201. dc.l SendarionText
  4202. dc.l SherlockText
  4203. dc.l ShitText
  4204. dc.l SSText
  4205. dc.l SSIIText
  4206. dc.l SuicideMachineText
  4207. dc.l SuperboyText
  4208. dc.l SupplyTeamText
  4209. dc.l SystemZV30Text
  4210. dc.l SystemZV40Text
  4211. dc.l SystemZV50Text
  4212. dc.l SystemZV51Text
  4213. dc.l SystemZV53Text
  4214. dc.l SystemZV54Text
  4215. dc.l SystemZV61Text
  4216. dc.l SystemZV64Text
  4217. dc.l SystemZV65Text
  4218. dc.l TargetText
  4219. dc.l TelstarText
  4220. dc.l TermigatorText
  4221. dc.l TFCRevengeText
  4222. dc.l TimeBombText
  4223. dc.l TNKText
  4224. dc.l TomatesGentechnic10Text
  4225. dc.l TomatesGentechnic20Text
  4226. dc.l TURKText
  4227. dc.l UltrafoxText
  4228. dc.l UKLamerStyleText
  4229. dc.l USSR492Text
  4230. dc.l VCCofTNTText
  4231. dc.l VIPHSText
  4232. dc.l VirusConstructionSetBootblockText
  4233. dc.l VirusSlayerText
  4234. dc.l VirusV1Text
  4235. dc.l WAFTText
  4236. dc.l WahnfriedText
  4237. dc.l WARHAWKText
  4238. dc.l WarsawAvengerText
  4239. dc.l ZACCESSV10Text
  4240. dc.l ZACCESSV20Text
  4241. dc.l ZACCESSV30Text
  4242. dc.l ZenkerText
  4243. dc.l ZESTText
  4244. dc.l ZLXText
  4245. dc.l ZombiText
  4246.  
  4247. even
  4248. BootblockvirusTestbytesList:
  4249. dc.l `Crew`
  4250. dc.l `0012`
  4251. dc.l ` AEK`
  4252. dc.l `A.H.`
  4253. dc.l `HIV!`
  4254. dc.l ` Ken`
  4255. dc.l `ALIE`
  4256. dc.l `AMIG`
  4257. dc.l `Mast`
  4258. dc.l $4EAEFF3A
  4259. dc.l ` PRO`
  4260. dc.l `SV!A`
  4261. dc.l `ASYL`
  4262. dc.l `Aust`
  4263. dc.l `BOUT`
  4264. dc.l `BS1!`
  4265. dc.l `B-Pr`
  4266. dc.l `_BOS`
  4267. dc.l `blac`
  4268. dc.l `lade`
  4269. dc.l `dos.`
  4270. dc.l $332E3100
  4271. dc.l $332E3300
  4272. dc.l `Allo`
  4273. dc.l `Viru`
  4274. dc.l `BAHA`
  4275. dc.l `Band`
  4276. dc.l `NqNq`
  4277. dc.l `os.l`
  4278. dc.l `trac`
  4279. dc.l $61000336
  4280. dc.l $600002E6
  4281. dc.l `DASA`
  4282. dc.l `Casc`
  4283. dc.l `CCCP`
  4284. dc.l $B18536B7
  4285. dc.l `CLON`
  4286. dc.l ` COB`
  4287. dc.l `CODE`
  4288. dc.l $0007F000
  4289. dc.l `CRAC`
  4290. dc.l ` DAG`
  4291. dc.l `T '8`
  4292. dc.l `DATA`
  4293. dc.l `estr`
  4294. dc.l $41FA001A
  4295. dc.l `EMOT`
  4296. dc.l `Viru`
  4297. dc.l ` Dis`
  4298. dc.l `DISK`
  4299. dc.l `DISK`
  4300. dc.l ` H e`
  4301. dc.l `DISK`
  4302. dc.l `dos.`
  4303. dc.l `Dott`
  4304. dc.l `MDUM`
  4305. dc.l `ELEC`
  4306. dc.l `Euro`
  4307. dc.l `EXCR`
  4308. dc.l `XECU`
  4309. dc.l `XTRE`
  4310. dc.l $0007F000
  4311. dc.l $6000FC38
  4312. dc.l `F.I.`
  4313. dc.l `FORP`
  4314. dc.l `rity`
  4315. dc.l `fuck`
  4316. dc.l `GADA`
  4317. dc.l `Germ`
  4318. dc.l `Glas`
  4319. dc.l `fiti`
  4320. dc.l `grap`
  4321. dc.l `-aid`
  4322. dc.l `intu`
  4323. dc.l `GYRO`
  4324. dc.l `Hauk`
  4325. dc.l `H.C.`
  4326. dc.l `H.C.`
  4327. dc.l `HIGH`
  4328. dc.l $0007FF00
  4329. dc.l `HODE`
  4330. dc.l `INC!`
  4331. dc.l $2C790000
  4332. dc.l `iana`
  4333. dc.l $6000FC38
  4334. dc.l `FUCK`
  4335. dc.l `nger`
  4336. dc.l `INGO`
  4337. dc.l `JITR`
  4338. dc.l $00BFE001
  4339. dc.l $E0014E75
  4340. dc.l `dos.`
  4341. dc.l `efre`
  4342. dc.l `Kill`
  4343. dc.l `LADS`
  4344. dc.l $6100FFDE
  4345. dc.l $ABCD0000
  4346. dc.l $ABCD0000
  4347. dc.l $FEDC0000
  4348. dc.l $ABCD0000
  4349. dc.l $ABCD0000
  4350. dc.l $ABCD0000
  4351. dc.l $ABCD0000
  4352. dc.l $ABCD0000
  4353. dc.l ` Sex`
  4354. dc.l `LSD!`
  4355. dc.l `Infe`
  4356. dc.l `cker`
  4357. dc.l `DERK`
  4358. dc.l `MEXX`
  4359. dc.l `MGM8`
  4360. dc.l `MICR`
  4361. dc.l `MOSH`
  4362. dc.l `MOSH`
  4363. dc.l `dos.`
  4364. dc.l `Nast`
  4365. dc.l `Nort`
  4366. dc.l `Nort`
  4367. dc.l `GURU`
  4368. dc.l ` OBE`
  4369. dc.l ` OPA`
  4370. dc.l $4BF90007
  4371. dc.l `TAX `
  4372. dc.l `ATAX`
  4373. dc.l `ATAX`
  4374. dc.l `PayD`
  4375. dc.l `enta`
  4376. dc.l `Circ`
  4377. dc.l `enta`
  4378. dc.l ` P L`
  4379. dc.l `REP!`
  4380. dc.l `Reve`
  4381. dc.l `Reve`
  4382. dc.l $00078400
  4383. dc.l `2000`
  4384. dc.l `PAUL`
  4385. dc.l `SATA`
  4386. dc.l `SCA!`
  4387. dc.l `SCAR`
  4388. dc.l `Send`
  4389. dc.l `ORSI`
  4390. dc.l $6100000A
  4391. dc.l `!SS!`
  4392. dc.l `HEIL`
  4393. dc.l $2C790000
  4394. dc.l `Supe`
  4395. dc.l ` Sup`
  4396. dc.l `3.0 `
  4397. dc.l `4.0 `
  4398. dc.l `5.0 `
  4399. dc.l `5.1 `
  4400. dc.l `V5.3`
  4401. dc.l `V5.4`
  4402. dc.l `V6.1`
  4403. dc.l `V6.4`
  4404. dc.l `V6.5`
  4405. dc.l $43524E00
  4406. dc.l `6.0 `
  4407. dc.l `intu`
  4408. dc.l ` 199`
  4409. dc.l `IME `
  4410. dc.l `TNK!`
  4411. dc.l `OMAT`
  4412. dc.l `Toma`
  4413. dc.l `TURK`
  4414. dc.l $4EF900FC
  4415. dc.l $61000338
  4416. dc.l `Sent`
  4417. dc.l `grap`
  4418. dc.l `VIPH`
  4419. dc.l $00BFE001
  4420. dc.l `VIRU`
  4421. dc.l `sind`
  4422. dc.l $2C780004
  4423. dc.l `AHNF`
  4424. dc.l `WARH`
  4425. dc.l `Wars`
  4426. dc.l `ZACC`
  4427. dc.l `ZACC`
  4428. dc.l `ACCE`
  4429. dc.l `ZENK`
  4430. dc.l `Z.E.`
  4431. dc.l `ZLX!`
  4432. dc.l $075A6F6D
  4433.  
  4434. even
  4435. BootblockvirusOffsetList:
  4436. dc.l $000001E0
  4437. dc.l $000003F0
  4438. dc.l $000003D0
  4439. dc.l $000002FC
  4440. dc.l $000003F0
  4441. dc.l $000002D0
  4442. dc.l $00000240
  4443. dc.l $0000001E
  4444. dc.l $0000037A
  4445. dc.l $00000054
  4446. dc.l $00000344
  4447. dc.l $000002F0
  4448. dc.l $00000330
  4449. dc.l $0000036C
  4450. dc.l $000003A0
  4451. dc.l $000003F0
  4452. dc.l $00000338
  4453. dc.l $000003F0
  4454. dc.l $00000010
  4455. dc.l $00000330
  4456. dc.l $0000030E
  4457. dc.l $0000002A
  4458. dc.l $0000002A
  4459. dc.l $0000002A
  4460. dc.l $0000028E
  4461. dc.l $0000032C
  4462. dc.l $00000020
  4463. dc.l $000002A8
  4464. dc.l $000003C2
  4465. dc.l $00000320
  4466. dc.l $00000010
  4467. dc.l $0000000C
  4468. dc.l $000000C0
  4469. dc.l $000003E2
  4470. dc.l $00000054
  4471. dc.l $00000004
  4472. dc.l $000003B8
  4473. dc.l $00000306
  4474. dc.l $0000005A
  4475. dc.l $00000018
  4476. dc.l $00000014
  4477. dc.l $000003BA
  4478. dc.l $000002C0
  4479. dc.l $000001C6
  4480. dc.l $000001F4
  4481. dc.l $00000010
  4482. dc.l $00000280
  4483. dc.l $000001B8
  4484. dc.l $000003E8
  4485. dc.l $000003B2
  4486. dc.l $000002F4
  4487. dc.l $00000390
  4488. dc.l $000003C6
  4489. dc.l $00000096
  4490. dc.l $00000018
  4491. dc.l $00000010
  4492. dc.l $00000010
  4493. dc.l $00000010
  4494. dc.l $00000054
  4495. dc.l $00000348
  4496. dc.l $00000274
  4497. dc.l $00000044
  4498. dc.l $000003F8
  4499. dc.l $000003F2
  4500. dc.l $0000001A
  4501. dc.l $00000018
  4502. dc.l $000002DA
  4503. dc.l $00000040
  4504. dc.l $00000010
  4505. dc.l $00000730
  4506. dc.l $00000390
  4507. dc.l $00000360
  4508. dc.l $00000394
  4509. dc.l $000001E0
  4510. dc.l $0000023E
  4511. dc.l $00000010
  4512. dc.l $00000328
  4513. dc.l $0000034E
  4514. dc.l $0000025C
  4515. dc.l $0000009C
  4516. dc.l $000002D4
  4517. dc.l $000003F0
  4518. dc.l $00000120
  4519. dc.l $00000320
  4520. dc.l $000003F8
  4521. dc.l $00000066
  4522. dc.l $00000014
  4523. dc.l $00000008
  4524. dc.l $00000008
  4525. dc.l $000001F4
  4526. dc.l $00000334
  4527. dc.l $00000298
  4528. dc.l $000003AC
  4529. dc.l $00000264
  4530. dc.l $00000008
  4531. dc.l $00000058
  4532. dc.l $000003A6
  4533. dc.l $00000396
  4534. dc.l $00000342
  4535. dc.l $00000392
  4536. dc.l $000003F4
  4537. dc.l $000003AE
  4538. dc.l $000003AA
  4539. dc.l $00000396
  4540. dc.l $000001E0
  4541. dc.l $000003F0
  4542. dc.l $00000010
  4543. dc.l $000000A0
  4544. dc.l $00000008
  4545. dc.l $000003F0
  4546. dc.l $00000282
  4547. dc.l $000003F4
  4548. dc.l $00000016
  4549. dc.l $00000016
  4550. dc.l $000002A0
  4551. dc.l $000001D6
  4552. dc.l $00000010
  4553. dc.l $00000012
  4554. dc.l $00000038
  4555. dc.l $00000370
  4556. dc.l $00000368
  4557. dc.l $00000014
  4558. dc.l $000003F0
  4559. dc.l $000003B0
  4560. dc.l $00000220
  4561. dc.l $00000010
  4562. dc.l $00000286
  4563. dc.l $00000370
  4564. dc.l $000002DA
  4565. dc.l $00000210
  4566. dc.l $000003F0
  4567. dc.l $00000010
  4568. dc.l $000003E2
  4569. dc.l $00000038
  4570. dc.l $00000012
  4571. dc.l $000002F0
  4572. dc.l $00000280
  4573. dc.l $000003F0
  4574. dc.l $00000308
  4575. dc.l $000003E2
  4576. dc.l $000002F6
  4577. dc.l $00000010
  4578. dc.l $00000012
  4579. dc.l $0000001A
  4580. dc.l $0000032C
  4581. dc.l $000002E2
  4582. dc.l $00000324
  4583. dc.l $0000002C
  4584. dc.l $0000002C
  4585. dc.l $0000002C
  4586. dc.l $0000002C
  4587. dc.l $0000002A
  4588. dc.l $0000002A
  4589. dc.l $0000002A
  4590. dc.l $0000002A
  4591. dc.l $0000002A
  4592. dc.l $0000019C
  4593. dc.l $00000024
  4594. dc.l $000003EC
  4595. dc.l $0000002C
  4596. dc.l $00000342
  4597. dc.l $000003F0
  4598. dc.l $00000182
  4599. dc.l $00000040
  4600. dc.l $00000066
  4601. dc.l $00000036
  4602. dc.l $00000368
  4603. dc.l $00000054
  4604. dc.l $00000168
  4605. dc.l $00000022
  4606. dc.l $00000146
  4607. dc.l $00000010
  4608. dc.l $00000322
  4609. dc.l $00000050
  4610. dc.l $00000312
  4611. dc.l $00000366
  4612. dc.l $00000386
  4613. dc.l $000001D6
  4614. dc.l $00000016
  4615. dc.l $0000027A
  4616. dc.l $00000252
  4617. dc.l $00000332
  4618. dc.l $000003F0
  4619. dc.l $00000184
  4620.  
  4621. CPUCrashDummy:
  4622. dc.l $00000000
  4623.  
  4624. even
  4625. BootBlock:
  4626.     start:    
  4627.     dc.l    $4B75D060
  4628.     dc.l    880
  4629. main:    lea    dosname2(PC),a1
  4630.     jsr    -96(a6)
  4631.     tst.l    d0
  4632.     beq.S    error
  4633.     move.l    d0,a0
  4634.     move.l    $16(a0),a0
  4635.     moveq    #0,d0
  4636. halt:    rts
  4637. error:    moveq    #-1,d0
  4638.     bra.S    halt
  4639. dosname2:    dc.b    'dos.library',0
  4640.     
  4641. dc.b `Disk installed by AntiCicloVir V2.4`,0
  4642. dc.b `Send new viruses to Matthias Gutt * Kantstr. 16 `,0
  4643. dc.b `* 21335 Lueneburg * Germany`,0
  4644. blk.b 900,0
  4645.  
  4646. even
  4647. VirusCheck:
  4648. move.l DiskValMem(pc),a5    ;get DiskValMemPtr
  4649. move.l #SADDAM,d4        ;get pathname
  4650. move.l Dosbase(pc),a6        ;get DosBase
  4651. move.l #SADDAM,d1        ;get filename
  4652. move.l #1005,d2            ;use the mode old
  4653. jsr Open(a6)            ;call subroutine
  4654.  
  4655. cmp.l #0,d0            ;Error ?
  4656. beq VirusCheckEnde        ;Yes, branch to VirusCheckEnde
  4657. move.l d0,DiskValHandle        ;No, get DiskValHandle
  4658.  
  4659. move.l Dosbase(pc),a6        ;get DosBase
  4660. move.l DiskValHandle(pc),d1    ;get DiskValHandle
  4661. move.l a5,d2            ;get filebuffer
  4662. move.l #1848,d3            ;get size
  4663. jsr Read(a6)            ;call subroutine
  4664.  
  4665. move.l Dosbase(pc),a6        ;get DosBase
  4666. move.l DiskValHandle(pc),d1    ;get DiskValHandle
  4667. jsr Close(a6)            ;call subroutine
  4668.  
  4669. cmp.l #"BitM",$00000702(a5)    ;SADDAM-Virus ?
  4670. beq SADDAMRequest        ;Yes !
  4671. cmp.l #$60040000,$00000024(a5)    ;RoLE-Virus ?
  4672. beq ReturnRequest        ;Yes !
  4673. cmp.l #"trac",$000006C0(a5)    ;DiskVal1234-Virus ?
  4674. beq DiskVal1234Request        ;Yes !
  4675.  
  4676. VirusCheckEnde:
  4677. clr.l DriveLoopCounter        ;clear DriveLoopCounter
  4678. clr.l DriveCounter        ;clear DriveCounter
  4679. clr.l AddressCounter        ;clear AddressCounter
  4680.  
  4681. DriveLoop:
  4682. bsr ReadBootblock        ;branch to subroutine
  4683. add.l #1,DriveLoopCounter    ;count up
  4684. add.l #1,DriveCounter        ;count up
  4685. add.l #4,AddressCounter        ;count up
  4686. move.l DriveLoopCounter(pc),d0    ;get DriveLoopCounter
  4687. cmp.l OpenDriveCount(pc),d0    ;all floppydisks read ?
  4688. bne DriveLoop            ;No, continue the loop !
  4689.  
  4690. DriveLoopEnd:
  4691. sub.l #4,AddressCounter        ;correct AddressCounter
  4692. sub.l #1,DriveCounter        ;correct DriveCounter
  4693.  
  4694. bra IntuiWait            ;branch to IntuiWait
  4695.  
  4696.  
  4697. SADDAMRequest:
  4698. Requester #SADDAMReq,#ContinueText,#ContinueText,#610,#70
  4699. bsr KillFileVirus2        ;branch to subroutine
  4700. bra VirusCheckEnde        ;end VirusCheck
  4701.  
  4702. ReturnRequest:
  4703. Requester #ReturnReq,#ContinueText,#ContinueText,#610,#70
  4704. move.l #SADDAM,d4        ;get pathname
  4705. bsr KillFileVirus3        ;branch to subroutine
  4706. bra VirusCheckEnde        ;end VirusCheck
  4707.  
  4708. DiskVal1234Request:
  4709. Requester #DiskVal1234Req,#ContinueText,#ContinueText,#610,#70
  4710. bsr KillFileVirus2        ;branch to subroutine
  4711. bra VirusCheckEnde        ;end VirusCheck
  4712.  
  4713. Hochofen:
  4714. lea HochofenText(pc),a0        ;get HochofenTextaddress
  4715. move.l a0,(a3)            
  4716. bra AMIGAMemoryVirus        ;branch to subroutine
  4717.  
  4718. ModemChecker:
  4719. lea ModemCheckerText(pc),a0    ;get ModemCheckerTextaddress
  4720. move.l a0,(a3)
  4721. bra AMIGAMemoryVirus        ;branch to subroutine
  4722.  
  4723. even
  4724. SADDAMReq:
  4725. dc.b `Disk-Validator: SADDAM Virus !!!`,0
  4726.  
  4727. even
  4728. ReturnReq:
  4729. dc.b `Disk-Validator: Return of the Lamer Exterminator virus !!!`,0
  4730.  
  4731. even
  4732. DiskVal1234Req:
  4733. dc.b `Disk-Validator: DiskVal1234 virus !!!`,0
  4734.  
  4735. even
  4736. DiskValHandle:
  4737. dc.l 0
  4738.  
  4739. DiskValMem:
  4740. dc.l 0
  4741.  
  4742. even
  4743. SADDAM:
  4744. dc.b `:l/Disk-Validator`,0
  4745.  
  4746.  
  4747. even
  4748. AMIGAMemoryVirus:
  4749. move.l Intuibase(pc),a6        ;get Intuibase
  4750. lea NewWindow(pc),a0        ;get NewWindow-structure-address
  4751. jsr OpenWindow(a6)        ;call subroutine
  4752. move.l d0,Winhandle        ;get Winhandle
  4753.  
  4754. move.l #40,d0            ;get counter
  4755. lea VirusName(pc),a0        ;get VirusNamebuffer
  4756.  
  4757. ClearVirusNameLoop:
  4758. move.b #00,(a0)+        ;clear the buffer
  4759. sub.l #1,d0            ;count down
  4760. cmp.l #0,d0            ;Zero ?
  4761. bne ClearVirusNameLoop        ;No, continue the loop !
  4762.  
  4763. lea VirusName(pc),a0        ;get VirusNameBuffer
  4764. move.l (a3),a1            ;get VirusNameText-Address
  4765.  
  4766. AMIGAMemoryVirusNameLoop:
  4767. move.b (a1)+,(a0)+        ;write VirusNameText to VirusNameBuffer
  4768. cmp.b #0,(a1)            ;Zero ?
  4769. bne AMIGAMemoryVirusNameLoop    ;No, continue the loop !
  4770.  
  4771. AMIGAMemoryVirusRequest:
  4772. Requester #MemoryText,#ContinueText,#ContinueText,#610,#70
  4773.  
  4774. move.l Winhandle(pc),a0        ;get Winhandle
  4775. move.l Intuibase(pc),a6        ;get Intuibase
  4776. jsr CloseWindow(a6)        ;call subroutine
  4777. bra KillMem            ;branch to subroutine
  4778.  
  4779. even
  4780. MemoryText:
  4781. dc.b `VIRUS IS STILL in memory: `
  4782. Virusname: blk.b 40,0
  4783.  
  4784. even
  4785. VirusNameList:
  4786. The16BitCrewText:
  4787. dc.b `16 Bit Crew`,0
  4788.  
  4789. even
  4790. The2001Text:
  4791. dc.b `2001`,0
  4792.  
  4793. even
  4794. AEKText:
  4795. dc.b `AEK`,0
  4796.  
  4797. even
  4798. AHCText:
  4799. dc.b `A.H.C.`,0
  4800.  
  4801. even
  4802. AIDSText:
  4803. dc.b `AIDS (SCA)`,0
  4804.  
  4805. even
  4806. AIDS2Text:
  4807. dc.b `AIDS (VKill)`,0
  4808.  
  4809. even
  4810. AlienNewBeatText:
  4811. dc.b `Alien New Beat V1.0`,0
  4812.  
  4813. even
  4814. AmigaFreakText:
  4815. dc.b `AMIGA Freak`,0
  4816.  
  4817. even
  4818. AmigaKnightText:
  4819. dc.b `AMIGA Knight`,0
  4820.  
  4821. even
  4822. AmigaMasterText:
  4823. dc.b `AMIGA Master`,0
  4824.  
  4825. even
  4826. AngelText:
  4827. dc.b `Angel`,0
  4828.  
  4829. even
  4830. AntiChristText:
  4831. dc.b `AntiChrist`,0
  4832.  
  4833. even
  4834. AntiChristTextText:
  4835. dc.b `AntiChrist-Text`,0
  4836.  
  4837. even
  4838. ASSText:
  4839. dc.b `ASS Virusprotector V1.0`,0
  4840.  
  4841. even
  4842. ASVText:
  4843. dc.b `ASV V0.000123`,0
  4844.  
  4845. even
  4846. AsylantText:
  4847. dc.b `Asylant`,0
  4848.  
  4849. even
  4850. AustralianParasiteText:
  4851. dc.b `Australian Parasite`,0
  4852.  
  4853. even
  4854. BadBytesText:
  4855. dc.b `Bad Bytes`,0
  4856.  
  4857. even
  4858. BamigaSectorOneText:
  4859. dc.b `Bamiga Sector One`,0
  4860.  
  4861. even
  4862. BBProtText:
  4863. dc.b `BB-Prot`,0
  4864.  
  4865. even
  4866. BeethovenText:
  4867. dc.b `Beethoven`,0
  4868.  
  4869. even
  4870. BestialDevastationText:
  4871. dc.b `Bestial Devastation`,0
  4872.  
  4873. even
  4874. BGS9Text:
  4875. dc.b `BGS 9`,0
  4876.  
  4877. even
  4878. BGS9IIText:
  4879. dc.b `BGS 9 II`,0
  4880.  
  4881. even
  4882. BigBossText:
  4883. dc.b `Big Boss`,0
  4884.  
  4885. even
  4886. BlackflashText:
  4887. dc.b `Blackflash V2.0`,0
  4888.  
  4889. even
  4890. BladeRunnersText:
  4891. dc.b `Blade Runners`,0
  4892.  
  4893. even
  4894. BLFText:
  4895. dc.b `BLF`,0
  4896.  
  4897. even
  4898. BlizzProV31Text:
  4899. dc.b `Blizz Pro V3.1`,0
  4900.  
  4901. even
  4902. BlizzProV33Text:
  4903. dc.b `Blizz Pro V3.3`,0
  4904.  
  4905. even
  4906. BlowJobText:
  4907. dc.b `BlowJob`,0
  4908.  
  4909. even
  4910. BlueboxText:
  4911. dc.b `BlueBox.icon.library`,0
  4912.  
  4913. even
  4914. BootXText:
  4915. dc.b `BootX`,0
  4916.  
  4917. even
  4918. BretHawnesText:
  4919. dc.b `Bret Hawnes`,0
  4920.  
  4921. even
  4922. ButonicText:
  4923. dc.b `Butonic 1.1`,0
  4924.  
  4925. even
  4926. ByteBanditText:
  4927. dc.b `Byte Bandit`,0
  4928.  
  4929. even
  4930. ByteBanditPlusText:
  4931. dc.b `Byte Bandit +`,0
  4932.  
  4933. even
  4934. ByteBandit2Text:
  4935. dc.b `Byte Bandit 2`,0
  4936.  
  4937. even
  4938. ByteBanditturboText:
  4939. dc.b `Byte Bandit turbo`,0
  4940.  
  4941. even
  4942. ByteVoyagerText:
  4943. dc.b `BYTE VOYAGER`,0
  4944.  
  4945. even
  4946. ByteVoyagerIIText:
  4947. dc.b `Byte Voyager II`,0
  4948.  
  4949. even
  4950. ByteWarriorText:
  4951. dc.b `Byte Warrior`,0
  4952.  
  4953. even
  4954. CascadeText:
  4955. dc.b `Cascade`,0
  4956.  
  4957. even
  4958. CCCPText:
  4959. dc.b `CCCP`,0
  4960.  
  4961. even
  4962. ClaasAbrahamText:
  4963. dc.b `Claas Abraham`,0
  4964.  
  4965. even
  4966. ClonkText:
  4967. dc.b `CLONK`,0
  4968.  
  4969. even
  4970. COBRAText:
  4971. dc.b `COBRA`,0
  4972.  
  4973. even
  4974. CodersNightmareText:
  4975. dc.b `Coders Nightmare`,0
  4976.  
  4977. even
  4978. CommodoreText:
  4979. dc.b `Commodore`,0
  4980.  
  4981. even
  4982. CopyLockText:
  4983. dc.b `CopyLock`,0
  4984.  
  4985. even
  4986. ColorText:
  4987. dc.b `Color (TURK V1.3)`,0
  4988.  
  4989. even
  4990. CompuPhagozyteText:
  4991. dc.b `CompuPhagozyte`,0
  4992.  
  4993. even
  4994. CompuPhagozyte2Text:
  4995. dc.b `CompuPhagozyte 2`,0
  4996.  
  4997. even
  4998. CompuPhagozyteIIText:
  4999. dc.b `COMPUPhagozyte II`,0
  5000.  
  5001. even
  5002. CompuPhagozyteIIIText:
  5003. dc.b `CompuPhagozyte III A`,0
  5004.  
  5005. even
  5006. CompuPhagozyteIIIBCText:
  5007. dc.b `CompuPhagozyte III B/C`,0
  5008.  
  5009. even
  5010. CompuPhagozyteIVText:
  5011. dc.b `CompuPhagozyte IV`,0
  5012.  
  5013. even
  5014. CrackerExterminatorText:
  5015. dc.b `Cracker Exterminator`,0
  5016.  
  5017. even
  5018. Crime2Text:
  5019. dc.b `Crime 2`,0
  5020.  
  5021. even
  5022. CrimePlusText:
  5023. dc.b `Crime!++`,0
  5024.  
  5025. even
  5026. DStructureText:
  5027. dc.b `D-Structure`,0
  5028.  
  5029. even
  5030. DAGText:
  5031. dc.b `DAG`,0
  5032.  
  5033. even
  5034. DAGCreatorText:
  5035. dc.b `DAG-Creator`,0
  5036.  
  5037. even
  5038. DarthVaderText:
  5039. dc.b `DARTH VADER 1.1`,0
  5040.  
  5041. even
  5042. DAT89Text:
  5043. dc.b `DAT '89`,0
  5044.  
  5045. even
  5046. DatacrimeText:
  5047. dc.b `Datacrime`,0
  5048.  
  5049. even
  5050. DestructorText:
  5051. dc.b `Destructor V1.2`,0
  5052.  
  5053. even
  5054. DetlefText:
  5055. dc.b `Detlef`,0
  5056.  
  5057. even
  5058. DigitalEmotionsText:
  5059. dc.b `DIGITAL EMOTIONS`,0
  5060.  
  5061. even
  5062. DisasterMasterText:
  5063. dc.b `DISASTER-MASTER V2`,0
  5064.  
  5065. even
  5066. DisgustText:
  5067. dc.b `Disgust`,0
  5068.  
  5069. even
  5070. DiskDoktorsText:
  5071. dc.b `Disk-Doktors`,0
  5072.  
  5073. even
  5074. DISKFurunkelText:
  5075. dc.b `DISK-Furunkel`,0
  5076.  
  5077. even
  5078. DiskguardText:
  5079. dc.b `DISK GUARD V1.0`,0
  5080.  
  5081. even
  5082. DiskHerpesText:
  5083. dc.b `Disk-Herpes`,0
  5084.  
  5085. even
  5086. DiskKillerText:
  5087. dc.b `DISK-KILLER V1.0`,0
  5088.  
  5089. even
  5090. DiskTerminatorText:
  5091. dc.b `Disk-Terminator`,0
  5092.  
  5093. even
  5094. DisktroyerV10Text:
  5095. dc.b `Disktroyer V1.0`,0
  5096.  
  5097. even
  5098. DisktroyerV20Text:
  5099. dc.b `Disktroyer V2.0`,0
  5100.  
  5101. even
  5102. DiskVal1234Text:
  5103. dc.b `Disk-Val1234`,0
  5104.  
  5105. even
  5106. DivinaExterminatorText:
  5107. dc.b `Divina Exterminator`,0
  5108.  
  5109. even
  5110. DMTrashText:
  5111. dc.b `DM-Trash`,0
  5112.  
  5113. even
  5114. DottyText:
  5115. dc.b `Dotty`,0
  5116.  
  5117. even
  5118. DriveInfoText:
  5119. dc.b `Drive Info(Crime!Linkvirus)`,0
  5120.  
  5121. even
  5122. DUMDUMText:
  5123. dc.b `DUMDUM`,0
  5124.  
  5125. even
  5126. ElectroVisionText:
  5127. dc.b `ELECTRO.VISION`,0
  5128.  
  5129. even
  5130. EuropeanText:
  5131. dc.b `European`,0
  5132.  
  5133. even
  5134. ExcrementText:
  5135. dc.b `EXCREMENT`,0
  5136.  
  5137. even
  5138. ExcrementCreatorText:
  5139. dc.b `EXCREMENT Creator`,0
  5140.  
  5141. even
  5142. ExecutorsText:
  5143. dc.b `EXECUTORS`,0
  5144.  
  5145. even
  5146. ExtremeText:
  5147. dc.b `EXTREME`,0
  5148.  
  5149. even
  5150. FASTText:
  5151. dc.b `F.A.S.T`,0
  5152.  
  5153. even
  5154. FastEddieText:
  5155. dc.b `Fast Eddie`,0
  5156.  
  5157. even
  5158. FICAText:
  5159. dc.b `FICA`,0
  5160.  
  5161. even
  5162. ForpibText:
  5163. dc.b `FORPIB`,0
  5164.  
  5165. even
  5166. FreedomText:
  5167. dc.b `Freedom!`,0
  5168.  
  5169. even
  5170. FrityText:
  5171. dc.b `Frity`,0
  5172.  
  5173. even
  5174. fuckdeviceText:
  5175. dc.b `fuck.device`,0
  5176.  
  5177. even
  5178. GadaffiText:
  5179. dc.b `GADAFFI`,0
  5180.  
  5181. even
  5182. GermanyText:
  5183. dc.b `Germany`,0
  5184.  
  5185. even
  5186. GlasnostText:
  5187. dc.b `GLASNOST`,0
  5188.  
  5189. even
  5190. GoldenRiderText:
  5191. dc.b `Golden Rider`,0
  5192.  
  5193. even
  5194. GotchaLamerText:
  5195. dc.b `Gotcha Lamer`,0
  5196.  
  5197. even
  5198. GotchaLamerCreatorText:
  5199. dc.b `Gotcha Lamer Creator`,0
  5200.  
  5201. even
  5202. GraffitiText:
  5203. dc.b `Graffiti`,0
  5204.  
  5205. even
  5206. GremlinText:
  5207. dc.b `Gremlin`,0
  5208.  
  5209. even
  5210. GuardiansBootAidsText:
  5211. dc.b `Guardians BootAids`,0
  5212.  
  5213. even
  5214. GXTeamText:
  5215. dc.b `GX.Team`,0
  5216.  
  5217. even
  5218. GyrosText:
  5219. dc.b `GYROS`,0
  5220.  
  5221. even
  5222. GZUSText:
  5223. dc.b `G-Zus`,0
  5224.  
  5225. even
  5226. HARDEXText:
  5227. dc.b `HARDEX`,0
  5228.  
  5229. even
  5230. HaukeText:
  5231. dc.b `Hauke`,0
  5232.  
  5233. even
  5234. HCSText:
  5235. dc.b `H.C.S`,0
  5236.  
  5237. even
  5238. HCSIIText:
  5239. dc.b `H.C.S II`,0
  5240.  
  5241. even
  5242. HighlanderText:
  5243. dc.b `HIGHLANDER`,0
  5244.  
  5245. even
  5246. HillyText:
  5247. dc.b `Hilly`,0
  5248.  
  5249. even
  5250. HochofenText:
  5251. dc.b `Hochofen`,0
  5252.  
  5253. even
  5254. HODENText:
  5255. dc.b `HODEN V33.17`,0
  5256.  
  5257. even
  5258. IceText:
  5259. dc.b `ICE`,0
  5260.  
  5261. even
  5262. IncognitoText:
  5263. dc.b `Incognito`,0
  5264.  
  5265. even
  5266. IndianaJonesText:
  5267. dc.b `Indiana Jones`,0
  5268.  
  5269. even
  5270. InfectorText:
  5271. dc.b `Infector`,0
  5272.  
  5273. even
  5274. InfluenzaText:
  5275. dc.b `INFLUENZA`,0
  5276.  
  5277. even
  5278. IngerIQText:
  5279. dc.b `Inger IQ`,0
  5280.  
  5281. even
  5282. IngoText:
  5283. dc.b `INGO`,0
  5284.  
  5285. even
  5286. IngosReturnText:
  5287. dc.b `INGOs Return`,0
  5288.  
  5289. even
  5290. IntelText:
  5291. dc.b `INTEL`,0
  5292.  
  5293. even
  5294. IRQText:
  5295. dc.b `IRQ`,0
  5296.  
  5297. even
  5298. JeffBUTONICV131Text:
  5299. dc.b `Jeff BUTONIC V1.31`,0
  5300.  
  5301. even
  5302. JeffBUTONICV300Text:
  5303. dc.b `Jeff BUTONIC V3.00`,0
  5304.  
  5305. even
  5306. JITRText:
  5307. dc.b `JITR`,0
  5308.  
  5309. even
  5310. JoshuaText:
  5311. dc.b `Joshua`,0
  5312.  
  5313. even
  5314. Joshua2Text:
  5315. dc.b `Joshua 2`,0
  5316.  
  5317. even
  5318. JulieText:
  5319. dc.b `Julie`,0
  5320.  
  5321. even
  5322. KaukiText:
  5323. dc.b `Kauki`,0
  5324.  
  5325. even
  5326. KefrensText:
  5327. dc.b `Kefrens`,0
  5328.  
  5329. even
  5330. KilledText:
  5331. dc.b `Killed`,0
  5332.  
  5333. even
  5334. LADSText:
  5335. dc.b `LADS`,0
  5336.  
  5337. even
  5338. LAMEText:
  5339. dc.b `LAME`,0
  5340.  
  5341. even
  5342. LameBlameText:
  5343. dc.b `Lame Blame!`,0
  5344.  
  5345. even
  5346. LamerExterminatoroldText:
  5347. dc.b `old LAMER Exterminator`,0
  5348.  
  5349. even
  5350. LamerExterminatoroldIIIText:
  5351. dc.b `(old) LAMER Exterminator (III)`,0
  5352.  
  5353. even
  5354. LamerExterminatornewText:
  5355. dc.b `new Lamer Exterminator`,0
  5356.  
  5357. even
  5358. LamerExterminatorIText:
  5359. dc.b `LAMER Exterminator I`,0
  5360.  
  5361. even
  5362. LamerExterminatorIIText:
  5363. dc.b `LAMER Exterminator II`,0
  5364.  
  5365. even
  5366. LamerExterminatorIIIText:
  5367. dc.b `LAMER Exterminator III`,0
  5368.  
  5369. even
  5370. LamerExterminatorIVText:
  5371. dc.b `LAMER Exterminator IV`,0
  5372.  
  5373. even
  5374. LamerExterminatorIVVText:
  5375. dc.b `LAMER Exterminator IV or V`,0
  5376.  
  5377. even
  5378. LamerExterminatorVText:
  5379. dc.b `LAMER Exterminator V`,0
  5380.  
  5381. even
  5382. LamerExterminatorVIText:
  5383. dc.b `LAMER Exterminator VI`,0
  5384.  
  5385. even
  5386. LamerExterminatorVIItext:
  5387. dc.b `LAMER Exterminator VII`,0
  5388.  
  5389. even
  5390. LamerExterminatorVIIIText:
  5391. dc.b `LAMER Exterminator VIII`,0
  5392.  
  5393. even
  5394. LamerLoadWBText:
  5395. dc.b `LAMER LoadWB`,0
  5396.  
  5397. even
  5398. LamerVirusXText:
  5399. dc.b `LAMER VirusX`,0
  5400.  
  5401. even
  5402. Liberatorv121Text:
  5403. dc.b `Liberator v1.21`,0
  5404.  
  5405. even
  5406. Liberatorv30Text:
  5407. dc.b `Liberator v3.0`,0
  5408.  
  5409. even
  5410. Liberatorv501Text:
  5411. dc.b `Liberator v5.01`,0
  5412.  
  5413. even
  5414. LOOMText:
  5415. dc.b `LOOM`,0
  5416.  
  5417. even
  5418. LoverboySexmachineText:
  5419. dc.b `Loverboy & Sexmachine`,0
  5420.  
  5421. even
  5422. LSDText:
  5423. dc.b `LSD`,0
  5424.  
  5425. even
  5426. MADText:
  5427. dc.b `MAD`,0
  5428.  
  5429. even
  5430. MADIIText:
  5431. dc.b `MAD II`,0
  5432.  
  5433. even
  5434. MallanderText:
  5435. dc.b `MALLANDER V1.0`,0
  5436.  
  5437. even
  5438. MENEMSREVENGEText:
  5439. dc.b `MENEMs REVENGE`,0
  5440.  
  5441. even
  5442. MEXXText:
  5443. dc.b `MEXX`,0
  5444.  
  5445. even
  5446. MGM89Text:
  5447. dc.b `MGM 89`,0
  5448.  
  5449. even
  5450. MICROSYSTEMSText:
  5451. dc.b `MICROSYSTEMS`,0
  5452.  
  5453. even
  5454. ModemCheckerText:
  5455. dc.b `MODEMCHECKER`,0
  5456.  
  5457. even
  5458. ModemCheckerLoadWBText:
  5459. dc.b `MODEMCHECKER LoadWB`,0
  5460.  
  5461. even
  5462. MOSHText:
  5463. dc.b `MOSH`,0
  5464.  
  5465. even
  5466. MOSH2Text:
  5467. dc.b `MOSH 2`,0
  5468.  
  5469. even
  5470. MutilatorText:
  5471. dc.b `Mutilator`,0
  5472.  
  5473. even
  5474. NANOoldText:
  5475. dc.b `old NANO`,0
  5476.  
  5477. even
  5478. NanonewText:
  5479. dc.b `Nano (new)`,0
  5480.  
  5481. even
  5482. NaSTText:
  5483. dc.b `NaST`,0
  5484.  
  5485. even
  5486. NastyNastyText:
  5487. dc.b `Nasty-nasty`,0
  5488.  
  5489. even
  5490. NoGuruV20Text:
  5491. dc.b `No Guru V2.0`,0
  5492.  
  5493. even
  5494. NorthStarText:
  5495. dc.b `NORTH STAR`,0
  5496.  
  5497. even
  5498. NorthStarIIText:
  5499. dc.b `NORTH STAR II`,0
  5500.  
  5501. even
  5502. ObeliskText:
  5503. dc.b `OBELISK`,0
  5504.  
  5505. even
  5506. Obelisk2Text:
  5507. dc.b `OBELISK 2`,0
  5508.  
  5509. even
  5510. OPAPAText:
  5511. dc.b `OPAPA`,0
  5512.  
  5513. even
  5514. OverkillText:
  5515. dc.b `Overkill`,0
  5516.  
  5517. even
  5518. PARATAXIText:
  5519. dc.b `PARATAX I`,0
  5520.  
  5521. even
  5522. PARATAXIIText:
  5523. dc.b `PARATAX II`,0
  5524.  
  5525. even
  5526. PARATAXIIIText:
  5527. dc.b `PARATAX III`,0
  5528.  
  5529. even
  5530. PayDayText:
  5531. dc.b `PayDay`,0
  5532.  
  5533. even
  5534. PentagonSlayerText:
  5535. dc.b `Pentagon-Slayer`,0
  5536.  
  5537. even
  5538. PentagonSlayer2Text:
  5539. dc.b `Pentagon-Slayer 2`,0
  5540.  
  5541. even
  5542. PentagonSlayer3Text:
  5543. dc.b `Pentagon-Slayer 3`,0
  5544.  
  5545. even
  5546. PlastiqueText:
  5547. dc.b `Plastique`,0
  5548.  
  5549. even
  5550. PPBombText:
  5551. dc.b `PP-Bomb`,0
  5552.  
  5553. even
  5554. QRDLText:
  5555. dc.b `QRDL 1.1`,0
  5556.  
  5557. even
  5558. RedOctoberText:
  5559. dc.b `Red October 1.7`,0
  5560.  
  5561. even
  5562. REPText:
  5563. dc.b `REP!`,0
  5564.  
  5565. even
  5566. ReturnoftheLamerExterminatorText:
  5567. dc.b `Return of the Lamer Exterminator`,0
  5568.  
  5569. even
  5570. RevengeBootloaderText:
  5571. dc.b `Revenge Bootloader`,0
  5572.  
  5573. even
  5574. RevengeOfTheLamerExterminatorText:
  5575. dc.b `Revenge Of The LAMER Exterminator`,0
  5576.  
  5577. even
  5578. RevengeOfTheLamerExterminator2Text:
  5579. dc.b `Revenge Of The LAMER Exterminator 2`,0
  5580.  
  5581. even
  5582. REVENGEText:
  5583. dc.b `REVENGE V1.2`,0
  5584.  
  5585. even
  5586. RISCText:
  5587. dc.b `RISC`,0
  5588.  
  5589. even
  5590. SachsenText:
  5591. dc.b `SACHSEN No.1`,0
  5592.  
  5593. even
  5594. SADDAMText:
  5595. dc.b `SADDAM`,0
  5596.  
  5597. even
  5598. SADDAMHUSSEINText:
  5599. dc.b `SADDAM HUSSEIN`,0
  5600.  
  5601. even
  5602. SaoPauloText:
  5603. dc.b `Sao Paulo`,0
  5604.  
  5605. even
  5606. SATANText:
  5607. dc.b `SATAN`,0
  5608.  
  5609. even
  5610. SCAText:
  5611. dc.b `SCA`,0
  5612.  
  5613. even
  5614. SCARFACEText:
  5615. dc.b `SCARFACE`,0
  5616.  
  5617. even
  5618. SendarionText:
  5619. dc.b `Sendarion #1`,0
  5620.  
  5621. even
  5622. SEPULTURAText:
  5623. dc.b `SEPULTURA`,0
  5624.  
  5625. even
  5626. SherlockText:
  5627. dc.b `Sherlock2.0`,0
  5628.  
  5629. even
  5630. ShitText:
  5631. dc.b `Shit`,0
  5632.  
  5633. even
  5634. ShowSysopText:
  5635. dc.b `ShowSysop`,0
  5636.  
  5637. even
  5638. SmilyCancerText:
  5639. dc.b `Smily Cancer`,0
  5640.  
  5641. even
  5642. SmilyCancerLoadWBText:
  5643. dc.b `Smily Cancer LoadWB`,0
  5644.  
  5645. even
  5646. SnoopDosText:
  5647. dc.b `SnoopDos 1.6`,0
  5648.  
  5649. even
  5650. SonjaText:
  5651. dc.b `Sonja`,0
  5652.  
  5653. even
  5654. SSText:
  5655. dc.b `SS`,0
  5656.  
  5657. even
  5658. SSIIText:
  5659. dc.b `SS II`,0
  5660.  
  5661. even
  5662. SuicideMachineText:
  5663. dc.b `Suicide Machine`,0
  5664.  
  5665. even
  5666. SuperboyText:
  5667. dc.b `Superboy`,0
  5668.  
  5669. even
  5670. SupplyTeamText:
  5671. dc.b `Supply Team`,0
  5672.  
  5673. even
  5674. SystemZV30Text:
  5675. dc.b `System Z V3.0`,0
  5676.  
  5677. even
  5678. systemZV40Text:
  5679. dc.b `System Z V4.0`,0
  5680.  
  5681. even
  5682. SystemZV50Text:
  5683. dc.b `System Z V5.0`,0
  5684.  
  5685. even
  5686. SystemZV51Text:
  5687. dc.b `System Z V5.1`,0
  5688.  
  5689. even
  5690. SystemZV53Text:
  5691. dc.b `System Z V5.3`,0
  5692.  
  5693. even
  5694. SystemZV54Text:
  5695. dc.b `System Z V5.4`,0
  5696.  
  5697. even
  5698. SystemZV61Text:
  5699. dc.b `System Z V6.1`,0
  5700.  
  5701. even
  5702. SystemZV64Text:
  5703. dc.b `System Z V6.4`,0
  5704.  
  5705. even
  5706. SystemZV65Text:
  5707. dc.b `System Z V6.5`,0
  5708.  
  5709. even
  5710. TargetText:
  5711. dc.b `TARGET`,0
  5712.  
  5713. even
  5714. TelecomText:
  5715. dc.b `Telecom`,0
  5716.  
  5717. even
  5718. TelStarText:
  5719. dc.b `TelStar`,0
  5720.  
  5721. even
  5722. TermigatorText:
  5723. dc.b `Termigator`,0
  5724.  
  5725. even
  5726. TerroristsText:
  5727. dc.b `Terrorists`,0
  5728.  
  5729. even
  5730. TFCRevengeText:
  5731. dc.b `T.F.C. Revenge`,0
  5732.  
  5733. even
  5734. TFCRevengeLoadWBText:
  5735. dc.b `T.F.C. Revenge LoadWB`,0
  5736.  
  5737. even
  5738. TimeBombText:
  5739. dc.b `TIME BOMB 1.0`,0
  5740.  
  5741. even
  5742. TimeBombV09Text:
  5743. dc.b `TIME BOMB V0.9`,0
  5744.  
  5745. even
  5746. TNKText:
  5747. dc.b `TNK!`,0
  5748.  
  5749. even
  5750. TomatesGentechnic10Text:
  5751. dc.b `TOMATES GENTECHNIC 1.0`,0
  5752.  
  5753. even
  5754. TomatesGentechnic20Text:
  5755. dc.b `TOMATES GENTECHNIC 2.0`,0
  5756.  
  5757. even
  5758. TravelingJackText:
  5759. dc.b `Traveling Jack`,0
  5760.  
  5761. even
  5762. TravelingJack2Text:
  5763. dc.b `Traveling Jack 2`,0
  5764.  
  5765. even
  5766. TravelingJackTextText:
  5767. dc.b `Traveling Jack-Text`,0
  5768.  
  5769. even
  5770. TURKText:
  5771. dc.b `TURK V1.3`,0
  5772.  
  5773. even
  5774. UltrafoxText:
  5775. dc.b `Ultrafox`,0
  5776.  
  5777. even
  5778. UKLamerStyleText:
  5779. dc.b `UK Lamer Style`,0
  5780.  
  5781. even
  5782. USSR492Text:
  5783. dc.b `USSR 492`,0
  5784.  
  5785. even
  5786. VCCofTNTText:
  5787. dc.b `VCC of TNT`,0
  5788.  
  5789. even
  5790. VIPHSText:
  5791. dc.b `VIPHS`,0
  5792.  
  5793. even
  5794. VirusConstructionSetText:
  5795. dc.b `Virus Construction Set`,0
  5796.  
  5797. even
  5798. VirusConstructionSetBootblockText:
  5799. dc.b `Virus Construction Set-Bootblock`,0
  5800.  
  5801. even
  5802. VirusSlayerText:
  5803. dc.b `Virus Slayer`,0
  5804.  
  5805. even
  5806. VirusV1Text:
  5807. dc.b `Virus V1`,0
  5808.  
  5809. even
  5810. WAFTText:
  5811. dc.b `WAFT`,0
  5812.  
  5813. even
  5814. WahnfriedText:
  5815. dc.b `WAHNFRIED`,0
  5816.  
  5817. even
  5818. WARHAWKText:
  5819. dc.b `WARHAWK`,0
  5820.  
  5821. even
  5822. WarsawAvengerText:
  5823. dc.b `Warsaw Avenger`,0
  5824.  
  5825. even
  5826. XenoText:
  5827. dc.b `Xeno`,0
  5828.  
  5829. even
  5830. xprzspeedV32Text:
  5831. dc.b `xprzspeed V3.2`,0
  5832.  
  5833. even
  5834. ZaccessV10Text:
  5835. dc.b `ZACCESS V1.0`,0
  5836.  
  5837. even
  5838. ZaccessV20Text:
  5839. dc.b `ZACCESS V2.0`,0
  5840.  
  5841. even
  5842. ZaccessV30Text:
  5843. dc.b `ZACCESS V3.0`,0
  5844.  
  5845. even
  5846. ZenkerText:
  5847. dc.b `ZENKER`,0
  5848.  
  5849. even
  5850. ZESTText:
  5851. dc.b `Z.E.S.T`,0
  5852.  
  5853. even
  5854. ZLXText:
  5855. dc.b `ZLX!`,0
  5856.  
  5857. even
  5858. ZombiText:
  5859. dc.b `Zombi I`,0
  5860.  
  5861.