Невозможно прочитать За пределами конца потока
Я нашел ссылку: http://code.cheesydesign.com/?p=572 о чтении PE-файлов. Я использую этот код, но, к сожалению, я получаю сообщение об ошибке на ntHeadersSignature (на reader.ReadUint32
). Он говорит, что не может читать вне потока. Интересно, почему и как исправить эту ошибку, так как я попытался с peekchar и прочитал его с readint32, преобразование в uint не работает. Спасибо за вашу искреннюю помощь!
public PeHeaderReader(string filePath)
{
// Read in the DLL or EXE and get the timestamp
using (FileStream stream = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
BinaryReader reader = new BinaryReader(stream);
dosHeader = FromBinaryReader<IMAGE_DOS_HEADER>(reader);
// Add 4 bytes to the offset
stream.Seek(dosHeader.e_lfanew, SeekOrigin.Begin);
UInt32 ntHeadersSignature = reader.ReadUInt32(); //HERE IS THE ERROR
fileHeader = FromBinaryReader<IMAGE_FILE_HEADER>(reader);
if (this.Is32BitHeader)
{
optionalHeader32 = FromBinaryReader<IMAGE_OPTIONAL_HEADER32>(reader);
}
else
{
optionalHeader64 = FromBinaryReader<IMAGE_OPTIONAL_HEADER64>(reader);
}
imageSectionHeaders = new IMAGE_SECTION_HEADER[fileHeader.NumberOfSections];
for(int headerNo = 0; headerNo < imageSectionHeaders.Length; ++headerNo)
{
imageSectionHeaders[headerNo] = FromBinaryReader<IMAGE_SECTION_HEADER>(reader);
}
}
}