home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / virus / progs / vkiller / !VKiller_Docs_ExtendDoc < prev    next >
Encoding:
Text File  |  1991-06-02  |  4.6 KB  |  99 lines

  1. This is very detailed (although stopping short of a disassembly of course)
  2. description of the Extend Virus. It is strongly recommended reading, if only to
  3. give you a better understanding of how the virus operates.
  4.  
  5. Extend Virus technical information
  6. ----------------------------------
  7.  
  8. It's a module which can go under 8 different filenames (the name is picked at
  9. random using the current time as a seed):
  10.  
  11. MonitorRM, CheckMod, ExtendRM, OSextend, ColourRM, Fastmod, CodeRM or MemRM.
  12.  
  13. Nowever, the module itself has the following title string:
  14.  
  15. Extend 1.56 (08 Jul 1989)
  16.  
  17. and is always known as "Extend" in the module list. For reference purposes,
  18. I shall refer to it as the "Extend Virus".
  19.  
  20. The date seems to imply that it has been around for nearly 2 years, which is
  21. a worrying thought indeed. It is 940 (&3AC) bytes long and initialises itself
  22. as a nameless Wimp task which then looks for Wimp Message 5 (double-click).
  23. It attempts to either create an !Boot in the application directory or append
  24. to an already existing one with the following lines:
  25.  
  26. IconSprites <Obey$Dir>.!Sprites<&0D>
  27. RMEnsure Extend 0 RMRun <Obey$Dir>.ModName<&0D>
  28. ||<&FF>
  29.  
  30. The "IconSprites" line is omitted if it is appended to an existing !Boot.
  31. "ModName" is one of the 8 possible filenames. The Extend Virus uses the <&FF>
  32. (i.e. decimal 255) byte at the end as a self-check to see if has infected the
  33. !Boot file already. Of course, it copies itself to the new name inside
  34. the application directory as you would expect. Note the incorrect use of
  35. <&0D> (decimal 13) to terminate the lines, rather than the more correct
  36. <&0A> (decimal 10).
  37.  
  38. A shift-double-click does NOT cause an infection, but it DOES claim yet
  39. another 1K of never-to-be-released RMA.
  40.  
  41. I have gone through the entire code and the only destructive thing it does,
  42. apart from wasting disk space with copies of itself, is to claim the 1K of
  43. RMA for every double-clicked file or directory (eventually crashing the
  44. system).
  45.  
  46. Extend Virus Execution Count
  47. ----------------------------
  48.  
  49. There was one bit of the Extend Virus module code that perplexed me - why
  50. would someone increment a memory location within the module and never use it ?
  51. At first I skipped this code, but, remembering some viruses on the Amiga, I
  52. suddenly realised that the incremented value would be copied whenever the
  53. module duplicated itself during a new infection. Now if the original author
  54. was smart, he would have incremented the counter IF AND ONLY IF there was
  55. a completely successful new infection (in fact, he would have incremented it
  56. prior to the new infection and decremented it if the infection failed).
  57. However, the Extend Virus module actually increments the counter whenever it is
  58. first started (usually via the *RMEnsure appended to the !Boot)...thus the
  59. counter does not correlate to the number of infections so far. Because of this,
  60. I've decided to call it the "Execution Count" from now on.
  61.  
  62. Extend Virus deliberately faulty virus coding ?
  63. -----------------------------------------------
  64.  
  65. When the Extend Virus initialises itself as a nameless task, it does not save
  66. its task handle. Hence, when it comes to execute Wimp_CloseDown (only via a
  67. *RMKill - it cannot be killed by the Task Manager) it does NOT supply a valid
  68. task handle. Thus, opening up the Task Manager afterwards causes it to fatally
  69. crash...which isn't nice.
  70.  
  71. Thanks to code supplied by Martin Avison, the task handle of the Extend Virus
  72. task can now be determined at any time and it can be "patched" by VKiller so
  73. that it shuts down with a proper task handle and the Task Manager can still be
  74. safely used.
  75.  
  76. Extend Virus Innoculation
  77. -------------------------
  78.  
  79. VKiller can innoculate a !Boot file. This involves fooling the Extend Virus
  80. that it has already infected that !Boot file by attaching the following
  81. to the end of the file:
  82.  
  83. IconSprites <Obey$Dir>.!Sprites<&0A>
  84. | This file has been innoculated against the Extend Virus<&0A>
  85. ||<&FF>
  86.  
  87. The IconSprites line is only included if a new !Boot is created from scratch
  88. AND if the application directory contains an !Sprites file with the Sprite
  89. filetype. If the original !Boot was not properly terminated by a linefeed
  90. (<&0A>), then a linefeed will be appended prior to the addition of any
  91. innoculation lines. Note the critical difference between the Extend Virus
  92. infection and the innoculation: the penultimate line is terminated by <&0A>
  93. and not <&0D>. This is how VKiller can differentiate between innoculations
  94. and infections.
  95.  
  96. Please note that creating new innoculated !Boot files from scratch will cause
  97. the double-click action to open a directory window to take longer because the
  98. applications inside that window have these new !Boot files.
  99.