Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - xiruko

#371
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 00:06 AM
en mi caso el valor de retorno esta en la posicion 5 y en la suya el 4. aunque eso es lo de menos, he quitado la parte del codigo que cambia el numero quedandome solo con la asignacion del puntero y el primer printf, y sigue dando error.

el caso es, si declaro la variable "codigo" como local dentro del main, el error es de seg fault; en cambio si la declaro global, el error es bus error. sigo investigando y al menos he encontrado algo que puede arrojar algo de luz sobre el asunto. si consigo algo ya posteare, un saludo
#372
Programación C/C++ / Re: puntero a funcion
3 Septiembre 2012, 22:58 PM
gracias por el link, lo he mirado por encima y mas o menos eso ya es lo que habia visto, aunque ahora le dedicare un rato a leerlo bien e intentare entenderlo del todo, ya que por los comentarios parece buen material.

pero el tema es, figura que en "codigo" esta la funcion funcion() (tendria que haber cogido otro nombre...) en codigo maquina, y por lo tanto al hacer pfn=&codigo[0] lo que en teoria se esta haciendo y que ademas parece logico segun lo que hacen en la web, es decirle que el puntero a funcion apunte a donde comienza la funcion funcion(), y seguira avanzando por ahi hasta que se encuentre el return no? no se si me he liado escribiendo... pero bueno eso es lo que me gustaria realmente aprender, por eso si tienes algun link que hable sobre codigos mutantes aunque sea en ingles estaria muy agradecido.

un saludo!

edito: bueno... que no esta bien esta claro si da un segmentation fault... xD

Citarencima puede que estes accediendo a una posicion fuera del mapa de memoria asignado a tu programa.....

fuera del mapa? pero si estoy accediento a la posicion de la variable "codigo" la cual forma parte de mi programa, entonces no estoy yendo fuera no? lo de que no se encuentra ninguna funcion alli si que puede ser, aunque seguro que debe haber alguna manera de hacer algo parecido.
#373
Programación C/C++ / puntero a funcion
3 Septiembre 2012, 21:55 PM
buenas a todos,

ando investigando el tema de los punteros a funciones y sus utilidades, y una que me ha llamado la atencion es la de cambiar el codigo en tiempo de ejecucion, sin tener que volver a compilar. estaba haciendo un pequeño ejemplo sacado de una web, y no se por que me da error de segmentation fault. el code es el siguiente:


#include <stdio.h>

int main() {

int (*pfn)();
char codigo[]={0x55,0x48,0x89,0xe5,0xb8,0x01,0x00,0x00,0x00,0xc9,0xc3};

pfn=&codigo[0];
printf("Valor inicial: %d\n", pfn());
codigo[5]=0x05;
printf("Valor cambiado: %d\n", pfn());

return 0;
}


la cadena "codigo" la he hecho escribiendo la siguiente funcion:


int funcion() {
return 0x01;
}


en un archivo a parte, creando luego el archivo objeto con: gcc -c funcion.c, y luego viendo su codigo binario en la terminal con una utilidad en mac llamada otool semejante a objdump.

el tema es que escribo el mismo programa que el de la web y no se por que a mi me falla... la web es esta:

http://usuarios.multimania.es/rllopis/mainMutante.html

alguien sabe que puede pasar? este es un tema completamente nuevo para mi, y con un par de buenos links de ayuda para leer ya estaria mas que satisfecho. llevo un par de horas dando vueltas por google y sigo casi como he empezado...

gracias y un saludo!
#374
Programación C/C++ / Re: funciones INT vs VOID
3 Septiembre 2012, 15:40 PM
CitarYo diria la que menos memoria utiliza es la que pasa los dos numeros por referencia, ya que no se hace una copia de sus valores para operar.

yo estoy contigo... quizas en el caso de int sea lo mismo, pero si la variable es por ejemplo un struct con varios campos, la diferencia si que es notable. por ejemplo:


struct prueba {
int a, b, c;
char d, f, *g;
float h, i, j;
};


aqui una variale struct ocupa 40 bytes y en cambio un puntero al struct ocupa 8 bytes.

un saludo!

por cierto, acabo de hacer un sizeof(int*) y a mi me da que son 8 bytes, igual que cualquier otro puntero.
#375
Programación C/C++ / Re: ayuda para ordenar en c
2 Septiembre 2012, 18:03 PM
hola, antes de que intentemos ayudarte deberias ayudarnos tu un poco. el codigo asi es muy molesto de leer, podrias editarlo y ponerlo entre las etiquetas geshi? ademas podrias indentarlo correctamente y ya seria perfecto.

un saludo!
#376
dejo aqui mi pequeño aporte por si sirve de ayuda. solo verifica que el primer argumento sea un numero, ya que el segundo al ser cualquier cadena esta tambien puede contener numeros o ser todo numeros no? si no es asi, y el segundo parametro tiene que contener solo las letras del abecedario dimelo y modificare el codigo en un momento.


