Cuando era estudiante universitario en la universidad A&M
de Texas (eso fue en 1981) había una activa comunidad de
usuarios de Apple II en mi residencia universitaria
(Shuhmacher) con una increíble cantidad de copias piratas
de juegos. Observé que la mayoría estaban dañados de
diferentes formas, pero casi siempre se podía jugar con
ellos a pesar de eso. (Por ejemplo, había un conocido
juego llamado "Star Trek" en BASIC que ocasionalmente
tenía basura en sentencias que no eran críticas, como REM
y PRINT, los juegos de guerra espacial muy frecuentemente
tenían basura aleatoria que reemplazaba algunos dibujos
de naves, etc.) Decidí que podía explicar esto como una
especie de "evolución".
Para que la evolución se produzca hacen falta mutación
y
selección natural. En realidad, había "mutación"
causada
por gente que intentaba modificar los juegos; lo que es
más importante aún, había computadoras y disquettes
enfermos que deformaban en forma accidental muchas copias
de estos juegos.
La gente seguía utilizando los disquettes de los juegos
hasta que literalmente se desintegraran. Mi Apple II, de
un modelo antiguo, era muy poco confiable y solía
colgarse cada 30 minutos de todo tipo de interesantes
formas. Por lo común unos pocos golpecitos bien dados la
ponían nuevamente en funcionamiento. La "Selección
Natural" entraba en escena con las acciones de los
usuarios de "reproducir" o bien "matar" copias de los
juegos. Por ejemplo, si no se podía jugar con la copia
del juego que uno tenía se intentaba conseguir otra copia
de ese mismo juego reproduciendo esta copia y matando la
otra. Como había espacio limitado para juegos en los
discos, también había una gran competencia entre las
diferentes especies de programas.
Esta idea de programas que habitan una especie de
biosfera de la computadora llevó naturalmente al concepto
de un "Virus de Computadora", como un resultado
accidental probable de dicha evolución. Mis experimentos
comenzaron cuando intenté averiguar cual era el cambio
mínimo que haría al DOS virósico. Pensaba en algo así
como un prion, una especie de proto-virus.
Recuerdo que la respuesta para el DOS 3.3 era de
aproximadamente 16 bytes, que estaba dentro de los
límites de lo que sucedería naturalmente si las
Computadoras Apple II, en manos de gente que copiara
programas de juegos aleatoriamente, existieran durante
algunos millones de años.
El próximo paso lógico era intentar determinar como sería
un programa evolucionariamente óptimo. Obviamente el
programa sería más exitoso si no confiara en la buena
voluntad de los humanos para reproducirse, pero asimismo
no es una buena idea dañar al huésped (o darle a los
humanos una razón para gastar energías intentando matarlo
a uno). Por ello que el virus ideal se extendería por sí
mismo sin causar ningún tipo de daño o "síntoma",
si
pudiese evitarlo.
Traté estas ideas con amigos, muchos de ellos también
usuarios de Computadoras Apple. Hasta ese momento ninguno
de ellos había escuchado lo que era un "virus de
computadora". (Muchos usuarios de Apple que conocía se
burlaban de la idea de que algo así pudiera existir).
Bien, en ese momento crear un virus sonaba como un
proyecto realmente interesante y era un buena excusa para
aprender el lenguaje de máquina del procesador 6502. Por
lo tanto, en nuestro (poco frecuente) tiempo libre, un
grupo de nosotros comenzó a trabajar sobre mi "programa
evolucionariamente óptimo".
Finalizamos nuestro primer intento, la "Versión 1 del
Virus" a comienzos de 1982. El Virus 1 era infeccioso
pero aún causaba síntomas en mi computadora a pesar de
nuestros mejores esfuerzos, por ello que lo dejamos en
estricta cuarentena y continuamos experimentando con él.
Unos meses más tarde terminamos el diseño del Virus 2.
Parecía no causar serios daños, por ello procedí con
el
próximo paso en mis experimentos y lo solté en mis
propios discos. El objetivo era determinar con qué
velocidad dicho programa se diseminaría por mis propios
discos si seguía utilizando mi computadora en forma
normal. Tenía otra buena razón para querer asegurarme de
que el virus era totalmente inocuo. De hecho casi todo el
código del Virus 2 era para verificar diferentes tipos de
situaciones peligrosas: un DOS no convencional, discos no
convencionales, programas que alteran el DOS, etc. En
estos casos los virus o no infectarían o bien se
desconectarían inmediatamente del DOS, y se
"suicidarían".
Los usuarios de Apple II de la Universidad A&M de Texas
estaban muy interesados en mi "investigación", por eso
les di también copias del Virus 2 a varios amigos que
querían jugar con él. La idea del virus de computadoras
se extendió rápidamente; muchos otros comenzaron a
trabajar en los suyos propios propios, "menos aburridos"
(léase dañinos).
Afortunadamente, (por lo que yo supe) se pasaban la mayor
parte del tiempo intentando idear bomas interesantes para
que los virus produjesen síntomas "divertidos", en lugar
de intentar decididamente crear un virus maligno activo.
Al comienzo mantuvimos el Virus 2 cuidadosamente en
cuarentena, pero despues de unos pocos meses de no haber
presentado síntomas dañinos, nos descuidamos y sucedió
lo
inevitable. Supe por primera vez que el Virus 2 se había
escapado por uno de mis amigos de la universidad que se
había graduado y mudado a la universidad UIUC para
continuar sus estudios. Me informó que en ese lugar todas
las copias de un juego llamado "Congo" habían dejado de
funcionar misteriosamente. Cuando la gente quería obtener
una nueva copia que funcionara, se encontraba con que las
copias anteriores, que andaban, ahora dejaban de hacerlo.
Mi amigo se dio cuenta de lo que había sucedido y me
informó acerca de ello. Inmediatamente diseñamos un
programa "inmunizador" y lo distribuimos en UIUC; el
utilitario standard de Apple II "master create" fue
suficiente como desinfectante. Sin embargo, nunca
estuvimos seguros de haber matado todas las copias que se
habían escapado del Virus 2 en UIUC.
Estaba desilusionado porque el Virus 2 era un fracaso, y
comencé a diseñar el Virus 3. Resultó ser que el Virus
2
causaba problemas porque agrandaba el sector 1 del DOS en
256 bytes, ¡una significativa cantidad de memoria!, para
albergar el código extra. Unos pocos programas se
destruirían en forma extraña por esta razón. (La solución
era simplemente bootear desde un disco no infectado y
luego correr los programas).
Entonces, el objetivo para el Virus 3 era que no ocupara
lugar ni en la memoria ni en el disco. Después de pensar
un poco se nos ocurrió una solución: la mayor parte del
núcleo del Virus 3 se alojaba en la memoria no protegida
sobre la que se podía escribir libremente. Una pequeña
rutina oculta y a salvo dentro de agujeros en la tabla de
conversión de lectura-escritura del DOS hacía un triple
control del código sin protección antes de ejecutarlo.
Este código era una verdadera pesadilla; algunos bytes en
la tabla cumplían doble función: como valores de
información críticos para el DOS y como códigos de
operación ejecutables para el virus. El Virus 3 fue un
éxito; nunca nos encontramos con ningún programa cuyo
comportamiento se viera afectado por su presencia.
La peor parte de diseñar un virus de DOS fue que cada vez
que cometía un error, el DOS dejaba de funcionar, y
entonces debía re-ubicar manualmente los bytes que tenía
escritos en folletos de propaganda. Utilizar un
ensamblador no era en absoluto la solución, ya que todo
el proceso constaba de sólo 300 bytes y se desintegraba
en pequeños pedacitos en varios sectores del DOS. Tenía
gran cantidad de JMPs por todos lados, un código de
modificación propia y otras pesadillas similares, todo
esto para hacerlo lo más pequeño posible. Cuanto más
grande era y más expuesto estaba a la memoria, más
trabajo tenía para reproducirse y más posibilidades
existían de que algo inesperado sucediera.
Finalmente, no sé lo que sucedió. Debido a que el Virus
3
de hecho era completamente invisible, luego de un tiempo
perdimos el interés y lo dejamos en el olvido. Nuevamente
intentamos poner el virus en cuarentena pero en el
invierno de 1983, poco después de graduarme y mudarme a
Stanford, un chequeo reveló su existencia en varios
discos de mis amigos, que ellos suponían no estaban
infectados. Sin embargo, en ese momento no creían que
valiese la pena sacarlo, y por eso se expandió sin
control. A esa altura, también en A&M, el interés por
los
virus había desaparecido. Sólo tuve noticias de mi virus
una vez más: durante 1984 mi amigo en UIUC me informó que
un virus maligno estaba atacando computadoras Apple y que
estaba causando mucho daño, inicializando discos
aleatoriamente. Algunos discos tenían una especie de
inmunidad contra el Virus Maligno; sin embargo, cuando
dichos discos estaban infectados por el virus se colgaban
en el momento de bootear (que era mejor que aparentar un
booteo normal y luego causar mayores daños). ¡Resultó
ser
que los discos inmunes eran aquellos que previamente
habían sido infectados por el Virus 3!