Autor
|
Tema: [C]-[AYUDA] Encontrar una sección en ejecutable (Leído 2,655 veces)
|
Miky Gonzalez
Desconectado
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
Hola a todo el mundo!. Estoy programando... una cosilla... en C, pero tengo un problema; Explico: Yo tengo un ejecutable, suponiendo con este codigo: unsigned char string[255] = {0xef, 0xbe, 0xad, 0xde} // 0xdeadbeed
Y ahora tengo otro ejecutable con el siguiente codigo: while (1) { if (read(archivo_fd, (void *) &numero_magico, 4) <= 3) break; if (numero_magico == 0xdeadbeef) goto ir_a_seccion; lseek(archivo_fd, 3, SEEK_CUR); printf("Numero magico (actual): %lx\n", numero_magico ); }
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
Mensajes: 1.077
|
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. 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
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
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: 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
Mensajes: 1.077
|
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
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
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
Mensajes: 1.077
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con un ejecutable
Ingeniería Inversa
|
Johan
|
0
|
1,913
|
18 Agosto 2004, 01:17 am
por Johan
|
|
|
Ayuda con una archivo ejecutable
Ingeniería Inversa
|
Incubo
|
1
|
2,025
|
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,623
|
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,714
|
5 Enero 2012, 21:57 pm
por simorg
|
|
|
Ayuda desempacando un ejecutable!!!
Ingeniería Inversa
|
perfect18
|
4
|
3,679
|
23 Octubre 2012, 04:51 am
por MCKSys Argentina
|
|