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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [43] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 ... 161
421  Programación / Programación C/C++ / Re: Linea de código dificil de entender en: 4 Julio 2018, 14:20 pm
Seguramente es C, aunque en realidad C++ por debajo termina haciendo lo mismo. Son cosas de la expresividad del lenguaje.

Por otra parte: no se movería 4 bytes, eso en caso de que fuera un puntero a int, pero el objeto es un puntero a void. ¿Qué ocupa un dato de tipo void? Ni siquiera existe. Algunos compiladores, como GCC consideran que sumar 1 a un void* ha de apuntar al siguiente byte, pero claro puede haber otros desarrolladores de compiladores que no consideren así.
422  Programación / Programación C/C++ / Re: Linea de código dificil de entender en: 3 Julio 2018, 19:14 pm
En el siguiente link https://medium.com/@bartobri/untangling-complex-c-declarations-9b6a0cf88c96 te enseñarán a desmenuzar todas estas declaraciones complicadas. Hay muchos otros ejemplos en la red. Son un puzzle bastante bonito a resolver.
423  Programación / Programación C/C++ / Re: Linea de código dificil de entender en: 3 Julio 2018, 17:40 pm
Código:
*(void **)&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] = h->modified_function;

h->original_function : objeto, un puntero.

(char *)h->original_function : un puntero casteado a puntero a char.

((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] : dado que h->original_function ha sido casteado a char * moverse a través de él será byte a byte, por tanto esto devolverá lo que hay en el byte ASM_HOOK_CODE_OFFSET de h->original_function.

&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] : devuelve la dirección del byte ASM_HOOK_CODE_OFFSET del objeto h->original_function.

(void **)&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] : castea a void ** la dirección del byte ASM_HOOK_CODE_OFFSET del objeto h->original_function. Se reconvierte la dirección devuelta al puntero de un puntero a void.

*(void**)&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] : se obtiene la dirección del byte ASM_HOOK_CODE_OFFSET del objeto h->original_function como puntero a void.
424  Programación / Programación C/C++ / Re: ¿La función memcpy coloca el final de cadena "\0"? en: 30 Junio 2018, 08:43 am
Para eso usa strcpy que sí lo coloca.
425  Programación / Programación C/C++ / Re: Punteros en: 29 Junio 2018, 07:04 am
En Ingreso x e y son punteros, por tanto en scanf...
426  Programación / Programación C/C++ / Re: [ANSI C] Si guardo punteros dinamicos en un archivo ¿Debo hacer free? en: 27 Junio 2018, 19:37 pm
Correcto. Si haces un array de punteros dinámicos, antes de liberar el array debes liberar todos los punteros dinámicos que has generado.

Piénsalo de esta forma:
Un array, tanto dinámico como estático como cualquier otra variable, es una entrada en una tabla donde se guarda la dirección de inicio y su tamaño, a parte de su nombre y algunas cosas más.

Cuando se accede a una posición de un array se tiene en cuenta su dirección de inicio, el número de elemento y el tamaño de éstos elementos. Por tanto si liberas el array de punteros dinámicos quitarás de la tabla ese array pero los elementos existentes siguen ocupando memoria que, por el hecho de haber liberado el array y no existir más su referencia, no podrás acceder a ellos.

Por cierto, en tiempo de ejecución esa tabla no existe y todo son posiciones y offsets. Dicha tabla solo existe de forma interna para el compilador para construir el código.
427  Programación / Programación C/C++ / Re: [ANSI C] Si guardo punteros dinamicos en un archivo ¿Debo hacer free? en: 25 Junio 2018, 22:05 pm
No debes guardar esos punteros a un archivo porque no vas a guardar la estructura sino solo su dirección. Es cómo cuándo hace años la gente iba a un cibercafé y creía que copiando los accesos directos de los juegos se los podía llevar a casa.
Con eso vengo a decir que cuándo quieras recuperar los datos del archivo en otro momento ya no existirán y lo que habrá en esa zona de memoria que has guardado será basura, o directamente no pertenecerá al ámbito de la memoria del programa.
Para guardar una estructura debes guardar miembro a miembro, si son punteros (como por ejemplo cadenas) debes guardar el contenido de dónde apunta el puntero. A la hora de recuperar los datos debes hacerlo en el mismo orden en que fueron guardados (y en el caso de datos tipo cadena, el número exacto de bytes que guardaste). Esto se debe hacer así por el hecho de que de un programa a otro, de una máquina a otra, la instancia del programa puede ordenar, de forma interna, la estructura de forma diferente para acomodarla de forma específica a ese entorno.
428  Programación / Programación C/C++ / Re: Consulta sobre retorno en las funciones en: 25 Junio 2018, 21:58 pm
Creo que no va por ahí la cosa, a mi entender el prototipo de la función es:
Código
  1. dat func(double real, int* puntero);
429  Programación / Programación C/C++ / Re: Retornar punteros char? ¿Si o si memoria dinamica? en: 25 Junio 2018, 21:54 pm
Si tan molesto es usa una cadena global como dato auxiliar. En la función lo cargas con la respuesta del usuario y una vez que regrese copias la información que hay en el buffer que te interese.
O pasas como parámetro el buffer de interés a la función y que esta solo se encargue de llenarlo.
Hay más formas conseguir una cadena en una función y retornarla después.
430  Programación / Programación C/C++ / Re: dándole vueltas a un problemilla c++ necesito un poco de ayuda en: 20 Junio 2018, 20:46 pm
Yo entendí, y así lo plasmé en el código es que si hay tres letras iguales seguidas por orden de lectura las dos primeras forman pareja, como la de en medio ya se ha usado para pareja no puede juntarse con la que le sigue, con lo que la segunda y la tercera no forman pareja.
Pero si hubiera 4, y siguiendo el razonamiento anterior, la tercera sí formaría pareja con la cuarta. La tercera no ve a la segunda, por formar ésta última una pareja con otra, pero si ve la última y por tanto se empareja.
Siguiendo el razonamiento anterior, si hubiera 5 la última no formaría pareja.
Páginas: 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [43] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines