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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  fread me muestra algunos hexadecimales de forma incorrecta
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: fread me muestra algunos hexadecimales de forma incorrecta  (Leído 2,273 veces)
otroWeyMas.nasm

Desconectado Desconectado

Mensajes: 23


Ver Perfil
fread me muestra algunos hexadecimales de forma incorrecta
« en: 2 Febrero 2022, 05:47 am »

Hola

Dos preguntas, cuando intento sacar los hexadecimales de un binario, utilizando fopen y fseek, me aparecen unos de forma extraña, por ejemplo:

0xaf 0x3c 0xffffffa9 0x4c.... 0xbc 0xaf 0xffffff4c...etc.

¿A que se debe esto?

Citar
0xffffffa9 .... 0xffffff4c

¿hay alguna forma de evitarlo?

en el printf utilizo, "%02x", pero no entiendo porque me aparecen algunos hexadecimales de esa forma, incluso uso antes memset para dejar el buffer de fread en '\0', pensando que podría algo interferir, pero no, sigue haciendo lo mismo.

También lo verifique con un editor de hexadecimal y si me aparecen los hexadecimales correctos, pero a diferencia del editor, a mi me salen de la forma rara que explique arriba.

Espero me puedan explicar.

Saludos.



« Última modificación: 2 Febrero 2022, 18:35 pm por otroWeyMas.nasm » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: fread me muestra algunos hexadecimales de forma incorrecta
« Respuesta #1 en: 2 Febrero 2022, 09:55 am »

Me imagino que estas usando char como tipo de dato, x trabaja con int y seguramente te este pasando esto:
https://en.wikipedia.org/wiki/Sign_extension

Ejemplo crudo:
Código
  1. ; 6    : for (int x = 0; x < sizeof(numeros); ++x)
  2. ; 7    : printf("%02x\r\n", numeros[x]);
  3.  
  4. movsx eax, BYTE PTR _numeros$[ebp+esi]
  5. push eax
  6. push OFFSET ??_C@_06HMDBCJFL@?$CF02x?$AN?6@
  7. call _printf

https://www.felixcloutier.com/x86/movsx:movsxd

Código
  1. ; 6    : for (int x = 0; x < sizeof(numeros); ++x)
  2. ; 7    : printf("%02x\r\n", (unsigned char)numeros[x]);
  3.  
  4. movzx eax, BYTE PTR _numeros$[ebp+esi]
  5. push eax
  6. push OFFSET ??_C@_06HMDBCJFL@?$CF02x?$AN?6@
  7. call _printf

https://www.felixcloutier.com/x86/movzx



https://www.cplusplus.com/reference/cstdio/printf/


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
otroWeyMas.nasm

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: fread me muestra algunos hexadecimales de forma incorrecta
« Respuesta #2 en: 2 Febrero 2022, 18:37 pm »

Vale, tienes razón, ya lo arreglé.

Gracias por los links.  ;D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: fread me muestra algunos hexadecimales de forma incorrecta
« Respuesta #3 en: 2 Febrero 2022, 19:31 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines