public PEfile(string path) { if (!File.Exists(path)) { throw new Exception("File does not exist"); } file = new FileInfo(path); stream = new BinaryReader(file.OpenRead()); dosHeader = new DosHeader(stream); if (dosHeader.Magic != "MZ") { throw new Exception("File does not appear to be executable"); } imageHeader = new ImageHeader(stream, dosHeader.ImageHeaderAddress); if (imageHeader.Magic != "PE\0\0") { throw new Exception("File does not appear to be a WIN32 exe"); } imageOptionalHeader = new ImageOptionalHeader(stream); imageSectionHeaders = new ImageSectionHeader[imageHeader.NumberOfSections]; for (int x = 0; x < imageHeader.NumberOfSections; x++) { imageSectionHeaders[x] = new ImageSectionHeader(stream); } CodeOffset = imageOptionalHeader.BaseOfCode; CodeSize = imageOptionalHeader.SizeOfCode; stream.Close(); }
public PEfile(string path) { if(!File.Exists(path)) throw new Exception("File does not exist"); file=new FileInfo(path); stream=new BinaryReader(file.OpenRead()); dosHeader=new DosHeader(stream); if(dosHeader.Magic!="MZ") throw new Exception("File does not appear to be executable"); imageHeader=new ImageHeader(stream,dosHeader.ImageHeaderAddress); if(imageHeader.Magic!="PE\0\0") throw new Exception("File does not appear to be a WIN32 exe"); imageOptionalHeader=new ImageOptionalHeader(stream); imageSectionHeaders=new ImageSectionHeader[imageHeader.NumberOfSections]; for(int x=0;x<imageHeader.NumberOfSections;x++) { imageSectionHeaders[x] = new ImageSectionHeader(stream); } CodeOffset=imageOptionalHeader.BaseOfCode; CodeSize=imageOptionalHeader.SizeOfCode; stream.Close(); }