elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Inyectando codigo en espacios vacios de programas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Inyectando codigo en espacios vacios de programas  (Leído 3,522 veces)
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Inyectando codigo en espacios vacios de programas
« en: 6 Mayo 2006, 23:18 pm »

Weno, una par de dudas que se me vienen a la cabeza....

Hace tiempo lei que hay virus que lo que hacen para inyectarse en otros procesos es okupar sus espacion vacios kon su kodigo.....para hacer eso hay que usar alguna API ene special??? alomejor se tendria que buskar lso espacios vacios y leugo kalkular el tamaño de este espacio e ir copiandose en el espacio...trozo a trozo....Pero ahora tengo otra duda...komo se va a ejekutar si pro ejemplo el PE del virus esta por enmedio del cuerpo del archivo origen??? :-\ :-\ :-\

Mi ultima duda...si eso fuera posible...se podria por ejemplo inyectar kode en .jpg??? puesto que no veo ninguna diferencia infectar a un .exe....y que este mismo "te ejekute" a ti mismo....que un .jpg....puesto que el PE del worm no influye en la ejekucin del archcivo origen...o si????

Weno, respondenme si no se an perdido por la explikacion de mi pregunta...xD xD xD

Salu2

Hendrix



En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #1 en: 6 Mayo 2006, 23:31 pm »

Me parece que estas mezclando dos cosas, una la inyeccion de codigo sobre un PROCESO y otra la "incrustacion" de codigo en un PROGRAMA.
En la primera se escribe en el espacio de direcciones de un proceso en ejecucion mientras que en la segunda se escribe en el archivo en disco.

¿Como se ejecuta el codigo incrustado en un archivo ejecutable en disco? Asi rapidamente se me ocurren un par de formas, la mas simple es cambiar el entry point. En el PE hay un campo que indica la direccion de comienzo del ejecutable (entry point), haciendo que la misma apunte al codigo nuevo y que este codigo termina saltando a la direccion original del entry point se consigue ejecutar antes el nuevo codigo y despues el programa de siempre.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #2 en: 6 Mayo 2006, 23:38 pm »

es decir...que esto de modificar el PE solo funcionaria en .exe's....no???? y komo se haria para modificar el PE??? :-\ :-\

Salu2 y gracias por contestar.....

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #3 en: 6 Mayo 2006, 23:43 pm »

es decir...que esto de modificar el PE solo funcionaria en .exe's....no???? y komo se haria para modificar el PE??? :-\ :-\

PE es Portable Executable y se usa para varios tipos de archivos. En NT para codigo objeto (.OBJ), ejecutables (.EXE), librerias (.DLL, .OCX) y drivers (.SYS) entr otros, tanto de 32 como de 64 bits.
Para modificar un PE se necesita lo mismo que para con cualquier otro formato, saber sus especificaciones y modificarlo en modo binario (no texto).
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #4 en: 7 Mayo 2006, 00:12 am »

Weno...pos me puedo conviene que deje este modo de inyeccion...ya que refirigir entry points no es mi fuerte...xD xD xD

Salu2 y gracias... ;) ;)

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Kizar


Desconectado Desconectado

Mensajes: 1.325


kizar_net


Ver Perfil
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #5 en: 7 Mayo 2006, 02:10 am »

Eternal Idol a mi me gustaria k expusieras como encontrar el entry point y como cambiar la direcion a la k apunta.
Se algo de asm y de hex supongo k vendra bien.

PD: No ay ganas de buscar nada...

Salu2
En línea

byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #6 en: 7 Mayo 2006, 02:53 am »

Código:
mov edx,dword [eax+3Ch] 
add edx,eax       
mov edx,dword [edx+28h] 
 

suponiendo que eax=MZ. ahi tienes el entrypoint. desplazamiento 28h respecto a la cabecera PE.

PD: por si no queda claro, cuando digo MZ quiero decir la direccion base donde se mapea el archivo.
« Última modificación: 7 Mayo 2006, 02:59 am por Cara_Webo » En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Inyectando codigo en espacios vacios de programas
« Respuesta #7 en: 7 Mayo 2006, 10:30 am »

Lo vas a poder ver mejor con las estructuras:

IMAGE_DOS_HEADER
IMAGE_NT_HEADERS

0x3C es el offset al campo e_lfanew de la primera estructura, es el que apunta a la nueva cabecera (del PE real). Todo PE tiene un ejecutable de MS-DOS incrustado al inicio, generalmente y por defecto es el que nos dice "This program cannot be run under DOS" o algo asi.

0x28 es el offset al campo AddressOfEntryPoint de la segunda estructura.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con links vacios
Desarrollo Web
mark182 2 2,876 Último mensaje 6 Enero 2011, 03:02 am
por mark182
SETOOLKIT logs vacios
Hacking
4justice 3 5,328 Último mensaje 10 Noviembre 2015, 00:03 am
por while4ever
Como puedo eliminar espacios vacios en un char array?
Programación C/C++
saintmauricioxd 4 6,573 Último mensaje 11 Octubre 2015, 11:20 am
por ivancea96
sustituir espacios vacios en url
Desarrollo Web
Marciano_79 2 3,098 Último mensaje 7 Septiembre 2016, 17:41 pm
por Marciano_79
[Pregunta]: No enviar espacios vacíos
Desarrollo Web
Leguim 3 2,447 Último mensaje 26 Marzo 2019, 04:59 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines