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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda con getprocadress y kernel32.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda con getprocadress y kernel32.  (Leído 2,417 veces)
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
duda con getprocadress y kernel32.
« en: 4 Febrero 2011, 00:07 am »

hola, estoy intentando conseguir una shellcode basica para windows, y me encuentro con el siguiente problema, que no sé por qué sucede:

Tengo una shellcode que hace algo simple: llama a sleep y sale del proceso.
La cargo mediante una aplicación en c también simple que no hace otra cosa que cargarse y llamar ejecutar la shellcode.

Para obtener las direcciones de las funciones Sleep y ExitProcess lo he hecho mediante un programa en c que llama a getprocadress de esta forma:
GetProcAddress(LoadLibrary("kernel32.dll"),"ExitProcess")

y me devuelve la dirección de ExitProcess y lo mismo con sleep. Lo pongo en la shellcode y todo parece funcionar, pero el problema es que al reiniciar el ordenador GetProcAdress para la misma función me dá un valor distinto. De manera que tengo que obtener dicha dirección cada vez que apago o reinicio la máquina.

Por lo que vengo leyendo no parece muy normal. He visto que el programa sólo funcionaría en mi máquina pero no había visto en ningún sitio que tuviese que actualicar la dirección de las funciones cada vez que reinicio el sistema.

¿es eso normal? El sistema operativo que utilizo es windos7.

un saludo.


En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: duda con getprocadress y kernel32.
« Respuesta #1 en: 4 Febrero 2011, 00:37 am »

Que yo sepa Windows no aletoriza la memoria...
Vamos a ver, y si llamas a GetProcAdress en tu shellcode? Se llaman shellcodes universales.

La direccion solo cambia entre versiones y actualizaciones SP1-SPx. Por eso son shellcodes universales.
Una para Win7 32 Bits Home SP1 ira para todos los Win7 32 Bits Home SP1.

Suerte!


En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: duda con getprocadress y kernel32.
« Respuesta #2 en: 4 Febrero 2011, 04:38 am »

Citar
¿es eso normal? El sistema operativo que utilizo es windos7.

Si, es normal. Al reiniciar el sistema, entra en juego la denominada ASLR (Address space layout randomization).

Citar
La direccion solo cambia entre versiones y actualizaciones SP1-SPx. Por eso son shellcodes universales.
Una para Win7 32 Bits Home SP1 ira para todos los Win7 32 Bits Home SP1.

No necesariamente. Los valores harcodeados podrían no ser validos entre los diferentes sistemas.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
Re: duda con getprocadress y kernel32.
« Respuesta #3 en: 4 Febrero 2011, 12:51 pm »

Que yo sepa Windows no aletoriza la memoria...
Vamos a ver, y si llamas a GetProcAdress en tu shellcode? Se llaman shellcodes universales.

La direccion solo cambia entre versiones y actualizaciones SP1-SPx. Por eso son shellcodes universales.
Una para Win7 32 Bits Home SP1 ira para todos los Win7 32 Bits Home SP1.

Suerte!

no, es que no me he explicado bien, en realidad no llamo a getprocadress desde la shellcode. si así fuera está bien lo que tú dices y sería una shellcode universal, pero lo que yo hago es mucho más simple (ya he puesto en el título que es una shellcode básica). Lo que yo hago es obtener la dirección de la función con getprocadress, pero no desde la shellcode, sino que la obtengo con un programa en c, y luego pongo la dirección (tal cual) en mi shellcode con lo cual es harcodeada a más no poder  ;D

ahora sí que toca lo difícil que sería llamar a getprocadress desde la shellcode que eso ya va a ser más complicado.

un saludo.
« Última modificación: 4 Febrero 2011, 12:53 pm por black_flowers » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema KERNEL32.dll de MakeCriticalSectionGlobal
Juegos y Consolas
Lainuxxx 0 3,311 Último mensaje 29 Julio 2004, 10:23 am
por Lainuxxx
PEB y funciones de kernel32
ASM
Vaagish 5 4,181 Último mensaje 8 Agosto 2013, 19:22 pm
por Vaagish
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines