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 - avesudra

#601
Cita de: queen1984 en  4 Septiembre 2012, 19:43 PM
Y el compilador cual es?, será ese programita llamado JDK que uno siempre tiene que descargar para poder instalar el Netbeans. El JDK contiene el codigo Java?
Revisa los enlaces que te pongo http://es.wikipedia.org/wiki/Java_Development_Kit ahí explica lo del JDK , el JDK no contiene el código de java , el compilador lo que hace es que tu escribes en netbeans una instrucción en java ( no sé java así que no te puedo decir una) y el lo transforma a codigo que entienda el ordenador.Por ejemplo , el compilador X , le pasamos esto:
imprime "hola";
Y el lo compila y le dice al ordenador esto:
01010101011101010101010101
Para que el lo entienda.Cógete un buen libro y aprende la base.
#602
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 14:50 PM
Cita de: mDrinky en  4 Septiembre 2012, 14:42 PM
    No, esa parte es de ejecucion. Pero para poder modificarla tienes que tener derecho de escritura. 
Pero si es un array de char , ¿que menos que pueda ser modificado no?No lo entiendo :xD además si a mi me funciona , me deberia echar para atras por no poder escribir ¿no? Es curioso...
#603
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 13:25 PM
Cita de: mDrinky en  4 Septiembre 2012, 11:40 AM
El problema es que el está en mac, para windows creo que sobraría con dar permisos PAGE_EXECUTE_READWRITE Con la API VirtualProtect a la parte de memoría que queremos modificar en tiempo de ejecución.

saludos.
Lo sé pero el caso es que a mí me funciona perfectamente, es curioso , es que esa parte de memoria es solo para ser leída y escribida nada más ¿no mDrinky? y no ejecutada.
#604
Cita de: dnsdirm en  4 Septiembre 2012, 02:58 AM
Pues que libreria grafica recomiendan por su facilidad para construir las GUI y cuales son mas faciles de aprender o utilizar?
Qt por la documentación , aunque Gtk es open source , da igual el caso es saber bien , qt es mas manejable que gtk.Es mi opinión.
#605
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 02:46 AM
Cita de: xiruko en  4 Septiembre 2012, 02:38 AM
ya lo hice antes, pero la verdad no se que buscar. quiero decir que si, veo que el programa peta en el momento de: pfn=&codigo[0], y dice que no tiene acceso a esa zona de memoria (vamos, lo que es un seg fault). eso si declaro la variable local dentro del main. en cambio, si la declaro global el error que me da es bus error.

la verdad que ni idea... estoy buscando informacion pero cada nueva web que miro, todo es nuevo para mi y me pierdo al momento. pero bueno, ya tenia ganas de aprender algo nuevo en c que me llamara la atencion asi que a ello voy... algun dia volvere con la respuesta. espero no tardar mucho :D
Ya ya pero con uno en assembler puedes ver en que instrucción peta, bueno a ver si vienen algunos expertos por este post jajaja, te dejo las capturas en asm del OllyDbg de tu código:
Zona de printfs:

Primera llamada:

Segunda llamada:

#606
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 02:28 AM
Si mira la salida la tienes abajo, yo creo que me estoy metiendo demasiado sin saber , pero lo mismo no es que sea un segmentation fault , si no que no tiene permisos de ejecución en esa zona de memoria... Cógete un debugger, y analiza el código(El ida por ejemplo en http://www.hex-rays.com/products/ida/support/download_freeware.shtml) o el gdb es un debugger en ASM , así puedes ver por donde va.
Valor inicial: 1
Valor cambiado: 5

Process returned 0 (0x0)   execution time : 0.011 s
Press any key to continue.
#607
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 02:07 AM
Cita de: xiruko en  4 Septiembre 2012, 02:04 AM
acabo de buscar lo que era cygwin ya que no tenia ni idea. bueno yo estoy con mac os 64bit y con gcc. puede ser que ese programa sea para 32bits, lastima que no tenga ni idea de que es lo que cambia de una a otra a parte de un poco de teoria xD

en fin, al menos se que funcionar funciona, voy a buscar por ahi a ver que encuentro.
Nah ni yo tengo cygwin lo he utilizado algunas veces para tutoriales de compilar librerías y eso pero bah, puedes ser pero lo que me parece muy muy extraño es que me funcione tanto tu código como el de la web, porque tienen valores diferentes.
#608
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 01:59 AM
Cita de: xiruko en  4 Septiembre 2012, 01:56 AM
pues a mi me da segmentation fault...  :huh:
Mira lo que he puesto en el post de antes , lo he modificado.
#609
Programación C/C++ / Re: funciones INT vs VOID
4 Septiembre 2012, 01:59 AM
Cita de: Oblivi0n en  3 Septiembre 2012, 21:54 PM
Esto ilustra lo que te quería comentar: Donde pone "data for small objects" se refiere al heap ( o "monton" en español ).

Si quieres, intentaré mirar por algun libro que tenga de estructuras de datos(en español), o alguna clase por youtube ( si sabes inglés claro ), en los que explican estos conceptos.

Si me acuerdo, me pongo en contacto contigo  :xD
No estaria mal , pero el inglés de oido fatal pero bueno si los tienes a mano un cable que echas!

¡Un saludo y muchas gracias!
#610
Programación C/C++ / Re: puntero a funcion
4 Septiembre 2012, 01:52 AM
Cita de: xiruko en  4 Septiembre 2012, 01:49 AM
:o

el que funciona?? el codigo de la web? y como lo has hecho? xD
No he hecho nada xD , qué compilador estais usando ? yo el gcc (mingw para ser exactos y bajo windows 7), esto es lo que he puesto:
CUIDADIN:
Mirad lo que pone encima de la pagina web :
CODIGO C AUTOMUTANTE.
           
            COMPILADO CON GNU GCC SOBRE CYGWIN PARA WINDOWS-98.

           
#include <stdio.h>

int main()
{
   //Declaro una variable de tipo puntero a función:
   int (*pfn)();

   /* Escribo el código máquina de la función:

       int mutante()
       {
           return 0x01;
       }

       NOTA IMPORTANTE:

       Para obtener el código máquina de una función hacemos lo siguiente:

           1.Escribir un archivo fuente con el código C de la funcion.

           2.Compilar el archivo fuente para obtener el archivo objeto:
             ($ es el prompt del sistema)

              $ cc -c mutante.c -o mutante.o

           3.Una vez tenemos el archivo objeto,vemos su codigo binario:

              $ objdump -s mutante.o

           4.Y ya está; sólo falta copiar la salida del comando anterior y
             ponerlo en un array de chars.

   */

   //código máquina equivalente de la función anterior:
   char codigo[]={
       0x55,//0
       0x89,//1
       0xe5,//2
       0xb8,//3

       0x01,//4 <-- esto lo voy a mutar después (es el entero que retorna pfn).
       0x00,//5
       0x00,//6
       0x00,//7

       0x5d,//8
       0xc3,//9
       0x90,//10
       0x90,//11

       0x90,//12
       0x90,//13
       0x90,//14
       0x90 //15
   };

   //ahora hago que el puntero a función apunte al primer elemento del array:
   pfn = &codigo[0];

   //comprobemos que efectivamente muta:
   printf("Valor retornado por f antes de mutar   ... f() = %d\n",pfn());

   //Mutar el código.Para ello,cambio el valor que retorna pfn en el array de código:
   codigo[4] = 0x8;

   printf("Valor retornado por f despues de mutar ... f() = %d\n",pfn());

   return 0;
}