hacke
bsp; Empezaremos por
contaminar archivos com, ¿que qu&eacut
e; diferencia hay
entre archivos com y exe?
pues fácil, si os habéis fijado
los archivos
com ocupan como máximo
65 kbytes y pico. ¿qué porque e
s así? , pues porque
los com se carga
n en un único segmento de memoria. Y n
o me vengáis
diciendo que el command.
com del windows 95 tiene más porque au
nque tieneextensión com es un archiv
o exe (es un exe camuflado je,je,je ;) )
Los
exe's utilizan un cabezera con informaci&oac
ute;n acerca del tamaño del
archivo,l
a posición inicial para empezar a ejec
utar el file la posición
del stack y
demás choradas necesárias para
cargarlo en varios segmentos
de memoria.El i
nicio de dicha cabecera es MZ ¿que por
que esa marca?
,yo que sé ,yo no creé la estructura de los exe's, de alguna
manera los
tenían que marcar.
; Bueno la verdad es que lo
que realmente diferencia un
exe de un com e
s esa marca , la extensión simplemente
sirve para que
el DOS sepa que ejecutar pri
mero com->exe->bat.
El virus que vamos a hac
er no será residente por l
o que
es bastante sencillo .Contamina&
nbsp; en un único directoriopor lo q
ue además de ser sencillo tendrá
; una infección practicamente
pat&eac
ute;tica. Pero bueno es pa ke entendái
s el rollo este de los com.
La contaminaci&o
acute;n de los com's se puede hacer añ
adiendo el código del
virus al princi
pio del hoste(programa infectado) pero no es
recomendable
por cuestiones de rapidez, por
lo que lo bonito es quitar los 3 primeros
by
tes delarchivo (guardarlos en el códi
go del virus) poner en su lugar
un jmp virus
(es decir un salto incodicional al có
digo del virus, que
lo añadimos
al final del hoste).Cuando acaba la ejecuci&
oacute;n del virus los
3 bytes que hab&iacut
e;as guardado los restauramos al principio de
l virus y
le pasamos el control al hoste. Fa
cil noooo???
; -----------------
| jmp virus
|
; -------
----------
&nb
sp; | codigo del
; |
&nbs
p; | hoste
; |
&
nbsp; -----------------
&n
bsp;
; | virus:
; |
&nbs
p; | contamina &
nbsp; |
| recupera los
|
; | 3 bytes &nbs
p; |
&nb
sp; | originale
s y |
&n
bsp; |jmp hoste
; |
&nbs
p; -----------------
Ahora que sabemos la teor&iac
ute;a , tenemos que buscar una manera
de marcar los archivos para no volverl
os a contaminar infinitas veces.
; Como vamos a tener que poner un jmp al prin
cipio del hoste , pues
este pro
pio jmp funcioná de marca de inf
ección. El virus infectará
;
a los archivos que no empiecen con un jmp.El código del jmp ocupa&n
bsp;
1 byte y la direcció
;n a saltar con un byte ocupa 2 bytes
1 byte del jmp + 2 bytes direcci&oacut
e;n = 3 bytes (lo que pillamos del hoste)
Otra cosa. Al programar un virus
lo que se hace normalmente es crear
&
nbsp; un archivo contaminado, en este caso nu
estro hoste contaminado
contend
rá un jmp start (salto alprincipio de
l virus) y la int 20h
para regr
esar al dos.
longitud &
nbsp; equ
fin-start
c
ode
segment 'code'
&nbs
p; &
nbsp; ass
ume cs:code,ds:code,es:code
&nbs
p; &
nbsp; org
100h &nbs
p; &
nbsp; &nbs
p; ;empiezo en 100 ya que es un com
hoste:&n
bsp;
; jmp start&nbs
p; &nbs
p; ;esto es un hoste simulado
&n
bsp;
; i
nt 20h &nb
sp;
&nb
sp; ;con esto salgo al DOS
start
: &n
bsp; push bp
&
nbsp; &nbs
p; call&n
bsp; alli
&nb
sp;
; busco la ip de inicio
alli: &n
bsp;
; pop bp &
nbsp; &nbs
p; &
nbsp; ; para que la v
ariables no
&n...
Regístrate para leer el documento completo.