Ho bisogno della dimensione del byte, IMAGE_OPTIONAL_HEADER.SizeOfImage sembra arrotondato al limite (non sicuro) ed è maggiore della dimensione reale del file.Come faccio a determinare la dimensione esatta del file immagine PE usando la sua intestazione?
risposta
IMAGE_OPTIONAL_HEADER.SizeOfImage
è la dimensione del file eseguibile/dll caricato nella memoria virtuale. Non è uguale alla dimensione del disco.
È possibile calcolarlo con VirtualAddress + VirtualSize
dell'ultima sezione.
IMAGE_OPTIONAL_HEADER.SizeOfImage
è il valore arrotondato al valore di IMAGE_OPTIONAL_HEADER.SectionAlignment
(in genere uguale alla dimensione della pagina).
if(LastSectionVirtualSize >= LastSectionSizeOfRawData)
{
if(LastSectionVirtualSize % LastSectionSectionAlignment)
{
TempValue = LastSectionVirtualSize - (LastSectionVirtualSize % LastSectionSectionAlignment) + LastSectionSectionAlignment ;
}
else
{
TempValue = LastSectionVirtualSize ;
}
}
else
{
if(LastSectionSizeOfRawData % LastSectionSectionAlignment)
{
TempValue = LastSectionSizeOfRawData - (LastSectionSizeOfRawData % LastSectionSectionAlignment) + LastSectionSectionAlignment ;
}
else
{
TempValue = LastSectionSizeOfRawData ;
}
}
OH.SizeOfImage = TempValue + dwLastSecRVA ;
In realtà, la risposta accettata non è corretta. Per ottenere le dimensioni dell'eseguibile su disco, è necessario calcolare PointerToRawData
+ SizeOfRawData
dell'ultima sezione, non le controparti virtuali. Per un esempio vedere http://www.strchr.com/creating_self-extracting_executables
Si noti inoltre che alcuni compilatori amano aggiungere le informazioni di debug dopo l'ultima sezione. Assicurati di togliere le tabelle dei simboli o imposta la modalità di rilascio, a seconda del compilatore che usi, affinché funzioni.
- 1. Come ottenere la dimensione del file immagine in Swift?
- 2. Android ridurre la dimensione del Immagine fotocamera
- 3. Determinare la dimensione dell'array nell'inizializzatore del costruttore
- 4. Come ottenere la dimensione esatta della directory della cache: android
- 5. È possibile determinare la dimensione del file da scaricare?
- 6. Come ottenere la corrispondenza esatta usando fnFilter?
- 7. Come faccio a ridurre la dimensione del mio file di log del server sql?
- 8. Come caricare la dimensione del file prima del caricamento
- 9. Come determinare la dimensione di un file aperto in Python?
- 10. Come determinare la lunghezza del file audio associato a AVAudioPlayer
- 11. Client Controlla la dimensione del file usando HTML5?
- 12. come determinare la dimensione del tablespace oracolo 11g
- 13. Come determinare l'età del file usando PHP?
- 14. Come ottenere la dimensione del file
- 15. Determinare la dimensione della finestra WPF SizeToContent prima del rendering
- 16. Determinare la dimensione corrente dell'immagine utilizzando ImageResizer.net
- 17. Come determinare la lunghezza del contenuto di un file gzip?
- 18. css stampa esatta dimensione
- 19. Come determinare la dimensione del file sul disco di un PHAsset video in iOS8
- 20. Impossibile determinare la dimensione del terminale con ncurses
- 21. (rapporti cristallo) Come ridurre la dimensione del file RPT
- 22. Bitmap dimensioni intestazione del file
- 23. come ottengo la dimensione del file temp in Android?
- 24. Come determinare la stampante predefinita usando WPF?
- 25. Come determinare la dimensione di una stringa dato un font
- 26. errore: inizializzazione non riesce a determinare la dimensione di ‘K’
- 27. come determinare la dimensione del codice oggetto su Linux quando "size" dà la risposta sbagliata?
- 28. NSFileManager - Controlla la dimensione del file?
- 29. C'è un modo per determinare la dimensione fisica del monitor?
- 30. Ottenere la dimensione del file in Haskell
Ho trovato alcune cose * al di fuori * di sezioni come la tabella dei certificati, dare un'occhiata a KERNEL32.DLL per esempio, la sezione di riposizionamento termina seguita dalla tabella dei certificati, così come anch'io avrei controllare la tabella della directory dei dati. – Lloyd