#include <stdio.h>

int main(int argc, char** argv) {

int i;

if (argc != 3) {
printf("Numero de parametros incorrecto.\n");
return 1;
}

//primer parametro un numero
for (i=0; argv[1][i]!='\0'; i++) {
if (argv[1][i] < 48 || argv[1][i] > 57) {
printf("Primer parametro no es un numero.\n");
return 2;
}
}

printf("Parametros correctos.\n");
return 0;
}


Citar
Entrada: ./main 123a
Salida: Numero de parametros incorrecto.

Entrada: ./main 123a hola
Salida: Primer parametro no es un numero.

Entrada: ./main 123 hola
Salida: Parametros correctos.

un saludo!
#377
Programación C/C++ / Re: Aporte c++
2 Septiembre 2012, 04:30 AM
Citarantes de criticar podeis mirar el code pero ya esta bien k alguien critique mi programa

:o

como dice farresito yo tampoco lo decia para ofender ni nada, y como dije en mi post no se casi nada de criptografia y por eso preguntaba...

en fin, me apunto la manera de hacerlo y la probare.

un saludo!
#378
Programación C/C++ / Re: Aporte c++
1 Septiembre 2012, 23:31 PM
una pregunta que no tiene que ver con el codigo en si... yo no se casi nada de criptografia, pero si cifras algo con numeros aleatorios, como lo descifras luego? no lo entiendo ya que, por ejemplo, 1 mismo texto dara distintas formas cuando este cifrado, pero como haces para que todas acaben en 1 misma manera (texto original) al descifrarlo?

gracias por la ayuda, un saludo!
#379
Programación C/C++ / Re: ayuda con array basico
1 Septiembre 2012, 23:14 PM

#include <stdio.h>

#define TAM 256

int main() {

char bufer[TAM];
unsigned int i;

printf("Inserta la frase: ");
fgets(bufer, TAM-1, stdin);

//imprime la frase en vertical
printf("\nVertical:\n");
for (i=0; bufer[i]!='\n'; i++)
printf("%c\n", bufer[i]);

//cambia las letras todas con el mismo numero
printf("\nLetra+5:\n");
for (i=0; bufer[i]!='\n'; i++)
printf("%c", bufer[i]+5);
printf("\n");

//primera letra igual, segunda +1, tercera +2, etc
printf("\nLetra+i:\n");
for (i=0; bufer[i]!='\n'; i++)
printf("%c", bufer[i]+i);
printf("\n");

return 0;
}


no sabia que operacion mas aplicarle a las letras... pero bueno eso ya es idea tuya. espero que sirva y te haya ayudado un poco a recordar, un saludo!
#380
Foro Libre / Re: ¿Por qué soy ateo?
1 Septiembre 2012, 22:59 PM
CitarCreo que no pensar en la existencia de Dios es cerrar la mente. Acaso la ciencia no dije que no hay que descartar las cosas 'por que sí'?

no lo se... diria que si pero no estoy seguro de si es un principio de la ciencia o no. igualmente, creo que discutir sobre si existe dios o ser creyente y si existe algo que nos crease son cosas distintas.

yo tambien he pensado muchas veces, incluso lei un articulo por internet que me encantaria encontrar y enseñartelo, que hablaba de si seria posible que nuestro mundo no fuera mas que una simulacion en un superordenador de una especie mucho mas avanzada que nosotros. el articulo decia, por ejemplo, que en nuestra realidad, a escala nanometrica donde interviene la fisica cuantica, era imposible saber donde estaba localizada una particula a no ser que la observes (esto es un principio actual de la fisica cuantica mas que aceptado llamado principio de incertidumbre de heisenberg). pues bien, luego decia que eso es exactamente lo que se suele hacer en una simulacion de ordenador. cuando tu estas jugando a algun juego de ordenador, el escenario no esta siempre totalmente "cargado" por decirlo de alguna manera, solo esta definido hasta donde tu puedes ver, por temas de optimizacion de recursos y demas. con esto quiero decir que si que es posible que algo alguien mas avanzado que nosotros nos haya creado y esto no sea mas que una simulacion, pero -y como decian en el articulo con toda la razon- es totalmente imposible saberlo, al menos por ahora, ya que como todo forma parte de la hipotetica simulacion nunca podriamos descubrir un fallo puesto que nuestra realidad siempre ha sido asi.

en fin, son cosas que se hace hasta absurdo discutir (aunque a mi me guste muchisimo) ya que hasta dentro de mucho tiempo no tendremos respuestas exactas. pero yo diria que en el caso de que alguien nos hubiera creado, seria mas bien una raza avanzada haciendo experimentos sociales y cosas asi, antes que un dios que promete vida mas alla de la muerte, que permite que hayan guerras por el, que evade impuestos, y que piensa en el bienestar de la gente mientras sus mas fieles seguidores estan en el vaticano arreglando una barandilla de oro maciza.

he dicho xD