Hola gente, les comento mi problema... en el siguiente codigo se basa en utilizar el codigo en exadecimal del fichero objeto de una fuccion que retorna 0x01. Por lo que codigo es mi codigo exadecimal, que quiero modificar en ejecucion.
El tema es que me da fallo de segmentacion en la linea señalada.
Trabajo con vim, gcc, y objdump, x64
Cual es la forma de hacer de que este bichito funcione??? Desde ya muchas gracias a los sabios.
#include <stdio.h>
int main()
{
int (*pfn)();
char codigo[]={
0x55,//0
0x48,//1
0x89,//2
0xe5,//3
0xb8,//4
0x01,//5 <-- esto lo voy a cambiar.
0x00,//6
0x00,//7
0x00,//8
0xc9,//9
0xc3
};
pfn = &codigo[0]; //ERROR, ESTA LINEA ME DA ERROR
printf("Valor retornado por f antes ... f() = %d\n",pfn
()); codigo[5] = 0x10;
printf("Valor retornado por f despues f() = %d\n",pfn
());
return 0;
}
-----
edite, toy en 64 bits jejejeje