2015年1月7日 星期三

定位 PE file section table 位置

PE header 中有一個欄位叫做 SizeOfHeaders.
但是這個欄位實際上只是方便給人看得, PE 檔案實際上的 header 大小不一定要跟這個值一樣
程式也可以順利執行

因此, 當要定位 section table 時, 也不能用 SizeOfHeaders 來算
正確的算法應該是

dosHeader.e_lfanew +
sizeof(ntHeaders.FileHeader) +
sizeof(ntHeaders.Signature) +
ntHeaders.FileHeader.SizeOfOptionalHeader;

Reference:
http://bbs.pediy.com/showthread.php?t=152786

沒有留言:

張貼留言