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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Tamaño en bits UBYTE:4 ¿ y Tema: Como leo estos Bits de derecha a izquierda o izquierda a derecha ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tamaño en bits UBYTE:4 ¿ y Tema: Como leo estos Bits de derecha a izquierda o izquierda a derecha ?  (Leído 2,256 veces)
FFernandez

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Tamaño en bits UBYTE:4 ¿ y Tema: Como leo estos Bits de derecha a izquierda o izquierda a derecha ?
« en: 7 Octubre 2021, 21:08 pm »

struct UNWIND_CODE


Size              Value
UBYTE      Offset in prolog
UBYTE: 4     Unwind operation code
UBYTE: 4      Operation info
 

Tamaño en bits UBYTE:4 ¿   
Tengo dudas porque me he encontrado distintas interpretaciones, gracias

Esta es diferente a todas que he encontrado : Excepciones de prólogo y epílogo

****************Esta definición es la correcta, coinciden todos los parametros

Dentro de una función descrita por una _RUNTIME_FUNCTIONestructura, puede ocurrir una excepción en el prólogo o el epílogo de la función, así como en el cuerpo de la función, que puede estar o no en un bloque try. El prólogo es la parte de la función que guarda registros, almacena parámetros en la pila (si - Afro). El epílogo es la inversión de este proceso, es decir, el regreso de la función. El compilador almacena cada acción que tiene lugar en el prólogo en una UnwindCodesmatriz; cada acción está representada por una UNWIND_CODEestructura de 2 bytes que contiene un miembro para el desplazamiento en el prólogo (1 byte), el código de operación de desenrollado (4 bits) y la información de operación (4 bits).

Y la segunda pregunta es: Los Byte(s) los estoy leyendo de derecha a izquierda, como leo entonces a estos bits, gracias.
 1 byte == UBYTE: 4     Unwind operation code  UBYTE: 4      Operation info
Supongo que de izquierda a derecha…………………………….?¿?¿

******************** Pues si que es correcto aquí se lee como se escribe, comprobado y coinciden los parámetros extraidos.


Entonces la struct UNWIND_CODE tiene un tamaño de 2 byte en x64

Aclaro sistema x64



« Última modificación: 10 Octubre 2021, 20:26 pm por FFernandez » 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: Tamaño en bits UBYTE:3 ¿
« Respuesta #1 en: 7 Octubre 2021, 21:14 pm »

3 bits.

https://en.cppreference.com/w/c/language/bit_field


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
FFernandez

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re: Tamaño en bits UBYTE:4 ¿
« Respuesta #2 en: 7 Octubre 2021, 21:38 pm »

Gracias, #include <stdio.h>
struct S {
    // will usually occupy 8 bytes:
    // 5 bits: value of b1
    // 27 bits: unused
    // 6 bits: value of b2
    // 15 bits: value of b3
    // 11 bits: unused
    unsigned b1 : 5;
    unsigned :0; // start a new unsigned int
    unsigned b2 : 6;
    unsigned b3 : 15;
};
int main(void)
{
    printf("%zu\n", sizeof(struct S)); // usually prints 8
}

Entonces, el 99% de las interpretaciones que he visto están mal……….

Por ejemplo: https://sudonull.com/post/72973-Exceptions-on-Windows-x64-How-it-works-Part-2-Company-blog-Aladdin-RD

La estructura :   UNWIND_CODE tiene una longitud de 2 BYTE, es correcto?, gracias

***************** Si es correcto coincide con CountOfCodes alineado Word LE FALTA FrameOffset 2 BYTES   TOTAL 4 BYTES

lo cambie casi a la vez tuya, el fragmento de texto que he puesto es mas aclaratorio, y tenia que adaptar el título.

Hablo siempre de x64. que es la documentación que manejo.
« Última modificación: 10 Octubre 2021, 21:05 pm por FFernandez » 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: Tamaño en bits UBYTE:4 ¿
« Respuesta #3 en: 8 Octubre 2021, 00:00 am »

Ahora le cambiaste el titulo al tema, era "Tamaño en bits UBYTE:3" y la respuesta es 3 bits, el tamaño del campo es de 3 bits. No, la estructura no tendra un tamaño de 2 bytes ... una estructura dependera de la plataforma (x86, x64, ARM64, etc.), el empaquetado, el alineamiento ... mejor lee el codigo generado y vas a ver que al leer o escribir en esos campos se usa exactamente el numero de bits especificado.
« Última modificación: 8 Octubre 2021, 00:01 am por Eternal Idol » 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