我需要字節大小,IMAGE_OPTIONAL_HEADER.SizeOfImage似乎四捨五入到(不確定)邊界,並且大於實際文件大小。如何使用標題確定精確的PE圖像文件大小?
7
A
回答
9
IMAGE_OPTIONAL_HEADER.SizeOfImage
是虛擬內存中加載的可執行文件/ dll的大小。 它與磁盤上的大小不一樣。
你可以用最後一節的VirtualAddress + VirtualSize
來計算它。
IMAGE_OPTIONAL_HEADER.SizeOfImage
是該值四捨五入到IMAGE_OPTIONAL_HEADER.SectionAlignment
的值(通常與頁面大小相同)。
2
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 ;
1
其實,接受的答案是不正確的。要在磁盤上獲得可執行文件的大小,您應計算最後一部分的PointerToRawData
+ SizeOfRawData
,而不是虛擬對應部分。有關示例,請參閱http://www.strchr.com/creating_self-extracting_executables
另請注意,有些編譯器喜歡在最後一節之後附加調試信息。一定要去掉任何符號表或設置釋放模式,具體取決於你使用的編譯器,這樣才能工作。
相關問題
- 1. 確定圖像文件大小的PHP
- 2. 如何確定HICON圖標的大小?
- 3. 如何用Bootstrap精確定位標題?
- 4. 如何獲得精確的位圖文件大小?
- 5. 將圖像調整爲精確文件大小
- 6. 使用C++文件流(fstream),如何確定文件的大小?
- 7. 確定使用ImageMagick繪製的文字的圖像大小?
- 8. 使用精確大小的整數C++
- 9. 如何設置QPushButton的精確大小?
- 10. Bash確定文件大小
- 11. Javascript - 確定文件大小
- 12. 確定文件夾大小
- 13. matplotlib中的精確子圖大小
- 14. 如何使用PubMed API搜索精確標題的文章?
- 15. 使用xslt確定圖形的大小
- 16. 如何確定前的文件大小使用PHP捲曲
- 17. 如何使用Hive確定HDFS中的文件大小
- 18. 確定文件大小的適當圖像質量?
- 19. 如何將textview轉換爲精確大小的圖像,如屏幕截圖
- 20. 如何使用docx4j正確定位標題圖像?
- 21. 使用Mongoid確定文檔的大小
- 22. 如何用swift精確拖放圖像?
- 23. 使用javascript確定圖像大小(以像素爲單位)
- 24. 如何使用FileSystemObject.Size可靠地確定文件夾大小?
- 25. 正確確定JTable的一列的標題大小
- 26. 確定圖像文件大小之前縮放
- 27. 如果圖像大小javascript的條件是確定顯示div
- 28. 如何使用Python'struct'模塊獲取精確的結構大小
- 29. 使用java AWT確定標題的大小
- 30. 如何處理圖像的精確UITouch?
我發現有些東西在證書表等部分的外部存在,例如看看KERNEL32.DLL,重定位部分結束後跟證書表,所以以及我也會檢查數據目錄表。 – Lloyd