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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C]-[AYUDA] Encontrar una sección en ejecutable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C]-[AYUDA] Encontrar una sección en ejecutable  (Leído 2,326 veces)
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
[C]-[AYUDA] Encontrar una sección en ejecutable
« en: 18 Febrero 2013, 20:05 pm »

Hola a todo el mundo!. Estoy programando... una cosilla... en C, pero tengo un problema; Explico:
Yo tengo un ejecutable, suponiendo con este codigo:
Código
  1. unsigned char string[255] = {0xef, 0xbe, 0xad, 0xde} // 0xdeadbeed
Y ahora tengo otro ejecutable con el siguiente codigo:
Código
  1. while (1) {
  2.      if (read(archivo_fd, (void *) &numero_magico, 4) <= 3) break;
  3.      if (numero_magico == 0xdeadbeef) goto ir_a_seccion;
  4.      lseek(archivo_fd, 3, SEEK_CUR);
  5.      printf("Numero magico (actual): %lx\n", numero_magico);
  6.  }

El problema está, antes de nada, el código de antes está en crear un archivo ejecutable y con otro ejecutable abrir el archivo y buscar el contenido de numero magico (0xdeadbeef) para sustituir de ahí en adelante por una cadena. El problema se encuentra en que no me encuentra el número mágico... alguien podría ayudar. Gracias


En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C]-[AYUDA] Encontrar una sección en ejecutable
« Respuesta #1 en: 19 Febrero 2013, 16:19 pm »

Por el contexto supongo que es un ejecutable en formato ELF no? De todas formas piensa que si lees de cuatro en cuatro y la cadena no esta situada en un offset alineado a 4 en el archivo es normal que no la encuentres.

Código
  1. lseek(archivo_fd, 3, SEEK_CUR);

Y si encima luego mueves el puntero de lectura 3 bytes mas adelante cada vez...

No se como quieres encontrar el numero magico, o que suposiciones estas haciendo.

¿Que es lo que quieres hacer?


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
Re: [C]-[AYUDA] Encontrar una sección en ejecutable
« Respuesta #2 en: 19 Febrero 2013, 17:24 pm »

Si es un ejecutable en formato ELF, pero eso no tiene nada que ver con el proposito a llevar (no esque este buscando el numero magico de los archivos ELF... xD)
Haber leo de 4 en 4 en cuatro porque se supone que que los datos estan almacenados como:
Código
  1. unsigned char string[260] = {..., ..., ..., ...}
entonces ahí se supone que la forma de encontrarmelos es como se colocan, en una longitud de 4 bytes. Luego si muevo el puntero para buscar los siguientes 4 bytes de archivo y ver si coinciden con el codigo magico (0xdeadbeef).
La verdad esque no se bien como hacer esto, asi que necesito ayuda. Para aclarar, exactamente lo que quiero hacer es:
En un ejecutable tengo un 'numero magico' que esta guardado en la sección de datos del programa (reservados 260, menos 4 del numero magico, lo que me hacen poder meter hasta una cadena de 255chr + '\0'). Con otro ejecutable busco ese numero magico y empiezo a sustituir a partir de ahí (hasta un maximo de  255chr).

Alguna ayudita? Gracias
En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C]-[AYUDA] Encontrar una sección en ejecutable
« Respuesta #3 en: 19 Febrero 2013, 19:49 pm »

Prueba a cambiar el 3 que le pasas a lseek() por un -3, para que lea 4 bytes, compruebe si son el numero magico, reste 3 al puntero de lectura (es decir pase al siguiente byte) y vuelva a iterar.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
Re: [C]-[AYUDA] Encontrar una sección en ejecutable
« Respuesta #4 en: 21 Febrero 2013, 20:35 pm »

Nada eso lo probe ya antes, pero no funciona. Que podria hacer...
En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C]-[AYUDA] Encontrar una sección en ejecutable
« Respuesta #5 en: 21 Febrero 2013, 20:51 pm »

mmap()'ealo, ve recorriendo la zona de memoria en la que esta el mapping y ve comparando el byte en el que estes y los 3 siguientes con tu numero magico. Quiza sea cosa del orden de los bytes, los has puesto como little endian, prueba a cambiarlo.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con un ejecutable
Ingeniería Inversa
Johan 0 1,770 Último mensaje 18 Agosto 2004, 01:17 am
por Johan
Ayuda con una archivo ejecutable
Ingeniería Inversa
Incubo 1 1,853 Último mensaje 31 Agosto 2004, 13:41 pm
por databelious
Intento de agregar sección a ejecutable
Análisis y Diseño de Malware
fary 6 4,332 Último mensaje 7 Octubre 2011, 17:59 pm
por The Swash
Como encontrar un corto en una sección horizontal de un
Electrónica
galo1963 1 2,470 Último mensaje 5 Enero 2012, 21:57 pm
por simorg
Ayuda desempacando un ejecutable!!!
Ingeniería Inversa
perfect18 4 3,305 Último mensaje 23 Octubre 2012, 04:51 am
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines