Bomber

From FdIwiki ELP
Jump to: navigation, search
Dwarf
caption
Información general
Dwarf Core War Bomber

Los bomber o bombas lógicas son partes de código que se insertan intencionadamente en programas informáticos para realizar acciones maliciosas. La estrategia básica de los bomber es el uso de bombas de forma aleatoria con la esperanza de aplastar al programa oponente. Esta parte de código permanece oculta hasta cumplirse una o varias condiciones preprogramadas.

Por ejempolo, un programador puede ocultar una pieza de código que comience a borrar ficheros cuando sea despedido de una compañía en un trigger (disparador) que se dispare al cambiar la condición de trabajador activo en la base de datos.

En muchas ocasiones los virus o gusanos contienen bombas lógicas que ejecutan algún programa en un tiempo predefinido.


Código de ejemplo: Dwarf

Dwarf es un guerro simple pero efectivo. Este programa instala bombas de DATs en zonas aleatorias del core mientras garantiza que no se autodestruya.


      ADD #4, 3        ; execution begins here
      MOV 2, @2
      JMP -2
      DAT #0, #0

El funcionamiento es sencillo. La primera instrucción añade al valor almacenado en el DAT de la última instrucción (4), mov copia el dat (bomba) en la posición indicada por el dat (la cual es aumentada en cada iteración por el add anterior), jmp permite que el programa vuelva a la instrucción add (y así repetir en un bucle). DAT es la bomba.

La seguridad (evitar su autodestrucción) se garantiza asegurando que en ningún momento del bucle la bomba afecte a su funcionamiento. Esto se garantiza con la siguiente instrucción:

assert CORESIZE % 4 == 0

Assert garantiza que el número de posiciones totales del Core sea divisible por 4. De no ser así, se reconoce que el guerrero no puede entrar en batalla.

Al ser el Core divisible por 4 se garantiza que la bomba nunca caiga en las tres primeras instrucciones (add, mov, dat). En cada iteración, la cuenta aumenta en 4 por lo que la bomba siempre cae en la posición anterior al ADD y en la posición del DAT.