Advent of Computing - Episode 169 - Dellinger's Viruses

Episode Date: October 26, 2025

In 1981 Joe Dellinger attempted to create the perfect computer program: a virus that spread silently. In 1982 a revision of that virus broke containment. It would have remained completely hidde...n if it wasn't for an obscure Apple II game. Today we look at the story and motivation behind that virus, and how it slipped into the sands of time. Or... did it!? The truth is if you have an Apple II it may be infected with Dellinger's virus!  

Transcript
Discussion (0)
Starting point is 00:00:00 The Jargon File, one of my favorite guides to digital folklore, has a very detailed entry for this thing called the Hacker Ethic. Makes sense that I'd spill a lot of ink over it because it's a pretty important and subtle topic. Part of the definition states, quote, The belief that system cracking for fun and exploration is ethically okay as long as the cracker commits no theft, vandalism, or breach of confidentiality. Hackers love to bend and break things, to see what makes a computer tick, to uncover the why and how. In the course of that obsession, sometimes you end up violating more, let's say conventional ethics. You end up breaching the security of a network. You wind up with files you probably shouldn't have access to.
Starting point is 00:00:51 You make some software that should probably not be shared that widely. In these cases, it's not just intent that matters. The digital realm is special because it's non-physical. You can break into a computer without breaking anything. You can steal a file without depriving its owner. How can you say you've been stolen from if you still have the original copy sitting on your hard drive? Thus, we enter this gray zone.
Starting point is 00:01:22 It's not just intent that matters. it's not just impact, it's also the totality of conduct. In this context, normal questions shift in meaning. Considering should I becomes useless in the face of a hacker's obsession. We see different factors come into focus. Can I even do it? And how can I do it without repercussions for myself or others? For any good hack, the aspect of stealth is crucial.
Starting point is 00:01:54 The hacker doesn't want to be interrupted. In some cases, they may breach a system, take a look around, and disappear without anyone ever finding out. In other cases, the hack may end with a grand reveal of the vulnerability or the tricks they used. It's this very aspect, stealth, that makes hacking so interesting and so difficult to document. How do you deal with a story that's meant to be kept hidden? Where would you even look for any confirmation?
Starting point is 00:02:24 of that tale. Welcome back to Spook Month here on Advent of Computing. I'm your host, Sean Hasse, and this is episode 169, the Dellinger viruses. To close out October, I've managed to squeeze in a virus episode. Viruses have, of course, been a mainstay of my Spook Month coverage for years, But it's getting harder and harder to find ones in my time range that I haven't talked about. Today, we'll be looking at a series of viruses developed for the Apple II computer. These viruses, created by one Joe Dellinger and maybe some of his college buddies,
Starting point is 00:03:11 bear a certain resemblance to another virus. That is, elk cloner. What, you don't remember the elk cloner? It was the program with personality. Elk Cloner was written by Richard Scranta in probably 1982. It targeted the Apple 2 and hid on the boot sector of floppy disks. It spread via software piracy. And crucially, it was meant as a funny gag.
Starting point is 00:03:39 Elk cloner didn't destroy anything. It just mocked its victims with a little message as it spread around. Dellinger writes his viruses around the same time as Elk cloner. In fact, he may have started before Screnta. I've characterized this early era of viruses as a period of practical jokes and experimentations. I want to see if Delinger follows that pattern. Did he program for good, for evil, or for a couple of hearty laughs?
Starting point is 00:04:14 Before we start, we need to do my sourcing corner. This is one of the few cases where my main thing. source is, well, the horse's mouth, as it were. Most of this story comes to us from Delinger directly in a series of emails and posts on the early internet. This is also one of the main issues with a lot of these early viruses, and a reason I haven't covered every virus under the sun. When it comes to malicious software and maliciousness around software, you have issues in reporting. Early victims of digital crime don't want to report them because they can damage reputations. That's especially true for businesses. We've seen that pattern whenever we
Starting point is 00:05:00 talk about early computer crime. I mean, we literally saw it a few weeks ago with the MetLife hack we discussed. There are also some events that are so small they don't really bear reporting. Some hacks, tricks, freaks, and even viruses fall into this category. The early 80s is still very early days for computer viruses. There isn't a public consciousness about the threat of viruses. So there isn't really a reason or even a pathway to report on virus outbreaks. You won't find newspaper articles covering this kind of stuff quite yet. All this is to say we need to view Delinger's story with some healthy skepticism.
Starting point is 00:05:44 It may just be folklore or it may be real. The thing is we can't really verify it with any corroborating sources, and that's partly just because there wouldn't have been any corroborating sources in the period. We'll need to address that as we go today. The earliest emails I can find from Delinger date back to 1987. That's after a number of well-known viruses hit the scene, and after some initial academic work about viruses is published. With that in mind, what exactly is the story?
Starting point is 00:06:18 Well, it starts in 1981 at Texas A&M University, where Delinger was just an undergrad student. Delinger and a group of unnamed friends start toying with a very dangerous idea. Texas A&M was a big Apple II campus, and campus was full of software pirates. This was kind of the order of the day back then. Copy protection didn't really work yet, and what did would be circumvented pretty easily. so most software in the wild was pirated, or at least a large amount of software was on copied floppy disks. However, that didn't always work out very well. From Dellinger in a 1990 article, quote,
Starting point is 00:07:01 I noted that most games were damaged in various sorts of ways, but they were almost always still playable despite the damage. For example, there was one popular Star Trek game in Basic that had occasional garbage control characters in non-critical, REM and print statements. Space War games often had random junk replacing some pictures on the ships, etc. I decided that I could explain this by invoking a sort of evolution, end quote. This wasn't the most wild jump in logic.
Starting point is 00:07:35 Computers tend to feel a little bit alive. Back then, that was especially true. Machines were so much more simple and so much less reliable. Plus, they were probably more unreliable, machines in the hands of poor undergrads. Why would you even consider putting money towards new floppy disks and drives when your old one works most of the time, and you're surviving off computer science department pizza parties?
Starting point is 00:08:04 Dellinger's next leap in logic is where we get down this path toward danger. Evolution is, of course, an optimizing process. So could this digital form of evolution be optimizing? And if so, where could it lead? What would be the evolutionarily perfect program? This is essentially the thought process behind genetic algorithms or genetic programming. You make a program that can evolve over time and eventually lead to some optimized program. That program is then set loose in a specific environment.
Starting point is 00:08:41 As it evolves, it fits that environment better. Its fitness increases. But another way, it solves a given problem space. Dellinger and Coe wouldn't get quite as theoretically sophisticated as that. Instead, they wanted to do the evolving on their own. They envisioned what the end stage of that evolutionary process might look like and tried to create that program, the perfect program. The environment here was simple.
Starting point is 00:09:12 Delinger's Apple II computer and his personal collection, of floppy disks stored in his dorm room. So, what did these students think was the perfect program? Simply put, a virus. Now, we can argue about naming convention here. By 1987, Dellinger is calling his program a virus. Would he have called it that in 1981? Probably not. That wasn't really in the lexicon yet, at least not in any wide-scale sense. But I'm going to use the term since, well, it's applicable, and that's what Delinger calls it by the time he's writing publicly about his software. To be a little more specific, Delinger wanted to develop a completely silent virus. His logic here is simple. The key measure of fitness is reproduction,
Starting point is 00:10:06 as in how many copies of the program exist. Games get pretty high scores in that department thanks to piracy. But that's a manual process. A better route, a more optimized route, will be fully automated reproduction, a program that copies itself around without any human intervention or with very limited human intervention. The best kind of self-reproducing program would do so undetected because then there'd be no reason for anyone to interfere with its reproduction. Hence, a virus with no symptoms, a quiet virus for silent reproduction, as it were. The virus would spread from disc to disc, doing nothing but incrementing a counter every time it made it to a new host. It turns out that the no symptom part would be the most
Starting point is 00:10:57 difficult constraint. Spreading is easy, but staying hidden without any side effects. Well, that's another story. These computers are so simple, and their file systems are so primitive and so small that it's hard to hide anything. A first attempt was running by 1982, but according to Dellinger, it was too destructive. We don't have details, but it must have done something pretty nasty. He considered it a total failure. A second version, sometimes called Virus 2, was created using lessons learned from Virus 1.
Starting point is 00:11:34 It's with Virus 2 that we start to see what could have gone wrong with its predecessor. These were boot sector viruses. When the Apple 2 boots from a floppy disk, it reads a specific sector from that disk into memory. That sector is treated as a program and executes immediately. That same method is used by many computers. It's super handy, super simple, and very exploitable. Virus 2 hid around that boot sector, specifically, it modified the boot information for Apple DOS 3.3 disks.
Starting point is 00:12:10 That's pretty specific. It means that Virus 2 could only spread to disks that contained that exact version of DOS. Why would Dillinger target such a specific victim? Well, there's two reasons. The first was stealth. DOS 3.3 had a very large unused region of data inside its boot sector, or boot sectors, but we'll get to the specifics later. That region was always set to a pile of zeros,
Starting point is 00:12:40 and it was always in the same place. That gave virus two a comfy spot to hide in. The second comes down to Dellinger's goal of non-harm. In order to exploit that free space, you have to make sure that free space exists and is 100% never used. That specific hidey hole only existed in DOS 3.3. At least, that was the only place where Delinger could verify that spot existed reliably and safely.
Starting point is 00:13:10 A new version of Apple DOS may use that spot for new code, or it may use that spot for variable storage. So throwing a virus into that area would be destructive. It would cause harm and symptoms. I think it's likely that virus one failed because, well, it didn't respect the hidey hole in the correct way. Dillinger explains that most of Virus 2's code was dedicated to making sure it infected the correct type of discs with that free space. He makes that sound tricky, which to me sounds like it took a while to work out. It would make sense that Virus 1's flaw had something to do with those checking routines. They probably just weren't developed enough yet.
Starting point is 00:13:56 Once hidden, Virus 2 could hitch a ride into memory. As the Apple 2 booted, that boot sector was loaded. Virus 2 became resident in RAM, and it was ready to run. The next time a disk was used, virus 2 would copy itself into that disk's boot sector as long as it was the exactly correct version of DOS 3.3. It turns out that many disks in 1982 met that criteria. When it transferred over, the virus would increment that generation counter.
Starting point is 00:14:28 That way Dillinger could see how. how well the virus spread. At first, this was totally self-contained. Dellinger only experimented with his own disks. That made this pretty close to a research project. He was able to track how the virus spread during his usual use of his Apple 2. And in that capacity, things worked out pretty well. The generation counter went up.
Starting point is 00:14:53 Discs were infected and no harm was ever done. That would be a nice ending, but it's not the entire story. You see, virus two would break containment. Things went so well in this quarantine testing that Delinger and his friends got a little lax with security. They started toying around with the virus on other Apple twos. Thus, the virus started to spread outside Delinger's dorm room.
Starting point is 00:15:22 At first, this was fine, until one of his friends graduated. That unnamed friend went to grad school at the University of Illinois Urbana-Champaign. He took his floppy disks with him. That meant that Virus 2 came along to university. It wasn't long before the program was tearing through the new campus. It spread rapidly thanks to the classic practice of software piracy. As students copied all those floppies, Virus 2 snuck around. At first, it was harmless just as designed.
Starting point is 00:15:58 That was the point. But eventually, it led to a weird issue. Just like its predecessor, Virus 2 had a flaw, and it had to do with that fancy hidey hole. To explain the probable problem, we got to look at exactly how an Apple 2 boots into Apple DOS. When the machine goes to boot, it reads that first sector off the disk. that loads in what's known as the first stage of the bootloader.
Starting point is 00:16:28 This program is small and only does one thing. It reads the next nine sectors off disk. Simple, right? Dillinger says that Virus II expanded that a little. It made DOS's actual resident code take up 10 sectors. It would have also had to modify the first stage bootloader to load 10 instead of nine sectors. That magic 10th sector contained the virus. The actual infection modified a few chunks of DOS 3.3.
Starting point is 00:17:01 It had to, as I mentioned, adjust the first stage bootloader to load the extra sector. It also had to hook itself into DOS 3.3's existing code so it could be triggered. It was just a little more complex than an extra sector of data. Apparently, that didn't play well with some programs. It wasn't entirely uncommon for early home computer programs to do, well, some funky and possibly dangerous stuff to memory. We're talking about overriding chunks of memory, modifying running code, that sort of thing, touching things you're not supposed to touch.
Starting point is 00:17:40 One of those games was called Congo. It didn't play well with Virus 2. Congo was a real game for the Apple 2. In fact, it seems to have been a bit of an obscure title. At least, it's obscure these days. In the game, you pilot a boat down the Congo River, avoiding themed obstacles. The game was spread around by pirates at the University of Illinois. There's some joke there about pirates on a boat, but I'll leave that as an exercise to the reader.
Starting point is 00:18:11 As copies of Congo were made, an infected disc gone into the mix, so virus two would spread with it. If you boot it up and played from an infected disc, then Congo had some kind of graphical glitches. Delinger describes it as screen smearing. It's likely that Congo was trying to reuse some of that Heidi Hole memory that Virus 2 was using, which led to the unfortunate behavior. For Delinger, this was another failure. Virus 2 did have a symptom. It just happened to be a little bit obscure.
Starting point is 00:18:46 This is also a neat illustrative point of why you should stick to documented behavior. Remember how last time we talked about the perils of undefined op codes? When you stray from documented behavior, there's no guarantee that your code will actually work. In this case, Delinger is using memory and space on disk that's technically reserved. You're not supposed to use it. It's something that DOS 3.3 isn't using at the time. but an expansion to DOS might use it, another program might use it. The space is only incidentally free at the time.
Starting point is 00:19:24 In this case, Congo is likely running into that chunk of memory. The result is unexpected behavior. This could have all been avoided if everyone just stuck to the documentation, but I digress. When Dillinger learned of this failure, he set to work on an improved version of his code. Virus 3. The goal of this new virus was to, again, spread with no symptoms. But there is a secondary goal, kill virus 2. As this new virus spread, it should replace all versions of virus 2, and its fingerprint should prevent virus 2 from propagating to upgraded discs. But how would you make sure that the virus truly had no symptoms? Well, you need to hide things better. To quote,
Starting point is 00:20:15 The goal for Virus 3 was that it should take up no room in memory and no room on disk, end quote. That sounds like a bit of a riddle. This is also a spot where Dellinger's story gets a little odd. He says that the trick was to put Virus 3 in, quote-unquote, unprotected memory. The Apple 2 didn't really do protected memory. I think he means that Virus 3 was stored in a location on the floppy day, that was normally used for files. So if you're looking at a floppy disk like a table,
Starting point is 00:20:51 then after the boot sector, there's some special region for file system data. Then there's a larger region that's where a file data is actually stored. The special file system data on the disk tracks where files are stored in the larger region of storage. But there's nothing stopping you from storing data in some special data data in some special sector and just not tracking it in the file system tables. That would hide your data from Apple DOS in a pretty non-destructive way.
Starting point is 00:21:26 But the risk here is if you're doing that, you are way off-spec. If another program tries to write a file the correct way by referencing the table that describes where data is stored on disk, then your secret file would be overwritten. But for Delinger, that was actually a plus. It meant that if another Congo scenario came up, then the virus would get overwritten. No harm, no foul, just some good, clean fun. This is also where the story ends. Virus 3 is unleashed at the University of Illinois, and nothing is ever heard again.
Starting point is 00:22:05 Delinger moved from Texas A&M to grad school at Stanford, and virus 3 would come with him. but it was meant as a perfect asymptomatic virus. It spread in complete silence. It can be found by checking a very specific location on disk, but that's it. There's no way of knowing if your Apple II floppies are infected with the virus, unless you know exactly where to look. As far as stories go, this is a pretty fun one, right? A virus is invented and refined.
Starting point is 00:22:36 It's made to be completely covert. It's so stealthy, in fact, that it's a very fun. it even disappears from its creators. You gotta love that kind of stuff. This also fits nicely into the older pattern of viruses and hacks. Dellinger went to great pains to make sure that his viruses were non-damaging. It's 100% intended as an experiment, as a way to see if this evolutionary code thing was even possible.
Starting point is 00:23:04 There's no ill-will here, just curiosity and good, clean fun. You can see the same pattern show up in viruses like Elk Cloner or The Creeper. I mean, you can even see a similar ethos at play with the MetLife Weather Service hack we talked about earlier. It's a very different approach to computer mayhem that comes out of a very different time. When Delinger sits down to write Virus 1, there are no laws on the books for prosecuting computer crime. Security isn't entirely an afterthought, but there isn't all that much.
Starting point is 00:23:38 thought paid to it? Then our final question, were Dellinger's viruses real? Should we believe his story? This is one where we have no corroboration. And believe me, I've been looking around for period references to viral outbreaks. There just isn't anything out there to back up Delinger's story. The details, however, make some sort of sense. I choose to believe that these viruses were real, but you may disagree. The only way to settle that argument would be to find evidence of the virus in the wild. Luckily, Dellinger tells us how. The virus left a signature, its generation counter.
Starting point is 00:24:24 If you have an Apple DOS 3.3 disk, boot it up and look at memory location B6E8. You may see the markers of virus three. It's the word gin, GEN, followed by a seven-digitig. number, and then TAMU for Texas A&M University. Try it for yourself. I'd love to hear if you find the virus hiding your own floppy disks. All right, that brings today's tale to an end. That also brings Spook Month 2025 to its conclusion. Is there a lesson here to learn? Maybe a moral to all these digital ghost stories? Actually, this year I think I've accidentally fallen into a bit of a theme. If you're going to program or work on computers, which I don't always recommend,
Starting point is 00:25:19 then make sure you stick to the documentation. Don't use illegal op codes, don't use random chunks of seemingly free memory, and don't use some weird out-of-band way to send data back and forth. Conversely, if you're on the other side of the equation, designing things for programmers to use, then assume your users are going to do something unexpected. A mistake or oversight can easily lead to a security hole, or just to something strange. Well, that's it for me. I hope you all have a happy Halloween.
Starting point is 00:25:56 I'll see you in two weeks with a normal episode of Advent of Computing. As always, thanks for listening. You can find links to everything at advent ofcomputing.com, and I hope you have a great rest of your day.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.