home *** CD-ROM | disk | FTP | other *** search
- This is very detailed (although stopping short of a disassembly of course)
- description of the Extend Virus. It is strongly recommended reading, if only to
- give you a better understanding of how the virus operates.
-
- Extend Virus technical information
- ----------------------------------
-
- It's a module which can go under 8 different filenames (the name is picked at
- random using the current time as a seed):
-
- MonitorRM, CheckMod, ExtendRM, OSextend, ColourRM, Fastmod, CodeRM or MemRM.
-
- Nowever, the module itself has the following title string:
-
- Extend 1.56 (08 Jul 1989)
-
- and is always known as "Extend" in the module list. For reference purposes,
- I shall refer to it as the "Extend Virus".
-
- The date seems to imply that it has been around for nearly 2 years, which is
- a worrying thought indeed. It is 940 (&3AC) bytes long and initialises itself
- as a nameless Wimp task which then looks for Wimp Message 5 (double-click).
- It attempts to either create an !Boot in the application directory or append
- to an already existing one with the following lines:
-
- IconSprites <Obey$Dir>.!Sprites<&0D>
- RMEnsure Extend 0 RMRun <Obey$Dir>.ModName<&0D>
- ||<&FF>
-
- The "IconSprites" line is omitted if it is appended to an existing !Boot.
- "ModName" is one of the 8 possible filenames. The Extend Virus uses the <&FF>
- (i.e. decimal 255) byte at the end as a self-check to see if has infected the
- !Boot file already. Of course, it copies itself to the new name inside
- the application directory as you would expect. Note the incorrect use of
- <&0D> (decimal 13) to terminate the lines, rather than the more correct
- <&0A> (decimal 10).
-
- A shift-double-click does NOT cause an infection, but it DOES claim yet
- another 1K of never-to-be-released RMA.
-
- I have gone through the entire code and the only destructive thing it does,
- apart from wasting disk space with copies of itself, is to claim the 1K of
- RMA for every double-clicked file or directory (eventually crashing the
- system).
-
- Extend Virus Execution Count
- ----------------------------
-
- There was one bit of the Extend Virus module code that perplexed me - why
- would someone increment a memory location within the module and never use it ?
- At first I skipped this code, but, remembering some viruses on the Amiga, I
- suddenly realised that the incremented value would be copied whenever the
- module duplicated itself during a new infection. Now if the original author
- was smart, he would have incremented the counter IF AND ONLY IF there was
- a completely successful new infection (in fact, he would have incremented it
- prior to the new infection and decremented it if the infection failed).
- However, the Extend Virus module actually increments the counter whenever it is
- first started (usually via the *RMEnsure appended to the !Boot)...thus the
- counter does not correlate to the number of infections so far. Because of this,
- I've decided to call it the "Execution Count" from now on.
-
- Extend Virus deliberately faulty virus coding ?
- -----------------------------------------------
-
- When the Extend Virus initialises itself as a nameless task, it does not save
- its task handle. Hence, when it comes to execute Wimp_CloseDown (only via a
- *RMKill - it cannot be killed by the Task Manager) it does NOT supply a valid
- task handle. Thus, opening up the Task Manager afterwards causes it to fatally
- crash...which isn't nice.
-
- Thanks to code supplied by Martin Avison, the task handle of the Extend Virus
- task can now be determined at any time and it can be "patched" by VKiller so
- that it shuts down with a proper task handle and the Task Manager can still be
- safely used.
-
- Extend Virus Innoculation
- -------------------------
-
- VKiller can innoculate a !Boot file. This involves fooling the Extend Virus
- that it has already infected that !Boot file by attaching the following
- to the end of the file:
-
- IconSprites <Obey$Dir>.!Sprites<&0A>
- | This file has been innoculated against the Extend Virus<&0A>
- ||<&FF>
-
- The IconSprites line is only included if a new !Boot is created from scratch
- AND if the application directory contains an !Sprites file with the Sprite
- filetype. If the original !Boot was not properly terminated by a linefeed
- (<&0A>), then a linefeed will be appended prior to the addition of any
- innoculation lines. Note the critical difference between the Extend Virus
- infection and the innoculation: the penultimate line is terminated by <&0A>
- and not <&0D>. This is how VKiller can differentiate between innoculations
- and infections.
-
- Please note that creating new innoculated !Boot files from scratch will cause
- the double-click action to open a directory window to take longer because the
- applications inside that window have these new !Boot files.
-