¿Existe alguna herramienta que pueda disfrazar un lenguaje de programación?
Solución:
1. Añadir instrucción floral. Puede modificar la dirección de entrada de su software a través de software como OD y simplemente agregar el comando de flor. Las siguientes son instrucciones de flores que se buscan comúnmente. Las copiadas directamente pueden tener duplicados. Puede probarlo si no es suficiente o es inexacto, también puede buscar lo siguiente usted mismo. Por supuesto, también puede escribirlo si puede ensamblarlo.
1. Disfrazar código vc++5.0:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 111111 -\___
PUSH 111111 -/ En este código, operandos como este se pueden completar aleatoriamente
MOV EAX,DWORD PTR FS:[0] < / p>
PUSH EAX
MOV DWORD PTR FS:[0],ESP
AÑADIR ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
nop
dirección de entrada original jmp
*********** * ************************************************* ** ************
2. Código de salto aleatorio:
push ebp
mov ebp,esp
inc ecx
push edx
AÑADIR ESP,-6C
nop
pop edx
dec ecx
pop ebp
AÑADIR ESP,6C
inc ecx
bucle en algún lugar/salte a la dirección del código anterior.
en algún lugar:
nop / El comienzo de un salto "aleatorio"...
jmp La dirección del siguiente jmp / salto a voluntad cercano p>
jmp ... /...
jmp dirección de entrada original/saltar al oep original
*************** ** ************************************************* *** ******
3. Disfrazar código c++:
push eax
mov ebp,esp
push -1
empujar 111111
empujar 111111
mov eax,fs:[0]
empujar eax
mov fs :[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
p>pop eax
pop eax
mov ebp,eax
nop
nop p>
dirección de entrada original jmp
************************************ ******** **********************************
4. Disfrazar código de Microsoft Visual C++ 6.0:
PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[ 0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,1
PUSH EBX p>
PUSH ESI
PUSH EDI
POP EAX
POP EAX
nop
POP
EAX
nop
AÑADIR ESP,1
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
nop
POP EAX
nop
POP EAX
nop
POP EAX
p> p>MOV EBP,EAX
Dirección de entrada original JMP
********************* ********* ******************************************* ********
5. Disfraz anti-muerte Elf No. 1 código anti-muerte:
push ebp
mov ebp,esp
presione -1
presione ebp
presione -1
p>
presione 666666
push 888888
mov eax,dword ptr fs:[0]
nop
mov dword ptr fs:[0],esp
nop
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp dirección de entrada original
** *************** ************************************* ************* *******
6. Disfraz de elfo anti-muerte No. 2 código anti-muerte:
push ebp
p>mov ebp, esp
push -1
push 0
push 0
mov eax,dword ptr fs :[0]
empujar eax
mov dword ptr fs:[0],esp
sub esp,68
empujar ebx
empujar esi
push edi
pop eax
pop eax
pop eax
añadir esp,68 p>
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp dirección de entrada original
*** ******** ******************************************* ******* ************
7. Disfrazar caballo de Troya con ropas coloridas (Túnica de resurrección infinita) Código:
PUSH EBP
p>MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ En este código se ve así Los operandos se pueden completar en aleatoriamente
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
p>
AÑADIR ESP,-6C
PUSH EBX
PUSH ESI
PUSH
EDI
AÑADIR BYTE PTR DS:[EAX],AL /¡Esta instrucción no es obligatoria
jo dirección de entrada original
jno dirección de entrada original
llamar a la siguiente dirección
************************************ ****************************************
8. Ropa colorida de caballo (capa Xiami) código:
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
bucle en algún lugar / salte a la dirección del código a continuación.
en algún lugar:
nop / El comienzo de un salto "aleatorio"...
jmp La dirección del siguiente jmp / salto a voluntad cercano p>
jmp ... /...
jmp La dirección de la entrada original/salto al oep original
********** ****** ********************************************** ******* *******
9. Disfrazar Huahua Adder (Mito) Código: -----------Modificado basado en C++
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0] ,especialmente
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
p>pop eax
mov ebp,eax
mov eax, dirección de entrada original
push eax
retn
p>
********************************* ******************* ****************************
10. Disfrazar código de sumador Huahua (Promesa):
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs: [0], eax
pop eax
pop eax
pop eax
pop eax
pop eax
p>pop eax
mov ebp , eax
mov eax, dirección de entrada original
jmp eax
*** ********************** ******************************* ********************** **
*
11. Código disfrazado de Huahua Adder (King Kong): -------- modificado según VC++5.0
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs : [0]
empujar eax
mov fs:[0], esp
añadir esp, -6C
empujar ebx
p>
push esi
push edi
añadir [eax], al
mov eax, dirección de entrada original p>
jmp eax
************************************ ****** *******************************
12. Disfraz de víbora Huahua (Shapolang). ) Código:
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
añadir esp, 68
pop eax
mov fs:[0], eax
pop eax
p>pop eax
pop eax
pop eax
mov ebp, eax
mov eax, dirección de entrada original
jmp eax
************************************ ******* **********************************
12. Víbora de flores (Rey Mono enamorado) )Código:
nop
..........Omita N líneas de nop
nop p>
empujar ebp
mov ebp, esp
añadir esp, -0C
añadir esp, 0C
mov eax , dirección de entrada original
push eax
retn
************************ ******** **************************************** p>
13 .Disfrazar Huahua Adder (si *amor) código:
nop
.....omitir N líneas de nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, dirección de entrada original
jmp eax
************************************
******************************************
14 Disfraz PEtite 2.2 -> Código de Ian Luck:
mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx p>
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
dirección de entrada original jmp' ejecutar en el OEP original del programa
*************************** ******** *******************************************
15. Código de archivo PE no válido:
push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
MOV DWORD PTR FS:[0],EAX \
POP EAX
POP EAX \
MOV DWORD PTR FS:[0],EAX | | (Atención...
Comando flor)
POP EAX /
POP EAX
MOV DWORD PTR FS:[0],EAX /
bucle original Dirección de entrada
****************************************** ** *******************************
16. El código anti-muerte definitivo del anti disfrazado. -kill asistente:
empujar ebp
mov ebp,esp
añadir esp,-0C
añadir esp,0C
push eax
jmp dirección de entrada original
*************************** ********** **************************************** ***
17. Código de flor troyano camuflaje Caiyi (brocado de pez dorado)
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,dirección de entrada original
push eax
retn
************ ************************************* *************** *************
18
Agregar
<. p después de mov ebp,eax>PUSH EAX
POP EAX
****************** ******************* ********************************** ***********
19. Código de instrucción de disfraz de flor UPX:
pushad
mov esi,m.0044D000
lea edi,dword ptr ds:[esi+FFFB4000]
push edi
o ebp,FFFFFFFF
jmp short m.00477F2A p>
********************************************* ************************ *******
20
empuje mib <. /p>
mov ebp,esp
inc ecx
push edx
pop edx
dec ecx
pop ebp
inc ecx
entrada original jmp
21
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
dirección del bucle A1
nop
nop
p>A1: push ebp
mov ebp,esp
jo entrada original
jno entrada original
*** ************************* ******
***************************************
Biblioteca WCRT de disfraz profundo (Visual C++) DLL Método 1 -> Jibz
Código Heiba + código ensamblador:
Utilice Heiba para pegar el siguiente código:
55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59
Después de pegar, agregue 2 líneas de declaraciones de ensamblaje:
entrada original jmp dirección de ejecución Al OEP original del programa
retn 0C
************************ ****** ********************************************** *
Emitir varias instrucciones de flores inusuales
B1 01 mov cl,1
2C 90 sub al,90
95 xchg eax, ebp
4D dec ebp
65:42 inc edx
40 inc eax
20C4 y ah,al
8350 06 6E adc dword ptr ds:[eax+6],6E
226A E4 y ch,byte ptr ds:[edx-1C]
E8 B15FBC5B punto de entrada de llamada
55 empuje ebp
8BEC mov ebp,esp
51 empuje ecx
53 empuje ebx
8BD8 mov ebx,eax
8BC3 mov eax,ebx
04 9F add al,9F
2C 1A sub al,1A
73 03 punto de entrada jnb
JMP SHORT test.00414FB5 (EB 01)
NOP
JMP SHORT test.00414FB8 (EB 01)
NOP
NOP
Prueba JMP CORTO.00414FB8 (EB 01)
NOP
p>
Prueba JMP CORTO. 00414FBB (EB 01)
NOP
Prueba JMP (EB 01)
90=c4
PUSH EBP
MOVER EBP,ESP
inc ecx
push eax
pop eax
push edx
pop edx
dec ecx
sub eax,-2
AÑADIR ESP,68
DEC eax
DEC eax
SUB ESP,68
Portal JPE
Portal JPO
2008-6-13 11:30 dazy
Colección comando flores (0608)
Camuflaje profundo PETite 2.2 ->
; Código ensamblador de Ian Luck:
============================
Código disfrazado Parte:
============================
mov eax,0040E000 p> p>
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp XXXXXXXX 'Ejecutar al OEP original del programa
== ==========================
Biblioteca WCRT de disfraz profundo (Visual C++) DLL Método 1 -> Jibz código binario + código ensamblador:
=============================
parte del código de disfraz :
============================
Pegue el siguiente código usando binario:
55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 8 5 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59
Después de pegar, agregue 2 líneas más de declaraciones ensambladas:
jmp XXXXXXXX 'Ejecutar al OEP original del programa
retn 0C
1. Disguise vc
Código de entrada del programa VC++:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ En este código, operandos como este se pueden completar aleatoriamente
MOV EAX,DWORD PTR FS:[0]
p>PUSH EAX
MOV DWORD PTR FS:[0],ESP
AÑADIR ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
AÑADIR BYTE PTR DS:[EAX],AL /Esta instrucción no es necesaria
jmp ¡Saltar al original! programa Punto de entrada
****************************************** ** ************************************************* ***
2.
Saltar
en algún lugar:
nop / El comienzo de un salto "aleatorio"...
jmp La dirección del siguiente jmp / salto cercano a voluntad
p>
jmp ... /...
jmp La dirección de la entrada original/salto al oep original
<<<< <<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Nueva entrada : push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
bucle en algún lugar / salte a la dirección del código anterior.
3. Disguise C
Fusion
Reemplace el código de A con
push ebp
mov ebp de B, esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp Entrada antigua
4.c++
empujar ebp
mov ebp,esp
empujar -1
empujar 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0], esp p>
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
5.Microsoft Visual C++ 6.0
PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0 ],ESP
SUB ESP,68
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
POP EAX
AÑADIR ESP,68
POP EAX
MOV DWORD PTR FS: [0],EAX
POP EAX
POP EAX
POP EAX
POP EAX
>MOV EBP,EAX
Entrada original JMP
6
Agregar
después de mov ebp,eax
POP EAX
7:
Anti-kill Elf No. 1 código anti-kill:
push ebp
p>mov ebp,esp
push -1
push 666666
push 888888
mov eax, dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs :[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
entrada jmp
8:
Anti-kill Elf No. 2 código anti-kill:
empujar ebp
mov ebp,esp
empujar -1
empujar 0
empujar 0
mov eax ,dword ptr fs:[ 0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
p>
push esi
push edi
pop eax
pop eax
pop eax
agregar esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
p>
pop eax
pop eax
mov ebp,eax
entrada jmp
9.
Código anti-muerte definitivo del asistente anti-muerte
push ebp
mov ebp,esp
añadir esp,-0C
añadir esp ,0C
empujar eax
entrada jmp
10:
Código de flor troyano Caiyi (ropa de brocado de pez dorado)
push ebp
mov ebp,esp
añadir esp,-0C
añadir esp,0C
mov eax,entrada original
push eax
retn
11:
Código de flor troyano Caiyi (capa de camarón)
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loopd /¡Salte a la dirección del código a continuación!
<<<<<<<<<<<<<<<<<<<&
lt;<<<<<<<<<<<<<<<<<<<<<<<<
nop /El comienzo del salto "aleatorio"... p >
jmp La dirección del siguiente jmp/salto cercano
jmp... /...
jmp La dirección de la entrada/salto original al oep original < / p>
12.
Código VC++5.0 (túnica de resurrección ilimitada del troyano Caiyi):
PUSH EBP
MOV EBP,ESP
p>
p>
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ En este código, operandos como este se pueden completar aleatoriamente p>
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
AÑADIR ESP ,-6C
PUSH EBX
PUSH ESI
PUSH EDI
AÑADIR BYTE PTR DS:[EAX],AL /Esta instrucción es opcional
jo 00401000 /entrada original
jno 00401000 /entrada original
db 0e8h /花码
xxxxxx: nop \
/|\ POP EAX |Mira, estas dos partes son en realidad instrucciones de flores
| POP EAX | >| JMP yyyyyy (regresar al punto de entrada anterior: 00100016DB)
|
| push ebp <- Nuevo punto de entrada:
| mov ebp,esp
| inc ecx
| empujar edx
| >
| dec ecx
| pop ebp
| inc ecx
|
| POP EAX |
| POP EAX \
| MOV DWORD PTR FS:[0],EAX |
Comando de flor)
| POP EAX /
| POP EAX
| >| loop xxxxxx (Aquí salto hacia arriba~La dirección también la elijo yo mismo~~)
|_______________++++++(Ir a la dirección: 100036c3 y retroceder)
------------------------------------------------ -- ------------
El código es el siguiente: Mito
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax ,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs: [0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp , eax
mov eax, entrada original
push eax
retn
El código es el siguiente: Promesa
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs :[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0] , eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, entrada original
jmp eax
El código es el siguiente: King Kong
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8 p>
mov eax, fs:[0 ]
push eax
mov fs:[0], esp
añadir esp, -6C
push ebx
push esi
push edi
añadir [eax], al
mov eax, original entrada
jmp eax
jmp eax
p>
El código es el siguiente: shapolang
nop
mov ebp, esp
push -1
push 0
p>
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
anuncio
d esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, entrada original
jmp eax
El código es el siguiente: Rey Mono Enamorado
nop
nop
nop
nop
no
no
no
no
no
no
no
nop
nop
nop
nop
nop
empujar ebp
mov ebp, esp
añadir esp, -0C
añadir esp, 0C
mov eax, entrada original
push eax
retn
El código es el siguiente: if*love
nop
nop
no
no
no
no
no
no
no
no
no
no
no
no
no p>
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, entrada original
jmp eax
---------------------------------- ------ ----------------
Paquete de archivos universal Grey Pigeon VIP2005 -> Ge Jun*
push ebp
mov ebp,esp
añadir esp,-124
push ebx
push esi
push edi
xor eax,eax
mov dword ptr ss:[ebp-124],eax
entrada jmp
----- ----- --------------------------------------------- p>
PUSH EBP
MOV EBP,ESP
MOV EAX,0
PUSH EAX
LLAMADA al siguiente comando ↓
POP EAX
SUB EAX,0
MOV ECX,0
MOV EDX,0
MOV ESI,0
MOV EDI,0
MOV EBP,0
AÑADIR EBP,EAX
POP EAX
POP EAX
POP EAX
POP EAX
POP EBP
Entrada PUSH
Haga clic en
RETN
--------------------------------- -------------------------------
//Borland Delphi 6.0 - 7.0
PUSH EBP
MOV EBP,ESP
MOV ECX,6
PUSH 0 El de abajo salta aquí
PUSH 0
p>DEC ECX
JNZ Saltar atrás
PUSH EBX
PUSH ESI
PUSH EDI
POP EDI
POP ESI
POP EBX
Punto de entrada JMP
--------- -------------------------------------------------- -- ----
push ebp
mov ebp,esp
inc edx
nop
pop edx
dec ecx
pop ebp
inc ecx
punto de entrada jmp
---- -------------------------------------------------- -- ---------
empujar ebp
mov ebp,esp
empujar ebx
mov ebx, dword ptr ss:[ebp+8]
push esi
mov esi,dword ptr ss:[ebp+C]
push edi
mov edi,dword ptr ss:[ebp+10]
prueba esi,esi
entrada jmp
-------- -------------------------------------------------- -- -----
0046D4BA pop eax
0046D4BB sub eax,7D
0046D4C0 push eax
0046D4C1 C3 retn
0046D4C2 llamada 0046D4BA
---------------------------------- ------ -------------------------------
Disfraz VC7 0 flores
Recientemente atrapado haciéndose pasar por VC7.
0 flores, muy cortas
//--------------------------------- p >
presione 70
presione 123456 (cualquier número)
llame a (A es la dirección)
xor ebx,ebx
Una dirección: retn
2008-6-13 11:30 dazy
1.POP 0
POP 0
2 .PUSH ebp
pop ebp
3.nop ---- Generalmente insertado en el medio
4.jmp Verifique la dirección de jmp
jmp...
5.add esp,1 ----El número se puede cambiar
sub esp,1
6. esp,1
añadir esp,-1
7.sub esp,1
sub esp,-1
8.push esi
push edi
9.inc ecx
dec ecx
10 sub eax,-2
dec eax
dec eax
p>
dec eax
11. (Este comando es clásico, comprimido, ejecutable y libre de KABA)
push ebp
mov ebp, esp
pop esp
jmp Dirección del punto de entrada original -
jmp XXXXXX es equivalente a:
PUSH XXXXXX
RETN
12 Comando de flor para evitar matar a Kabbah:
push ebx
.empujar ebx
empujar ebx
pop ebx
pop ebx
pop ebx
saltar jmp a la siguiente dirección
añadir esp,1
añadir esp,-1
dirección del punto de entrada push
retn
******************
p>
12 (Igual que arriba)
empuje ebp
push esp
pop ebp
pop esp
dirección del punto de entrada original jmp
13. -comando de eliminación:
push ebp
push esp
pop ebp
añadir esp,-0C
agregar esp,0C
push eax
entrada jmp
14. Comando libre de matar flores
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
mov eax, dirección de entrada
jmp eax
nop
15.
jmp se cambia a: Jg (mayor que la transferencia), JL (menor que la transferencia). )
o cambiado a: jb (menor que transferir), jnb (mayor o igual que transferir)
16. No use jmp directamente para saltar después de escribir el comando kabahua , de lo contrario, te matarán directamente
jmp --- matarán directamente
Cambiado a
jb
jnb
O cambiar a:
dirección de entrada push
retn
>O cámbielo a:
mov eax, dirección de entrada
jmp eax
17. Un comando de flor para evitar matar a Kabbah:
empujar ebx
empujar ebx
pop ebx
pop ebx
añadir esp,1
añadir esp , -1
dirección de entrada push
retn
Dos. Puede utilizar una herramienta de embalaje para evitar que otros reconozcan lo que utilizó para escribirlo. Las herramientas de empaquetado se dividen en shells de compresión y shells cifrados. No los enumeraré más.
Nota: Algunas personas crean caballos de Troya o virus añadiendo flores o conchas para evitar matarlos. Por lo tanto, algunos programas antivirus los considerarán caballos de Troya o virus.