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 C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con código mutante C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con código mutante C  (Leído 4,249 veces)
NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Ayuda con código mutante C
« en: 19 Septiembre 2012, 19:30 pm »

Buenas. He estado esta tarde mirando como es eso de "el código mutante" (cade vez me suena mejor xD) pero al intentar reproducir el ejemplo de esta dirección: http://usuarios.multimania.es/rllopis/mainMutante.html me quedo pillado en que al crear el fichero .c con la función mutante() al hacer el objdump -s me sale:
Código:
$ gcc -c mutante.c -o mutante.o
$ objdump -s mutante.o
Código:
mutante.o:     file format elf64-x86-64

Contents of section .text:
 0000 554889e5 b8010000 005dc3             UH.......].    
Contents of section .comment:
 0000 00474343 3a202855 62756e74 752f4c69  .GCC: (Ubuntu/Li
 0010 6e61726f 20342e36 2e332d31 7562756e  naro 4.6.3-1ubun
 0020 74753529 20342e36 2e3300             tu5) 4.6.3.    
Contents of section .eh_frame:
 0000 14000000 00000000 017a5200 01781001  .........zR..x..
 0010 1b0c0708 90010000 1c000000 1c000000  ................
 0020 00000000 0b000000 00410e10 8602430d  .........A....C.
 0030 06460c07 08000000                    .F......    
No se que cojer... también he intentado con hexdump -S pero tampoco se que parte es.
He probado con el código de la web sin modificar y me sale una "violación de segmento core generado".
Además mi máquina es de 64bits, supongo que eso influye en los valores hexadecimales, no¿?
Alguna ayuda¿?


« Última modificación: 19 Septiembre 2012, 22:10 pm por NeoB » En línea

Fire544

Desconectado Desconectado

Mensajes: 85


"Escucha el sonido del 0, 1"


Ver Perfil WWW
Re: Ayuda con código mutante C
« Respuesta #1 en: 20 Septiembre 2012, 07:37 am »

Este tema fue tratado en temas anteriores en el foro, favor repasarlo no dan una solucion pero explican fijate http://foro.elhacker.net/programacion_cc/puntero_a_funcion-t370480.0.html se dice que !!! --> "Se crea un puntero a funcion, que no devuelve ningun valor y que no recibe nada. Sino que solamente se alteran los valores del vector desde una misma variabla o sea se accede con el mismo vector, y solamente se visualiza con el puntero a funcion, cosa que tambien se podria hacer con el vector". Bueno esto es todo !!   :xD


« Última modificación: 20 Septiembre 2012, 07:40 am por Fire544 » En línea

"Si enseñas a pezcar a un niño lo ayudas para toda la vida, si pezcas para alimentarlo lo ayudas por un momento".
NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: Ayuda con código mutante C
« Respuesta #2 en: 20 Septiembre 2012, 16:01 pm »

Ok. Gracias! y perdón por re-postear...
En línea

NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: Ayuda con código mutante C
« Respuesta #3 en: 20 Octubre 2012, 11:59 am »

No se si debería haber empezado otro tema pero creo que es una tontería empezar otro... haber si alguien me responde o ayuda a alguien:
Averigüé como conseguir las instrucciones en código máquina (probaba con "objdump -s", pero depués de leer el man, ví que era "objdump -d") y lo hice como me ponía en http://usuarios.multimania.es/rllopis/mainMutante.html... no funcionaba en mi ordenador, busqué por que, vi que era por que la zona en la que guardaba el código (el array de char), no tenía permisos de ejecución, busqué como dárselos, ví que tenía que usar "sys/mmap.h", la usé, y... ME FUNCIONÓ!
Este es el código (el que me funciona):
Código
  1. /*
  2. -Escribe el código de la función en un archivo de texto.
  3. -Compila la función con "gcc -c file.c".
  4. -Usa "objdump -d file.o" para ver el código máquina.
  5. */
  6.  
  7. #include <sys/mman.h>
  8. #include <string.h>
  9.  
  10. int main ()
  11. {
  12. int (*ptf)();
  13. unsigned char *code; // <---- Contiene el código máquina de una función que retorna 5 (el código lo da objdump).
  14.  
  15. code = mmap(0,sizeof(code), PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0);
  16.  
  17. code[0] = 0x55;
  18. code[1] = 0x48;
  19. code[2] = 0x89;
  20. code[3] = 0xe5;
  21. code[4] = 0xb8;
  22. code[5] = 0x05; // <---- Lo que devuelve la función. Lo mutaremos más adelante.
  23. code[6] = 0x00;
  24. code[7] = 0x00;
  25. code[8] = 0x00;
  26. code[9] = 0x5d;
  27. code[10] = 0xc3;
  28.  
  29. ptf = code;
  30. printf("Antes de mutar: %d\n", ptf());
  31.  
  32. code[5] = 0x06;
  33.  
  34. printf("Después de mutar: %d\n", ptf());
  35. return 0;
  36. }
  37.  
Mi duda es si lo de "sizeof(code)" está bien siendo code ¿un array dinámico, no?.
En línea

systemfirst97

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con código mutante C
« Respuesta #4 en: 28 Enero 2014, 21:54 pm »

mmm e analizado todo el codigo y no encuentro la finalidad del mismo alguien me puede decir me perdi en las localidades de memoria
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Codigo
Programación Visual Basic
Mitsu_POWA 1 2,122 Último mensaje 26 Julio 2005, 00:25 am
por byebye
[Batch] Executor, mi primer bichito"mutante"...
Scripting
SmartGenius 1 3,792 Último mensaje 24 Mayo 2008, 03:58 am
por SmartGenius
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda) « 1 2 3 »
Programación C/C++
Søra 22 12,482 Último mensaje 22 Mayo 2010, 00:22 am
por Littlehorse
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 30,301 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
Ayuda con codigo C++ « 1 2 »
Programación C/C++
rjobel 14 16,844 Último mensaje 11 Abril 2011, 02:36 am
por Firos
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines