diff --git a/BurnOutSharp.Wrappers/PortableExecutable.cs b/BurnOutSharp.Wrappers/PortableExecutable.cs
index 4d1607dd..65ed4ac7 100644
--- a/BurnOutSharp.Wrappers/PortableExecutable.cs
+++ b/BurnOutSharp.Wrappers/PortableExecutable.cs
@@ -75,6 +75,235 @@ namespace BurnOutSharp.Wrappers
#endregion
+ ///
+ public byte[] Signature => _executable.Signature;
+
+ #region COFF File Header
+
+ ///
+ public Models.PortableExecutable.MachineType Machine => _executable.COFFFileHeader.Machine;
+
+ ///
+ public ushort NumberOfSections => _executable.COFFFileHeader.NumberOfSections;
+
+ ///
+ public uint TimeDateStamp => _executable.COFFFileHeader.TimeDateStamp;
+
+ ///
+ public uint PointerToSymbolTable => _executable.COFFFileHeader.PointerToSymbolTable;
+
+ ///
+ public uint NumberOfSymbols => _executable.COFFFileHeader.NumberOfSymbols;
+
+ ///
+ public uint SizeOfOptionalHeader => _executable.COFFFileHeader.SizeOfOptionalHeader;
+
+ ///
+ public Models.PortableExecutable.Characteristics Characteristics => _executable.COFFFileHeader.Characteristics;
+
+ #endregion
+
+ #region Optional Header
+
+ #region Standard Fields
+
+ ///
+ public Models.PortableExecutable.OptionalHeaderMagicNumber OH_Magic => _executable.OptionalHeader.Magic;
+
+ ///
+ public byte OH_MajorLinkerVersion => _executable.OptionalHeader.MajorLinkerVersion;
+
+ ///
+ public byte OH_MinorLinkerVersion => _executable.OptionalHeader.MinorLinkerVersion;
+
+ ///
+ public uint OH_SizeOfCode => _executable.OptionalHeader.SizeOfCode;
+
+ ///
+ public uint OH_SizeOfInitializedData => _executable.OptionalHeader.SizeOfInitializedData;
+
+ ///
+ public uint OH_SizeOfUninitializedData => _executable.OptionalHeader.SizeOfUninitializedData;
+
+ ///
+ public uint OH_AddressOfEntryPoint => _executable.OptionalHeader.AddressOfEntryPoint;
+
+ ///
+ public uint OH_BaseOfCode => _executable.OptionalHeader.BaseOfCode;
+
+ ///
+ public uint? OH_BaseOfData => _executable.OptionalHeader.Magic == Models.PortableExecutable.OptionalHeaderMagicNumber.PE32
+ ? (uint?)_executable.OptionalHeader.BaseOfData
+ : null;
+
+ #endregion
+
+ #region Windows-Specific Fields
+
+ ///
+ public ulong OH_ImageBase => _executable.OptionalHeader.Magic == Models.PortableExecutable.OptionalHeaderMagicNumber.PE32
+ ? _executable.OptionalHeader.ImageBase_PE32
+ : _executable.OptionalHeader.ImageBase_PE32Plus;
+
+ ///
+ public uint OH_SectionAlignment => _executable.OptionalHeader.SectionAlignment;
+
+ ///
+ public uint OH_FileAlignment => _executable.OptionalHeader.FileAlignment;
+
+ ///
+ public ushort OH_MajorOperatingSystemVersion => _executable.OptionalHeader.MajorOperatingSystemVersion;
+
+ ///
+ public ushort OH_MinorOperatingSystemVersion => _executable.OptionalHeader.MinorOperatingSystemVersion;
+
+ ///
+ public ushort OH_MajorImageVersion => _executable.OptionalHeader.MajorImageVersion;
+
+ ///
+ public ushort OH_MinorImageVersion => _executable.OptionalHeader.MinorImageVersion;
+
+ ///
+ public ushort OH_MajorSubsystemVersion => _executable.OptionalHeader.MajorSubsystemVersion;
+
+ ///
+ public ushort OH_MinorSubsystemVersion => _executable.OptionalHeader.MinorSubsystemVersion;
+
+ ///
+ public uint OH_Win32VersionValue => _executable.OptionalHeader.Win32VersionValue;
+
+ ///
+ public uint OH_SizeOfImage => _executable.OptionalHeader.SizeOfImage;
+
+ ///
+ public uint OH_SizeOfHeaders => _executable.OptionalHeader.SizeOfHeaders;
+
+ ///
+ public uint OH_CheckSum => _executable.OptionalHeader.CheckSum;
+
+ ///
+ public Models.PortableExecutable.WindowsSubsystem OH_Subsystem => _executable.OptionalHeader.Subsystem;
+
+ ///
+ public Models.PortableExecutable.DllCharacteristics OH_DllCharacteristics => _executable.OptionalHeader.DllCharacteristics;
+
+ ///
+ public ulong OH_SizeOfStackReserve => _executable.OptionalHeader.Magic == Models.PortableExecutable.OptionalHeaderMagicNumber.PE32
+ ? _executable.OptionalHeader.SizeOfStackReserve_PE32
+ : _executable.OptionalHeader.SizeOfStackReserve_PE32Plus;
+
+ ///
+ public ulong OH_SizeOfStackCommit => _executable.OptionalHeader.Magic == Models.PortableExecutable.OptionalHeaderMagicNumber.PE32
+ ? _executable.OptionalHeader.SizeOfStackCommit_PE32
+ : _executable.OptionalHeader.SizeOfStackCommit_PE32Plus;
+
+ ///
+ public ulong OH_SizeOfHeapReserve => _executable.OptionalHeader.Magic == Models.PortableExecutable.OptionalHeaderMagicNumber.PE32
+ ? _executable.OptionalHeader.SizeOfHeapReserve_PE32
+ : _executable.OptionalHeader.SizeOfHeapReserve_PE32Plus;
+
+ ///
+ public ulong OH_SizeOfHeapCommit => _executable.OptionalHeader.Magic == Models.PortableExecutable.OptionalHeaderMagicNumber.PE32
+ ? _executable.OptionalHeader.SizeOfHeapCommit_PE32
+ : _executable.OptionalHeader.SizeOfHeapCommit_PE32Plus;
+
+ ///
+ public uint OH_LoaderFlags => _executable.OptionalHeader.LoaderFlags;
+
+ ///
+ public uint OH_NumberOfRvaAndSizes => _executable.OptionalHeader.NumberOfRvaAndSizes;
+
+ #endregion
+
+ #region Data Directories
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_ExportTable => _executable.OptionalHeader.ExportTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_ImportTable => _executable.OptionalHeader.ImportTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_ResourceTable => _executable.OptionalHeader.ResourceTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_ExceptionTable => _executable.OptionalHeader.ExceptionTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_CertificateTable => _executable.OptionalHeader.CertificateTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_BaseRelocationTable => _executable.OptionalHeader.BaseRelocationTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_Debug => _executable.OptionalHeader.Debug;
+
+ ///
+ public ulong OH_Architecture => _executable.OptionalHeader.Architecture;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_GlobalPtr => _executable.OptionalHeader.GlobalPtr;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_ThreadLocalStorageTable => _executable.OptionalHeader.ThreadLocalStorageTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_LoadConfigTable => _executable.OptionalHeader.LoadConfigTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_BoundImport => _executable.OptionalHeader.BoundImport;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_ImportAddressTable => _executable.OptionalHeader.ImportAddressTable;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_DelayImportDescriptor => _executable.OptionalHeader.DelayImportDescriptor;
+
+ ///
+ public Models.PortableExecutable.DataDirectory OH_CLRRuntimeHeader => _executable.OptionalHeader.CLRRuntimeHeader;
+
+ ///
+ public ulong OH_Reserved => _executable.OptionalHeader.Reserved;
+
+ #endregion
+
+ #endregion
+
+ #region Tables
+
+ ///
+ public Models.PortableExecutable.SectionHeader[] SectionTable => _executable.SectionTable;
+
+ ///
+ public Models.PortableExecutable.COFFSymbolTableEntry[] COFFSymbolTable => _executable.COFFSymbolTable;
+
+ ///
+ public Models.PortableExecutable.COFFStringTable COFFStringTable => _executable.COFFStringTable;
+
+ ///
+ public Models.PortableExecutable.AttributeCertificateTableEntry[] AttributeCertificateTable => _executable.AttributeCertificateTable;
+
+ ///
+ public Models.PortableExecutable.DelayLoadDirectoryTable DelayLoadDirectoryTable => _executable.DelayLoadDirectoryTable;
+
+ #endregion
+
+ #region Sections
+
+ ///
+ public Models.PortableExecutable.DebugTable DebugTable => _executable.DebugTable;
+
+ ///
+ public Models.PortableExecutable.ExportTable ExportTable => _executable.ExportTable;
+
+ ///
+ public Models.PortableExecutable.ImportTable ImportTable => _executable.ImportTable;
+
+ ///
+ public Models.PortableExecutable.ResourceDirectoryTable ResourceDirectoryTable => _executable.ResourceDirectoryTable;
+
+ #endregion
+
// TODO: Determine what properties can be passed through
#endregion