¿Para qué se usa sizeofblock en la tabla image_base_relocation?

0

Estoy mirando el cargador dll en carberp y hay una línea que no entiendo.

for (DWORD i = 0; i < ((Relocation->SizeOfBlock - IMAGE_SIZEOF_BASE_RELOCATION) / 2 ); i++, RelInfo++ )

Puede ver el código fuente en el enlace a continuación.

enlace

Quiero decir que entiendo el bucle for, pero lo que es "sizeofblock-image_sizeof_base_relocation / 2".

Por favor ayuda.

    
pregunta jammy47 01.12.2016 - 11:49
fuente

1 respuesta

1

De acuerdo con MSDN : (vaya a la parte de Reubicación de la base del archivo PE)

La sección de reubicación es una matriz de bloques, cada uno contiene:

(IMAGE_BASE_RELOCATION, reubicación binario chunck)

Para calcular cuántas reubicaciones en un bloque específico necesita sacar SizeOfBlock de IMAGE_BASE_RELOCATION, reste el tamaño de una IMAGE_BASE_RELOCATION y divida por cada tamaño de reubicación (que es sizeof (WORD) = 2 bytes):

(Relocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD)

Espero que esto te ayude

    
respondido por el lidor 07.09.2017 - 21:39
fuente

Lea otras preguntas en las etiquetas