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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿es posible leer la direccion virtual de una sección?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿es posible leer la direccion virtual de una sección?  (Leído 3,288 veces)
4v1dy4

Desconectado Desconectado

Mensajes: 139



Ver Perfil
¿es posible leer la direccion virtual de una sección?
« en: 7 Enero 2023, 15:32 pm »

Basicamente eso...

Lo unico que se me ocurre es:

Código
  1. void *start __attribute__((section( /* nombre de la sección */ ))) = (void *) 0;
  2.  

El problema es que start solo apunta a la direccion de la sección cuando el linker lo enlaza al principio y eso creo que solo sucede cuando creas una nueva funcion (o sea, no podrias hacerlo con .idata o .text).

¿Alguien sabe como hacer esto?

PD: Preferiblemente sin utilizar APIs. El lenguaje C deberia darte alguna forma de hacerlo.


En línea

fary


Desconectado Desconectado

Mensajes: 1.084



Ver Perfil WWW
Re: ¿es posible leer la direccion virtual de una sección?
« Respuesta #1 en: 9 Enero 2023, 17:24 pm »

https://foro.elhacker.net/windows/documentoformato_pe_bajo_windows_espanol-t332157.0.html

Mirate el formato PE.


En línea

Un byte a la izquierda.
4v1dy4

Desconectado Desconectado

Mensajes: 139



Ver Perfil
Re: ¿es posible leer la direccion virtual de una sección?
« Respuesta #2 en: 9 Enero 2023, 18:18 pm »

Hola fary, ante nada gracias por contestarme.

Por desgracia no puedo abrir el archivo que compartio el compañero cuyo tema citaste.

De igual forma veo que me indicas referencias al formato PE.

PE es de Microsoft... Pero las secciones son un concepto universal de los archivos ejecutables modernos, y todos los compiladores lo entienden.

Creo que no entendiste a lo que me refiero, lo que me gustaria saber es si existe alguna forma (a traves del compilador de C, GCC, especificamente) de tener acceso a la direccion relativa de una sección del ejecutable desde el mismo lenguaje.

Como indicaba yo:

Código
  1. void *start __attribute__((section( /* nombre de la sección */ ))) = (void *) 0;

Esta linea te permite obtener tal cosa SOLO si la sección en "nombre de la sección" es nueva. No se puede hacer con .text, .idata, etcetera.

Esto se puede hacer en ensamblador facilmente, y como el lenguaje C y asm tienen tan estrecha relacion...
En línea

RayR

Desconectado Desconectado

Mensajes: 243


Ver Perfil
Re: ¿es posible leer la direccion virtual de una sección?
« Respuesta #3 en: 9 Enero 2023, 19:56 pm »

C no da ninguna forma de hacerlo. Dado que es un lenguaje pensado para ser extremadamente portable y correr en prácticamente cualquier tipo de hardware, ni siquiera tiene concepto de secciones (ni de pilas ni de otras muchas cosas que aunque pueden parecer universales, no necesariamente lo son en algunas arquitecturas, o en sistemas embebidos).

Los compiladores sí que pueden añadir ciertas capacidades como la que tú pusiste, pero eso es cosa de GCC, no del lenguaje. El propio GCC, al menos en Linux declara los símbolos etext, edata y end, pero estos indican el final de las secciones, así que no sé si te sirvan de alguna manera.

Windows proporciona APIs (aunque no son estándar de C, sí lo son de Windows, por lo que son accesibles desde cualquier compilador para este SO) que facilitan mucho este trabajo, pero sólo para ejecutables PE.

Si forzosamente lo necesitas para ELF y sin usar APIs externas, creo que lo único que queda es leerte la especificación de ese formato y programar de cero la solución.
En línea

4v1dy4

Desconectado Desconectado

Mensajes: 139



Ver Perfil
Re: ¿es posible leer la direccion virtual de una sección?
« Respuesta #4 en: 9 Enero 2023, 23:46 pm »

Demonios 🤠

Pues tocara seguir hurgando entre depuradores.

Gracias por tu respuesta.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer direccion que hay en la posicion 3C con el editor hex
Análisis y Diseño de Malware
soez 1 2,575 Último mensaje 7 Agosto 2010, 23:34 pm
por [L]ord [R]NA
Direccion sección « 1 2 3 »
Análisis y Diseño de Malware
soez 21 10,488 Último mensaje 16 Agosto 2010, 23:58 pm
por bizco
obtener direccion virtual correcta
ASM
beguiner 2 3,560 Último mensaje 20 Enero 2011, 12:53 pm
por beguiner
posible sección empleo en el foro elhacker
Sugerencias y dudas sobre el Foro
miguellopez 1 3,609 Último mensaje 6 Febrero 2012, 18:16 pm
por el-brujo
¿Ya no es posible modificar respuestas en la sección de noticias?
Sugerencias y dudas sobre el Foro
crazykenny 7 4,551 Último mensaje 4 Febrero 2015, 10:51 am
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines