internal void Read(PeReader rdr) { rdr.SetPosition(0); if (t == PeFileType.Image) { dos = new DOSHeader(this); dos.Read(rdr); rdr.SetPosition(dos.PEHeaderOffset); sign = rdr.ReadBytes(4); pe = new PEHeader(this); pe.Read(rdr); op = new OptionalHeader(this); op.Read(rdr); sects = new SectionHeaders(this); sects.Read(rdr); certs = new CertificateDirectory(op.DataDirectories[DataDirectoryType.Certificate]); certs.Load(rdr, op.DataDirectories[DataDirectoryType.Certificate].Address.Value); } else if (t == PeFileType.Object) { pe = new PEHeader(this); pe.Read(rdr); sects = new SectionHeaders(this); sects.Read(rdr); } }
public static PeFile Read(Stream str, PeFileType type) { PeFile f = new PeFile(type); PeReader rdr = new PeReader(str); f.Read(rdr); return(f); }
public abstract void Read(PeReader rdr);