Qual è il valore di sizeofblock utilizzato nella tabella image_base_relocation?

0

Sto guardando il caricatore dll nel carberp e c'è questa riga che non capisco.

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

Puoi dare un'occhiata al codice sorgente sul link sottostante.

link

Voglio dire capisco il ciclo for, ma cos'è "sizeofblock- image_sizeof_base_relocation / 2".

Per favore aiuto.

    
posta jammy47 01.12.2016 - 11:49
fonte

1 risposta

1

In base a MSDN : (vai alla parte relativa alle rilocazioni della base file PE)

La sezione di riposizionamento è una matrice di blocchi, ognuno dei quali contiene:

(IMAGE_BASE_RELOCATION, relocation binary chunck)

Per calcolare quante rilocazioni in blocchi specifici devi rimuovere SizeOfBlock da IMAGE_BASE_RELOCATION sottrai la dimensione di un IMAGE_BASE_RELOCATION e dividi per ciascuna dimensione di riposizionamento (che è sizeof (WORD) = 2 byte):

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

spero che questo ti aiuti

    
risposta data 07.09.2017 - 21:39
fonte

Leggi altre domande sui tag