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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51
371  Programación / Programación C/C++ / Re: puntero a funcion en: 4 Septiembre 2012, 01:49 am
 :o

el que funciona?? el codigo de la web? y como lo has hecho? xD

Citar
Guao yo no había tocado este tema en C

ni yo, y es una pasada lo que se puede llegar a hacer ;-)
372  Programación / Programación C/C++ / Re: puntero a funcion en: 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
373  Programación / Programación C/C++ / Re: puntero a funcion en: 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

Citar
encima 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.
374  Programación / Programación C/C++ / puntero a funcion en: 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:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int (*pfn)();
  6. char codigo[]={0x55,0x48,0x89,0xe5,0xb8,0x01,0x00,0x00,0x00,0xc9,0xc3};
  7.  
  8. pfn=&codigo[0];
  9. printf("Valor inicial: %d\n", pfn());
  10. codigo[5]=0x05;
  11. printf("Valor cambiado: %d\n", pfn());
  12.  
  13. return 0;
  14. }

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

Código
  1. int funcion() {
  2. return 0x01;
  3. }

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!
375  Programación / Programación C/C++ / Re: funciones INT vs VOID en: 3 Septiembre 2012, 15:40 pm
Citar
Yo 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:

Código
  1. struct prueba {
  2. int a, b, c;
  3. char d, f, *g;
  4. float h, i, j;
  5. };
  6.  

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.
376  Programación / Programación C/C++ / Re: ayuda para ordenar en c en: 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!
377  Programación / Programación C/C++ / Re: funcion recibe dos parametros en: 2 Septiembre 2012, 17:56 pm
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.

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char** argv) {
  4.  
  5. int i;
  6.  
  7. if (argc != 3) {
  8. printf("Numero de parametros incorrecto.\n");
  9. return 1;
  10. }
  11.  
  12. //primer parametro un numero
  13. for (i=0; argv[1][i]!='\0'; i++) {
  14. if (argv[1][i] < 48 || argv[1][i] > 57) {
  15. printf("Primer parametro no es un numero.\n");
  16. return 2;
  17. }
  18. }
  19.  
  20. printf("Parametros correctos.\n");
  21. return 0;
  22. }
  23.  

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!
378  Programación / Programación C/C++ / Re: Aporte c++ en: 2 Septiembre 2012, 04:30 am
Citar
antes 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!
379  Programación / Programación C/C++ / Re: Aporte c++ en: 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!
380  Programación / Programación C/C++ / Re: ayuda con array basico en: 1 Septiembre 2012, 23:14 pm
Código
  1. #include <stdio.h>
  2.  
  3. #define TAM 256
  4.  
  5. int main() {
  6.  
  7. char bufer[TAM];
  8. unsigned int i;
  9.  
  10. printf("Inserta la frase: ");
  11. fgets(bufer, TAM-1, stdin);
  12.  
  13. //imprime la frase en vertical
  14. printf("\nVertical:\n");
  15. for (i=0; bufer[i]!='\n'; i++)
  16. printf("%c\n", bufer[i]);
  17.  
  18. //cambia las letras todas con el mismo numero
  19. printf("\nLetra+5:\n");
  20. for (i=0; bufer[i]!='\n'; i++)
  21. printf("%c", bufer[i]+5);
  22. printf("\n");
  23.  
  24. //primera letra igual, segunda +1, tercera +2, etc
  25. printf("\nLetra+i:\n");
  26. for (i=0; bufer[i]!='\n'; i++)
  27. printf("%c", bufer[i]+i);
  28. printf("\n");
  29.  
  30. return 0;
  31. }
  32.  

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!
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines