diff --git a/BurnOutSharp.Wrappers/PortableExecutable.cs b/BurnOutSharp.Wrappers/PortableExecutable.cs
index a9925a2b..585a5f1b 100644
--- a/BurnOutSharp.Wrappers/PortableExecutable.cs
+++ b/BurnOutSharp.Wrappers/PortableExecutable.cs
@@ -325,6 +325,33 @@ namespace BurnOutSharp.Wrappers
#region Extension Properties
+ ///
+ /// Header padding data, if it exists
+ ///
+ public byte[] HeaderPaddingData
+ {
+ get
+ {
+ lock (_sourceDataLock)
+ {
+ // If we already have cached data, just use that immediately
+ if (_headerPaddingData != null)
+ return _headerPaddingData;
+
+ // TODO: Don't scan the known header data as well
+
+ // Populate the raw header padding data based on the source
+ uint headerStartAddress = Stub_NewExeHeaderAddr;
+ uint firstSectionAddress = SectionTable.Select(s => s.PointerToRawData).Where(s => s != 0).OrderBy(s => s).First();
+ int headerLength = (int)(firstSectionAddress - headerStartAddress);
+ _headerPaddingData = ReadFromDataSource((int)headerStartAddress, headerLength);
+
+ // Cache and return the header padding data, even if null
+ return _headerPaddingData;
+ }
+ }
+ }
+
///
/// Overlay data, if it exists
///
@@ -606,6 +633,11 @@ namespace BurnOutSharp.Wrappers
///
private Models.PortableExecutable.Executable _executable;
+ ///
+ /// Header padding data, if it exists
+ ///
+ private byte[] _headerPaddingData = null;
+
///
/// Overlay data, if it exists
///