Use exposed model directly in more places

This commit is contained in:
Matt Nadareski
2023-09-15 22:21:05 -04:00
parent 57eaa1f04c
commit a52d45f7c2
117 changed files with 876 additions and 7138 deletions

View File

@@ -34,7 +34,7 @@ namespace BinaryObjectScanner.FileType
return null;
// Derive the version, if possible
var typeAndVersion = mkb.Records.FirstOrDefault(r => r.RecordType == SabreTools.Models.AACS.RecordType.TypeAndVersion);
var typeAndVersion = mkb.Model.Records.FirstOrDefault(r => r.RecordType == SabreTools.Models.AACS.RecordType.TypeAndVersion);
if (typeAndVersion == null)
return "AACS (Unknown Version)";
else

View File

@@ -33,7 +33,7 @@ namespace BinaryObjectScanner.FileType
return null;
// Format the date
string date = $"{svm.Year:0000}/{svm.Month:00}/{svm.Day:00}";
string date = $"{svm.Model.Year:0000}/{svm.Model.Month:00}/{svm.Model.Day:00}";
// Return the formatted value
return $"BD+ {date}";

View File

@@ -21,7 +21,7 @@ namespace BinaryObjectScanner.GameEngine
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -15,7 +15,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -19,7 +19,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -41,7 +41,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -17,7 +17,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -16,14 +16,14 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// This check may be overly limiting, as it excludes the sample provided to DiE (https://github.com/horsicq/Detect-It-Easy/issues/102).
// TODO: Find further samples and invesitgate if the "peC" section is only present on specific versions.
bool peCSection = pex.ContainsSection("peC", exact: true);
bool importTableMatch = (pex.ImportTable?.ImportDirectoryTable?.Any(idte => idte.Name == "KeRnEl32.dLl") ?? false);
bool importTableMatch = (pex.Model.ImportTable?.ImportDirectoryTable?.Any(idte => idte.Name == "KeRnEl32.dLl") ?? false);
if (peCSection && importTableMatch)
return "HyperTech CrackProof";

View File

@@ -19,7 +19,7 @@ namespace BinaryObjectScanner.Packer
return null;
// Check for "Inno" in the reserved words
if (nex.Stub_Reserved2[4] == 0x6E49 && nex.Stub_Reserved2[5] == 0x6F6E)
if (nex.Model.Stub?.Header?.Reserved2[4] == 0x6E49 && nex.Model.Stub?.Header?.Reserved2[5] == 0x6F6E)
{
string version = GetOldVersion(file, nex);
if (!string.IsNullOrWhiteSpace(version))
@@ -35,7 +35,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -15,7 +15,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -15,7 +15,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -21,7 +21,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,12 +12,12 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// 0x4F434550 is "PECO"
if (pex.PointerToSymbolTable == 0x4F434550)
if (pex.Model.COFFFileHeader?.PointerToSymbolTable == 0x4F434550)
return "PE Compact v1.x";
// TODO: Get more granular version detection. PiD is somehow able to detect version ranges based

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -20,7 +20,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -15,7 +15,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

File diff suppressed because it is too large Load Diff

View File

@@ -47,7 +47,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -120,7 +120,7 @@ namespace BinaryObjectScanner.Packer
private FormatProperty MatchesNEVersion(NewExecutable nex)
{
// TODO: Offset is _not_ the EXE header address, rather where the data starts. Fix this.
switch (nex.Stub_NewExeHeaderAddr)
switch (nex.Model.Stub?.Header?.NewExeHeaderAddr)
{
case 0x84b0:
return new FormatProperty { Dll = false, ArchiveStart = 0x11, ArchiveEnd = -1, InitText = false, FilenamePosition = 0x04, NoCrc = true };

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Packer
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -37,7 +37,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -23,7 +23,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -50,7 +50,7 @@ namespace BinaryObjectScanner.Protection
// TODO: Add version detection for Alpha-ROM.
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -44,7 +44,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -69,7 +69,7 @@ namespace BinaryObjectScanner.Protection
return $"ByteShield Activation Client {pex.GetInternalVersion()}";
// Found in "ByteShield.dll" in Redump entry 6236
name = pex.ExportTable?.ExportDirectoryTable?.Name;
name = pex.Model.ExportTable?.ExportDirectoryTable?.Name;
if (name?.Equals("ByteShield Client") == true)
return "ByteShield Component Module";

View File

@@ -9,7 +9,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -102,7 +102,7 @@ namespace BinaryObjectScanner.Protection
// Check the imported-name table
// Found in "h3blade.exe" in Redump entry 85077.
bool importedNameTableEntries = nex.ImportedNameTable?
bool importedNameTableEntries = nex.Model.ImportedNameTable?
.Select(kvp => kvp.Value)
.Where(inte => inte.NameString != null)
.Select(inte => Encoding.ASCII.GetString(inte.NameString))
@@ -112,7 +112,7 @@ namespace BinaryObjectScanner.Protection
// Check the nonresident-name table
// Found in "CDCOPS.DLL" in Redump entry 85077.
bool nonresidentNameTableEntries = nex.NonResidentNameTable?
bool nonresidentNameTableEntries = nex.Model.NonResidentNameTable?
.Where(nrnte => nrnte.NameString != null)
.Select(nrnte => Encoding.ASCII.GetString(nrnte.NameString))
.Any(s => s.Contains("CDcops assembly-language DLL")) ?? false;
@@ -126,7 +126,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -27,26 +27,26 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// TODO: Investigate the numerous ".guard" sections present in "Randevu.exe" in Redump entry 97142.
// Get the export directory table
if (pex.ExportTable?.ExportDirectoryTable != null)
if (pex.Model.ExportTable?.ExportDirectoryTable != null)
{
// Found in "cdguard.dll" in Redump entry 97142 and IA item "pahgeby-he3hakomkou".
bool match = pex.ExportTable.ExportDirectoryTable.Name?.Equals("cdguard.dll", StringComparison.OrdinalIgnoreCase) == true;
bool match = pex.Model.ExportTable.ExportDirectoryTable.Name?.Equals("cdguard.dll", StringComparison.OrdinalIgnoreCase) == true;
if (match)
return "CD-Guard Copy Protection System";
}
// Get the import directory table
if (pex.ImportTable?.ImportDirectoryTable != null)
if (pex.Model.ImportTable?.ImportDirectoryTable != null)
{
// Found in "Randevu.exe" in Redump entry 97142.
bool match = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name?.Equals("cdguard.dll", StringComparison.OrdinalIgnoreCase) == true);
bool match = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name?.Equals("cdguard.dll", StringComparison.OrdinalIgnoreCase) == true);
if (match)
return "CD-Guard Copy Protection System";
}

View File

@@ -10,7 +10,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -30,7 +30,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -11,15 +11,15 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// TODO: Indicates Hypertech Crack Proof as well?
//// Get the import directory table
//if (pex.ImportTable?.ImportDirectoryTable != null)
//if (pex.Model.ImportTable?.ImportDirectoryTable != null)
//{
// bool match = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "KeRnEl32.dLl");
// bool match = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "KeRnEl32.dLl");
// if (match)
// return "CDSHiELD SE";
//}

View File

@@ -18,15 +18,15 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// Get the export directory table
if (pex.ExportTable?.ExportDirectoryTable != null)
if (pex.Model.ExportTable?.ExportDirectoryTable != null)
{
// Found in "cenega.dll" in IA item "speed-pack".
bool match = pex.ExportTable.ExportDirectoryTable.Name?.Equals("ProtectDVD.dll", StringComparison.OrdinalIgnoreCase) == true;
bool match = pex.Model.ExportTable.ExportDirectoryTable.Name?.Equals("ProtectDVD.dll", StringComparison.OrdinalIgnoreCase) == true;
if (match)
return "Cenega ProtectDVD";
}

View File

@@ -26,7 +26,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -26,7 +26,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -15,7 +15,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -34,7 +34,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -41,7 +41,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -25,7 +25,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -19,17 +19,17 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// Most every tested sample of "engine32.dll" has a product name of "engine32", and the file description typically follows the naming pattern of "[Game Name] DLL-helper".
// Detects Engine32 within the game executables that contain it.
if (pex.ImportTable?.ImportDirectoryTable != null && pex.ImportHintNameTable != null)
if (pex.Model.ImportTable?.ImportDirectoryTable != null && pex.Model.ImportTable?.HintNameTable != null)
{
bool importDirectoryTableMatch = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name?.Equals("ENGINE32.DLL", StringComparison.OrdinalIgnoreCase) == true);
bool hintNameTableMatch = pex.ImportHintNameTable.Any(ihne => ihne == "InitEngine");
bool importDirectoryTableMatch = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name?.Equals("ENGINE32.DLL", StringComparison.OrdinalIgnoreCase) == true);
bool hintNameTableMatch = pex.Model.ImportTable?.HintNameTable.Any(ihne => ihne.Name == "InitEngine") ?? false;
// The Hint/Name Table Entry "DeinitEngine" is present in every tested sample, aside from TOCA Race Driver 2 (Redump entries 104593-104596).
@@ -38,10 +38,10 @@ namespace BinaryObjectScanner.Protection
}
// Detects Engine32 within the file "engine32.dll".
if (pex.ExportNameTable != null)
if (pex.Model.ExportTable?.ExportNameTable?.Strings != null)
{
bool exportNameTableMatch1 = pex.ExportNameTable.Any(s => s == "engine32.dll");
bool exportNameTableMatch2 = pex.ExportNameTable.Any(s => s == "DeinitEngine");
bool exportNameTableMatch1 = pex.Model.ExportTable.ExportNameTable.Strings.Any(s => s == "engine32.dll");
bool exportNameTableMatch2 = pex.Model.ExportTable.ExportNameTable.Strings.Any(s => s == "DeinitEngine");
if (exportNameTableMatch1 && exportNameTableMatch2)
return "Engine32";

View File

@@ -14,7 +14,7 @@ namespace BurnOutSharp.ProtectionType
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -25,9 +25,9 @@ namespace BurnOutSharp.ProtectionType
return $"Games for Windows LIVE {pex.GetInternalVersion()}";
// Get the import directory table
if (pex.ImportTable?.ImportDirectoryTable != null)
if (pex.Model.ImportTable?.ImportDirectoryTable != null)
{
bool match = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "xlive.dll");
bool match = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "xlive.dll");
if (match)
return "Games for Windows LIVE";
}

View File

@@ -23,7 +23,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -36,7 +36,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -16,7 +16,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -33,7 +33,7 @@ namespace BinaryObjectScanner.Protection
return $"Stardock Product Activation {pex.GetInternalVersion()}";
// TODO: Check for CVP* instead?
bool containsCheck = pex.ExportNameTable?.Any(s => s?.StartsWith("CVPInitializeClient") ?? false) ?? false;
bool containsCheck = pex.Model.ExportTable?.ExportNameTable?.Strings?.Any(s => s?.StartsWith("CVPInitializeClient") ?? false) ?? false;
bool containsCheck2 = false;
// Get the .rdata section strings, if they exist

View File

@@ -26,7 +26,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -16,15 +16,15 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// Get the .ext section, if it exists
if (pex.ContainsSection(".ext ", exact: true))
{
bool importTableMatches = (pex.ImportTable?.ImportDirectoryTable?.Any(idte => idte.Name == "kernel32.dll") ?? false)
&& (pex.ImportHintNameTable?.Any(s => s == "VirtualProtect") ?? false);
bool importTableMatches = (pex.Model.ImportTable?.ImportDirectoryTable?.Any(idte => idte.Name == "kernel32.dll") ?? false)
&& (pex.Model.ImportTable?.HintNameTable?.Any(s => s.Name == "VirtualProtect") ?? false);
// Get the .dcrtext section, if it exists
if (pex.ContainsSection(".dcrtext") && importTableMatches)

View File

@@ -23,7 +23,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -49,7 +49,7 @@ namespace BinaryObjectScanner.Protection
// }, "LaserLok 5"),
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -63,14 +63,14 @@ namespace BinaryObjectScanner.Protection
0x6C, 0x61, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x73,
0x2E, 0x50, 0x45
};
int endDosStub = (int)pex.Stub_NewExeHeaderAddr;
int endDosStub = (int)(pex.Model.Stub?.Header?.NewExeHeaderAddr ?? 0);
bool containsCheck = pex.StubExecutableData.FirstPosition(check, out int position);
// Check the executable tables
bool containsCheck2 = (pex.ImportTable?.HintNameTable.Any(hnte => hnte.Name == "GetModuleHandleA") ?? false)
&& (pex.ImportTable?.HintNameTable.Any(hnte => hnte.Name == "GetProcAddress") ?? false)
&& (pex.ImportTable?.HintNameTable.Any(hnte => hnte.Name == "LoadLibraryA") ?? false)
&& (pex.ImportTable?.ImportDirectoryTable.Any(idte => idte.Name == "KERNEL32.dll") ?? false);
bool containsCheck2 = (pex.Model.ImportTable?.HintNameTable.Any(hnte => hnte.Name == "GetModuleHandleA") ?? false)
&& (pex.Model.ImportTable?.HintNameTable.Any(hnte => hnte.Name == "GetProcAddress") ?? false)
&& (pex.Model.ImportTable?.HintNameTable.Any(hnte => hnte.Name == "LoadLibraryA") ?? false)
&& (pex.Model.ImportTable?.ImportDirectoryTable.Any(idte => idte.Name == "KERNEL32.dll") ?? false);
int position2 = -1;

View File

@@ -11,7 +11,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -68,7 +68,7 @@ namespace BinaryObjectScanner.Protection
internal string CDillaCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -34,7 +34,7 @@ namespace BinaryObjectScanner.Protection
internal string CactusDataShieldCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Protection
internal string FLEXnetCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -22,7 +22,7 @@ namespace BinaryObjectScanner.Protection
internal string RipGuardCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -45,7 +45,7 @@ namespace BinaryObjectScanner.Protection
return null;
// Check for the CDAC01AA name string.
bool cdac01aaNameFound = nex.ResidentNameTable.Where(rnte => rnte?.NameString != null)
bool cdac01aaNameFound = nex.Model.ResidentNameTable.Where(rnte => rnte?.NameString != null)
.Select(rnte => Encoding.ASCII.GetString(rnte.NameString))
.Any(s => s.Contains("CDAC01AA"));
@@ -71,7 +71,7 @@ namespace BinaryObjectScanner.Protection
internal string SafeCastCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -79,9 +79,9 @@ namespace BinaryObjectScanner.Protection
// TODO: Investigate string table entries: "CDWP02DG", "CDWP02DG", "CDWS02DG"
// Get the import directory table, if it exists
if (pex.ImportTable?.ImportDirectoryTable != null)
if (pex.Model.ImportTable?.ImportDirectoryTable != null)
{
if (pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name?.Equals("CdaC14BA.dll", StringComparison.OrdinalIgnoreCase) == true))
if (pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name?.Equals("CdaC14BA.dll", StringComparison.OrdinalIgnoreCase) == true))
return "SafeCast";
}

View File

@@ -45,17 +45,17 @@ namespace BinaryObjectScanner.Protection
internal string SafeDiscCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
// Found in Redump entry 57986.
bool hintNameTableMatch = pex.ImportHintNameTable?.Any(ihne => ihne == "LTDLL_Authenticate") ?? false;
bool hintNameTableMatch = pex.Model.ImportTable?.HintNameTable?.Any(ihne => ihne.Name == "LTDLL_Authenticate") ?? false;
if (hintNameTableMatch)
return "SafeDisc Lite";
// Found in Redump entry 57986.
bool importTableMatch = (pex.ImportTable?.ImportDirectoryTable?.Any(idte => idte.Name == "ltdll.dll") ?? false);
bool importTableMatch = (pex.Model.ImportTable?.ImportDirectoryTable?.Any(idte => idte.Name == "ltdll.dll") ?? false);
if (importTableMatch)
return "SafeDisc Lite";

View File

@@ -49,7 +49,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -19,7 +19,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -20,7 +20,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -53,9 +53,9 @@ namespace BinaryObjectScanner.Protection
}
// Get the export name table
if (pex.ExportNameTable != null)
if (pex.Model.ExportTable?.ExportNameTable?.Strings != null)
{
if (pex.ExportNameTable.Any(s => s == "DllInstallSbcp"))
if (pex.Model.ExportTable.ExportNameTable.Strings.Any(s => s == "DllInstallSbcp"))
return "MediaMax CD-3";
}

View File

@@ -26,7 +26,7 @@ namespace BinaryObjectScanner.Protection
{
// Most of the relevant executables are highly obfuscated, making executable detection mostly impractical.
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -10,7 +10,7 @@ namespace BurnOutSharp.ProtectionType
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -20,7 +20,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -17,7 +17,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -27,7 +27,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -27,7 +27,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -77,7 +77,7 @@ namespace BinaryObjectScanner.Protection
}
// 0x504B5653 is "SVKP"
if (pex.PointerToSymbolTable == 0x504B5653)
if (pex.Model.COFFFileHeader?.PointerToSymbolTable == 0x504B5653)
return "SVKP";
// Get the .svkp section, if it exists.

View File

@@ -16,7 +16,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -18,7 +18,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -18,7 +18,7 @@ namespace BurnOutSharp.ProtectionType
// TODO: Investigate ".pseudo" section found in "tvdm.dll" in Redump entry 68166.
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -86,17 +86,17 @@ namespace BurnOutSharp.ProtectionType
}
// Get the import directory table, if it exists
if (pex.ImportTable?.ImportDirectoryTable != null)
if (pex.Model.ImportTable?.ImportDirectoryTable != null)
{
bool match = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "dvm.dll");
bool match = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "dvm.dll");
if (match)
return "SolidShield EXE Wrapper v1";
match = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "activation.x86.dll");
match = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "activation.x86.dll");
if (match)
return "SolidShield EXE Wrapper v2";
match = pex.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "activation.x64.dll");
match = pex.Model.ImportTable.ImportDirectoryTable.Any(idte => idte.Name == "activation.x64.dll");
if (match)
return "SolidShield EXE Wrapper v2";
}

View File

@@ -21,7 +21,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;
@@ -52,10 +52,10 @@ namespace BinaryObjectScanner.Protection
// return $"StarForce {Tools.Utilities.GetInternalVersion(pex)}";
// Check the export name table
if (pex.ExportNameTable != null)
if (pex.Model.ExportTable?.ExportNameTable?.Strings != null)
{
// TODO: Should we just check for "PSA_*" instead of a single entry?
if (pex.ExportNameTable.Any(s => s == "PSA_GetDiscLabel"))
if (pex.Model.ExportTable.ExportNameTable.Strings.Any(s => s == "PSA_GetDiscLabel"))
return $"StarForce {pex.GetInternalVersion()}";
}

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -12,7 +12,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BurnOutSharp.ProtectionType
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -29,7 +29,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -10,7 +10,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -20,7 +20,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,7 +13,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -16,7 +16,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -32,7 +32,7 @@ namespace BinaryObjectScanner.Protection
public string CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex?.SectionTable;
var sections = pex?.Model.SectionTable;
if (sections == null)
return null;

View File

@@ -13,21 +13,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Records
/// <inheritdoc cref="Models.AACS.MediaKeyBlock.Records"/>
#if NET48
public Record[] Records => this.Model.Records;
#else
public Record?[]? Records => this.Model.Records;
#endif
#endregion
#endregion
#region Constructors
/// <inheritdoc/>

View File

@@ -13,50 +13,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
/// <inheritdoc cref="Models.BDPlus.SVM.Signature"/>
#if NET48
public string Signature => this.Model.Signature;
#else
public string? Signature => this.Model.Signature;
#endif
/// <inheritdoc cref="Models.BDPlus.SVM.Unknown1"/>
#if NET48
public byte[] Unknown1 => this.Model.Unknown1;
#else
public byte[]? Unknown1 => this.Model.Unknown1;
#endif
/// <inheritdoc cref="Models.BDPlus.SVM.Year"/>
public ushort Year => this.Model.Year;
/// <inheritdoc cref="Models.BDPlus.SVM.Month"/>
public byte Month => this.Model.Month;
/// <inheritdoc cref="Models.BDPlus.SVM.Day"/>
public byte Day => this.Model.Day;
/// <inheritdoc cref="Models.BDPlus.SVM.Unknown2"/>
#if NET48
public byte[] Unknown2 => this.Model.Unknown2;
#else
public byte[]? Unknown2 => this.Model.Unknown2;
#endif
/// <inheritdoc cref="Models.BDPlus.SVM.Length"/>
public uint Length => this.Model.Length;
/// <inheritdoc cref="Models.BDPlus.SVM.Data"/>
#if NET48
public byte[] Data => this.Model.Data;
#else
public byte[]? Data => this.Model.Data;
#endif
#endregion
#region Constructors
/// <inheritdoc/>

View File

@@ -14,46 +14,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Header
/// <inheritdoc cref="Models.BFPK.Header.Magic"/>
#if NET48
public string Magic => this.Model.Header.Magic;
#else
public string? Magic => this.Model.Header?.Magic;
#endif
/// <inheritdoc cref="Models.BFPK.Header.Version"/>
#if NET48
public int Version => this.Model.Header.Version;
#else
public int? Version => this.Model.Header?.Version;
#endif
/// <inheritdoc cref="Models.BFPK.Header.Files"/>
#if NET48
public int Files => this.Model.Header.Files;
#else
public int? Files => this.Model.Header?.Files;
#endif
#endregion
#region Files
/// <inheritdoc cref="Models.BFPK.Archive.Files"/>
#if NET48
public SabreTools.Models.BFPK.FileEntry[] FileTable => this.Model.Files;
#else
public SabreTools.Models.BFPK.FileEntry?[]? FileTable => this.Model.Files;
#endif
#endregion
#endregion
#region Constructors
/// <inheritdoc/>
@@ -144,12 +104,12 @@ namespace BinaryObjectScanner.Wrappers
public bool ExtractAll(string outputDirectory)
{
// If we have no files
if (FileTable == null || FileTable.Length == 0)
if (this.Model.Files == null || this.Model.Files.Length == 0)
return false;
// Loop through and extract all files to the output
bool allExtracted = true;
for (int i = 0; i < FileTable.Length; i++)
for (int i = 0; i < this.Model.Files.Length; i++)
{
allExtracted &= ExtractFile(i, outputDirectory);
}
@@ -166,15 +126,15 @@ namespace BinaryObjectScanner.Wrappers
public bool ExtractFile(int index, string outputDirectory)
{
// If we have no files
if (Files == 0 || FileTable == null || FileTable.Length == 0)
if (this.Model.Files == null || this.Model.Files.Length == 0)
return false;
// If we have an invalid index
if (index < 0 || index >= FileTable.Length)
if (index < 0 || index >= this.Model.Files.Length)
return false;
// Get the file information
var file = FileTable[index];
var file = this.Model.Files[index];
if (file == null)
return false;

View File

@@ -15,61 +15,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Header
/// <inheritdoc cref="Models.BSP.Header.Version"/>
#if NET48
public uint Version => this.Model.Header.Version;
#else
public uint? Version => this.Model.Header?.Version;
#endif
#endregion
#region Lumps
/// <inheritdoc cref="Models.BSP.File.Lumps"/>
#if NET48
public SabreTools.Models.BSP.Lump[] Lumps => this.Model.Lumps;
#else
public SabreTools.Models.BSP.Lump?[]? Lumps => this.Model.Lumps;
#endif
#endregion
#region Texture Header
/// <inheritdoc cref="Models.BSP.TextureHeader.TextureCount"/>
#if NET48
public uint TextureCount => this.Model.TextureHeader.TextureCount;
#else
public uint? TextureCount => this.Model.TextureHeader?.TextureCount;
#endif
/// <inheritdoc cref="Models.BSP.TextureHeader.Offsets"/>
#if NET48
public uint[] Offsets => this.Model.TextureHeader.Offsets;
#else
public uint[]? Offsets => this.Model.TextureHeader?.Offsets;
#endif
#endregion
#region Textures
/// <inheritdoc cref="Models.BSP.File.Textures"/>
#if NET48
public SabreTools.Models.BSP.Texture[] Textures => this.Model.Textures;
#else
public SabreTools.Models.BSP.Texture?[]? Textures => this.Model.Textures;
#endif
#endregion
#endregion
#region Constructors
/// <inheritdoc/>
@@ -172,12 +117,12 @@ namespace BinaryObjectScanner.Wrappers
public bool ExtractAllLumps(string outputDirectory)
{
// If we have no lumps
if (Lumps == null || Lumps.Length == 0)
if (this.Model.Lumps == null || this.Model.Lumps.Length == 0)
return false;
// Loop through and extract all lumps to the output
bool allExtracted = true;
for (int i = 0; i < Lumps.Length; i++)
for (int i = 0; i < this.Model.Lumps.Length; i++)
{
allExtracted &= ExtractLump(i, outputDirectory);
}
@@ -194,15 +139,15 @@ namespace BinaryObjectScanner.Wrappers
public bool ExtractLump(int index, string outputDirectory)
{
// If we have no lumps
if (Lumps == null || Lumps.Length == 0)
if (this.Model.Lumps == null || this.Model.Lumps.Length == 0)
return false;
// If the lumps index is invalid
if (index < 0 || index >= Lumps.Length)
if (index < 0 || index >= this.Model.Lumps.Length)
return false;
// Get the lump
var lump = Lumps[index];
var lump = this.Model.Lumps[index];
if (lump == null)
return false;
@@ -268,12 +213,12 @@ namespace BinaryObjectScanner.Wrappers
public bool ExtractAllTextures(string outputDirectory)
{
// If we have no textures
if (Offsets == null || Offsets.Length == 0)
if (this.Model.TextureHeader?.Offsets == null || this.Model.TextureHeader.Offsets.Length == 0)
return false;
// Loop through and extract all lumps to the output
bool allExtracted = true;
for (int i = 0; i < Offsets.Length; i++)
for (int i = 0; i < this.Model.TextureHeader.Offsets.Length; i++)
{
allExtracted &= ExtractTexture(i, outputDirectory);
}
@@ -290,15 +235,15 @@ namespace BinaryObjectScanner.Wrappers
public bool ExtractTexture(int index, string outputDirectory)
{
// If we have no textures
if (Textures == null || Textures.Length == 0)
if (this.Model.Textures == null || this.Model.Textures.Length == 0)
return false;
// If the texture index is invalid
if (index < 0 || index >= Textures.Length)
if (index < 0 || index >= this.Model.Textures.Length)
return false;
// Get the texture
var texture = Textures[index];
var texture = this.Model.Textures[index];
if (texture == null)
return false;

View File

@@ -14,202 +14,24 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Header
/// <inheritdoc cref="Models.CFB.FileHeader.Signature"/>
#if NET48
public ulong Signature => this.Model.Header.Signature;
#else
public ulong? Signature => this.Model.Header?.Signature;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.CLSID"/>
#if NET48
public Guid CLSID => this.Model.Header.CLSID;
#else
public Guid? CLSID => this.Model.Header?.CLSID;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.MinorVersion"/>
#if NET48
public ushort MinorVersion => this.Model.Header.MinorVersion;
#else
public ushort? MinorVersion => this.Model.Header?.MinorVersion;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.MajorVersion"/>
#if NET48
public ushort MajorVersion => this.Model.Header.MajorVersion;
#else
public ushort? MajorVersion => this.Model.Header?.MajorVersion;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.ByteOrder"/>
#if NET48
public ushort ByteOrder => this.Model.Header.ByteOrder;
#else
public ushort? ByteOrder => this.Model.Header?.ByteOrder;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.SectorShift"/>
#if NET48
public ushort SectorShift => this.Model.Header.SectorShift;
#else
public ushort? SectorShift => this.Model.Header?.SectorShift;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.MiniSectorShift"/>
#if NET48
public ushort MiniSectorShift => this.Model.Header.MiniSectorShift;
#else
public ushort? MiniSectorShift => this.Model.Header?.MiniSectorShift;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.Reserved"/>
#if NET48
public byte[] Reserved => this.Model.Header.Reserved;
#else
public byte[]? Reserved => this.Model.Header?.Reserved;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.NumberOfDirectorySectors"/>
#if NET48
public uint NumberOfDirectorySectors => this.Model.Header.NumberOfDirectorySectors;
#else
public uint? NumberOfDirectorySectors => this.Model.Header?.NumberOfDirectorySectors;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.NumberOfFATSectors"/>
#if NET48
public uint NumberOfFATSectors => this.Model.Header.NumberOfFATSectors;
#else
public uint? NumberOfFATSectors => this.Model.Header?.NumberOfFATSectors;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.FirstDirectorySectorLocation"/>
#if NET48
public uint FirstDirectorySectorLocation => this.Model.Header.FirstDirectorySectorLocation;
#else
public uint? FirstDirectorySectorLocation => this.Model.Header?.FirstDirectorySectorLocation;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.TransactionSignatureNumber"/>
#if NET48
public uint TransactionSignatureNumber => this.Model.Header.TransactionSignatureNumber;
#else
public uint? TransactionSignatureNumber => this.Model.Header?.TransactionSignatureNumber;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.MiniStreamCutoffSize"/>
#if NET48
public uint MiniStreamCutoffSize => this.Model.Header.MiniStreamCutoffSize;
#else
public uint? MiniStreamCutoffSize => this.Model.Header?.MiniStreamCutoffSize;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.FirstMiniFATSectorLocation"/>
#if NET48
public uint FirstMiniFATSectorLocation => this.Model.Header.FirstMiniFATSectorLocation;
#else
public uint? FirstMiniFATSectorLocation => this.Model.Header?.FirstMiniFATSectorLocation;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.NumberOfMiniFATSectors"/>
#if NET48
public uint NumberOfMiniFATSectors => this.Model.Header.NumberOfMiniFATSectors;
#else
public uint? NumberOfMiniFATSectors => this.Model.Header?.NumberOfMiniFATSectors;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.FirstDIFATSectorLocation"/>
#if NET48
public uint FirstDIFATSectorLocation => this.Model.Header.FirstDIFATSectorLocation;
#else
public uint? FirstDIFATSectorLocation => this.Model.Header?.FirstDIFATSectorLocation;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.NumberOfDIFATSectors"/>
#if NET48
public uint NumberOfDIFATSectors => this.Model.Header.NumberOfDIFATSectors;
#else
public uint? NumberOfDIFATSectors => this.Model.Header?.NumberOfDIFATSectors;
#endif
/// <inheritdoc cref="Models.CFB.FileHeader.DIFAT"/>
#if NET48
public SabreTools.Models.CFB.SectorNumber[] DIFAT => this.Model.Header.DIFAT;
#else
public SabreTools.Models.CFB.SectorNumber?[]? DIFAT => this.Model.Header?.DIFAT;
#endif
#endregion
#region FAT Sector Numbers
/// <inheritdoc cref="Models.CFB.Binary.FATSectorNumbers"/>
#if NET48
public SabreTools.Models.CFB.SectorNumber[] FATSectorNumbers => this.Model.FATSectorNumbers;
#else
public SabreTools.Models.CFB.SectorNumber?[]? FATSectorNumbers => this.Model.FATSectorNumbers;
#endif
#endregion
#region Mini FAT Sector Numbers
/// <inheritdoc cref="Models.CFB.Binary.MiniFATSectorNumbers"/>
#if NET48
public SabreTools.Models.CFB.SectorNumber[] MiniFATSectorNumbers => this.Model.MiniFATSectorNumbers;
#else
public SabreTools.Models.CFB.SectorNumber?[]? MiniFATSectorNumbers => this.Model.MiniFATSectorNumbers;
#endif
#endregion
#region DIFAT Sector Numbers
/// <inheritdoc cref="Models.CFB.Binary.DIFATSectorNumbers"/>
#if NET48
public SabreTools.Models.CFB.SectorNumber[] DIFATSectorNumbers => this.Model.DIFATSectorNumbers;
#else
public SabreTools.Models.CFB.SectorNumber?[]? DIFATSectorNumbers => this.Model.DIFATSectorNumbers;
#endif
#endregion
#region Directory Entries
/// <inheritdoc cref="Models.CFB.Binary.DirectoryEntries"/>
#if NET48
public SabreTools.Models.CFB.DirectoryEntry[] DirectoryEntries => this.Model.DirectoryEntries;
#else
public SabreTools.Models.CFB.DirectoryEntry?[]? DirectoryEntries => this.Model.DirectoryEntries;
#endif
#endregion
#endregion
#region Extension Properties
/// <summary>
/// Normal sector size in bytes
/// </summary>
#if NET48
public long SectorSize => (long)Math.Pow(2, SectorShift);
public long SectorSize => (long)Math.Pow(2, this.Model.Header.SectorShift);
#else
public long SectorSize => (long)Math.Pow(2, SectorShift ?? 0);
public long SectorSize => (long)Math.Pow(2, this.Model.Header?.SectorShift ?? 0);
#endif
/// <summary>
/// Mini sector size in bytes
/// </summary>
#if NET48
public long MiniSectorSize => (long)Math.Pow(2, MiniSectorShift);
public long MiniSectorSize => (long)Math.Pow(2, this.Model.Header.MiniSectorShift);
#else
public long MiniSectorSize => (long)Math.Pow(2, MiniSectorShift ?? 0);
public long MiniSectorSize => (long)Math.Pow(2, this.Model.Header?.MiniSectorShift ?? 0);
#endif
#endregion
@@ -309,9 +131,9 @@ namespace BinaryObjectScanner.Wrappers
{
// If we have an invalid sector
#if NET48
if (startingSector < 0 || FATSectorNumbers == null || (long)startingSector >= FATSectorNumbers.Length)
if (startingSector < 0 || this.Model.FATSectorNumbers == null || (long)startingSector >= this.Model.FATSectorNumbers.Length)
#else
if (startingSector == null || startingSector < 0 || FATSectorNumbers == null || (long)startingSector >= FATSectorNumbers.Length)
if (startingSector == null || startingSector < 0 || this.Model.FATSectorNumbers == null || (long)startingSector >= this.Model.FATSectorNumbers.Length)
#endif
return null;
@@ -332,9 +154,9 @@ namespace BinaryObjectScanner.Wrappers
// Get the next sector from the lookup table
#if NET48
var nextSector = FATSectorNumbers[(uint)lastSector];
var nextSector = this.Model.FATSectorNumbers[(uint)lastSector];
#else
var nextSector = FATSectorNumbers[(uint)lastSector!.Value];
var nextSector = this.Model.FATSectorNumbers[(uint)lastSector!.Value];
#endif
// If we have an end of chain or free sector
@@ -426,9 +248,9 @@ namespace BinaryObjectScanner.Wrappers
{
// If we have an invalid sector
#if NET48
if (startingSector < 0 || MiniFATSectorNumbers == null || (long)startingSector >= MiniFATSectorNumbers.Length)
if (startingSector < 0 || this.Model.MiniFATSectorNumbers == null || (long)startingSector >= this.Model.MiniFATSectorNumbers.Length)
#else
if (startingSector == null || startingSector < 0 || MiniFATSectorNumbers == null || (long)startingSector >= MiniFATSectorNumbers.Length)
if (startingSector == null || startingSector < 0 || this.Model.MiniFATSectorNumbers == null || (long)startingSector >= this.Model.MiniFATSectorNumbers.Length)
#endif
return null;
@@ -449,9 +271,9 @@ namespace BinaryObjectScanner.Wrappers
// Get the next sector from the lookup table
#if NET48
var nextSector = MiniFATSectorNumbers[(uint)lastSector];
var nextSector = this.Model.MiniFATSectorNumbers[(uint)lastSector];
#else
var nextSector = MiniFATSectorNumbers[(uint)lastSector!.Value];
var nextSector = this.Model.MiniFATSectorNumbers[(uint)lastSector!.Value];
#endif
// If we have an end of chain or free sector

View File

@@ -12,541 +12,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Header
/// <inheritdoc cref="Models.N3DS.CIAHeader.HeaderSize"/>
#if NET48
public uint HeaderSize => this.Model.Header.HeaderSize;
#else
public uint? HeaderSize => this.Model.Header?.HeaderSize;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.Type"/>
#if NET48
public ushort Type => this.Model.Header.Type;
#else
public ushort? Type => this.Model.Header?.Type;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.Version"/>
#if NET48
public ushort Version => this.Model.Header.Version;
#else
public ushort? Version => this.Model.Header?.Version;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.CertificateChainSize"/>
#if NET48
public uint CertificateChainSize => this.Model.Header.CertificateChainSize;
#else
public uint? CertificateChainSize => this.Model.Header?.CertificateChainSize;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.TicketSize"/>
#if NET48
public uint TicketSize => this.Model.Header.TicketSize;
#else
public uint? TicketSize => this.Model.Header?.TicketSize;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.TMDFileSize"/>
#if NET48
public uint TMDFileSize => this.Model.Header.TMDFileSize;
#else
public uint? TMDFileSize => this.Model.Header?.TMDFileSize;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.MetaSize"/>
#if NET48
public uint MetaSize => this.Model.Header.MetaSize;
#else
public uint? MetaSize => this.Model.Header?.MetaSize;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.ContentSize"/>
#if NET48
public ulong ContentSize => this.Model.Header.ContentSize;
#else
public ulong? ContentSize => this.Model.Header?.ContentSize;
#endif
/// <inheritdoc cref="Models.N3DS.CIAHeader.ContentIndex"/>
#if NET48
public byte[] ContentIndex => this.Model.Header.ContentIndex;
#else
public byte[]? ContentIndex => this.Model.Header?.ContentIndex;
#endif
#endregion
#region Certificate Chain
/// <inheritdoc cref="Models.N3DS.CIA.CertificateChain"/>
#if NET48
public SabreTools.Models.N3DS.Certificate[] CertificateChain => this.Model.CertificateChain;
#else
public SabreTools.Models.N3DS.Certificate?[]? CertificateChain => this.Model.CertificateChain;
#endif
#endregion
#region Ticket
/// <inheritdoc cref="Models.N3DS.Ticket.SignatureType"/>
#if NET48
public SabreTools.Models.N3DS.SignatureType T_SignatureType => this.Model.Ticket.SignatureType;
#else
public SabreTools.Models.N3DS.SignatureType? T_SignatureType => this.Model.Ticket?.SignatureType;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.SignatureSize"/>
#if NET48
public ushort T_SignatureSize => this.Model.Ticket.SignatureSize;
#else
public ushort? T_SignatureSize => this.Model.Ticket?.SignatureSize;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.PaddingSize"/>
#if NET48
public byte T_PaddingSize => this.Model.Ticket.PaddingSize;
#else
public byte? T_PaddingSize => this.Model.Ticket?.PaddingSize;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Signature"/>
#if NET48
public byte[] T_Signature => this.Model.Ticket.Signature;
#else
public byte[]? T_Signature => this.Model.Ticket?.Signature;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Padding"/>
#if NET48
public byte[] T_Padding => this.Model.Ticket.Padding;
#else
public byte[]? T_Padding => this.Model.Ticket?.Padding;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Issuer"/>
#if NET48
public string T_Issuer => this.Model.Ticket.Issuer;
#else
public string? T_Issuer => this.Model.Ticket?.Issuer;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.ECCPublicKey"/>
#if NET48
public byte[] T_ECCPublicKey => this.Model.Ticket.ECCPublicKey;
#else
public byte[]? T_ECCPublicKey => this.Model.Ticket?.ECCPublicKey;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Version"/>
#if NET48
public byte T_Version => this.Model.Ticket.Version;
#else
public byte? T_Version => this.Model.Ticket?.Version;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.CaCrlVersion"/>
#if NET48
public byte T_CaCrlVersion => this.Model.Ticket.CaCrlVersion;
#else
public byte? T_CaCrlVersion => this.Model.Ticket?.CaCrlVersion;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.SignerCrlVersion"/>
#if NET48
public byte T_SignerCrlVersion => this.Model.Ticket.SignerCrlVersion;
#else
public byte? T_SignerCrlVersion => this.Model.Ticket?.SignerCrlVersion;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.TitleKey"/>
#if NET48
public byte[] T_TitleKey => this.Model.Ticket.TitleKey;
#else
public byte[]? T_TitleKey => this.Model.Ticket?.TitleKey;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Reserved1"/>
#if NET48
public byte T_Reserved1 => this.Model.Ticket.Reserved1;
#else
public byte? T_Reserved1 => this.Model.Ticket?.Reserved1;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.TicketID"/>
#if NET48
public ulong T_TicketID => this.Model.Ticket.TicketID;
#else
public ulong? T_TicketID => this.Model.Ticket?.TicketID;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.ConsoleID"/>
#if NET48
public uint T_ConsoleID => this.Model.Ticket.ConsoleID;
#else
public uint? T_ConsoleID => this.Model.Ticket?.ConsoleID;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.TitleID"/>
#if NET48
public ulong T_TitleID => this.Model.Ticket.TitleID;
#else
public ulong? T_TitleID => this.Model.Ticket?.TitleID;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Reserved2"/>
#if NET48
public byte[] T_Reserved2 => this.Model.Ticket.Reserved2;
#else
public byte[]? T_Reserved2 => this.Model.Ticket?.Reserved2;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.TicketTitleVersion"/>
#if NET48
public ushort T_TicketTitleVersion => this.Model.Ticket.TicketTitleVersion;
#else
public ushort? T_TicketTitleVersion => this.Model.Ticket?.TicketTitleVersion;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Reserved3"/>
#if NET48
public byte[] T_Reserved3 => this.Model.Ticket.Reserved3;
#else
public byte[]? T_Reserved3 => this.Model.Ticket?.Reserved3;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.LicenseType"/>
#if NET48
public byte T_LicenseType => this.Model.Ticket.LicenseType;
#else
public byte? T_LicenseType => this.Model.Ticket?.LicenseType;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.CommonKeyYIndex"/>
#if NET48
public byte T_CommonKeyYIndex => this.Model.Ticket.CommonKeyYIndex;
#else
public byte? T_CommonKeyYIndex => this.Model.Ticket?.CommonKeyYIndex;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Reserved4"/>
#if NET48
public byte[] T_Reserved4 => this.Model.Ticket.Reserved4;
#else
public byte[]? T_Reserved4 => this.Model.Ticket?.Reserved4;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.eShopAccountID"/>
#if NET48
public uint T_eShopAccountID => this.Model.Ticket.eShopAccountID;
#else
public uint? T_eShopAccountID => this.Model.Ticket?.eShopAccountID;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Reserved5"/>
#if NET48
public byte T_Reserved5 => this.Model.Ticket.Reserved5;
#else
public byte? T_Reserved5 => this.Model.Ticket?.Reserved5;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Audit"/>
#if NET48
public byte T_Audit => this.Model.Ticket.Audit;
#else
public byte? T_Audit => this.Model.Ticket?.Audit;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Reserved6"/>
#if NET48
public byte[] T_Reserved6 => this.Model.Ticket.Reserved6;
#else
public byte[]? T_Reserved6 => this.Model.Ticket?.Reserved6;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.Limits"/>
#if NET48
public uint[] T_Limits => this.Model.Ticket.Limits;
#else
public uint[]? T_Limits => this.Model.Ticket?.Limits;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.ContentIndexSize"/>
#if NET48
public uint T_ContentIndexSize => this.Model.Ticket.ContentIndexSize;
#else
public uint? T_ContentIndexSize => this.Model.Ticket?.ContentIndexSize;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.ContentIndex"/>
#if NET48
public byte[] T_ContentIndex => this.Model.Ticket.ContentIndex;
#else
public byte[]? T_ContentIndex => this.Model.Ticket?.ContentIndex;
#endif
/// <inheritdoc cref="Models.N3DS.Ticket.CertificateChain"/>
#if NET48
public SabreTools.Models.N3DS.Certificate[] T_CertificateChain => this.Model.Ticket.CertificateChain;
#else
public SabreTools.Models.N3DS.Certificate?[]? T_CertificateChain => this.Model.Ticket?.CertificateChain;
#endif
#endregion
#region Title Metadata
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SignatureType"/>
#if NET48
public SabreTools.Models.N3DS.SignatureType TMD_SignatureType => this.Model.TMDFileData.SignatureType;
#else
public SabreTools.Models.N3DS.SignatureType? TMD_SignatureType => this.Model.TMDFileData?.SignatureType;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SignatureSize"/>
#if NET48
public ushort TMD_SignatureSize => this.Model.TMDFileData.SignatureSize;
#else
public ushort? TMD_SignatureSize => this.Model.TMDFileData?.SignatureSize;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.PaddingSize"/>
#if NET48
public byte TMD_PaddingSize => this.Model.TMDFileData.PaddingSize;
#else
public byte? TMD_PaddingSize => this.Model.TMDFileData?.PaddingSize;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Signature"/>
#if NET48
public byte[] TMD_Signature => this.Model.TMDFileData.Signature;
#else
public byte[]? TMD_Signature => this.Model.TMDFileData?.Signature;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Padding1"/>
#if NET48
public byte[] TMD_Padding1 => this.Model.TMDFileData.Padding1;
#else
public byte[]? TMD_Padding1 => this.Model.TMDFileData?.Padding1;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Issuer"/>
#if NET48
public string TMD_Issuer => this.Model.TMDFileData.Issuer;
#else
public string? TMD_Issuer => this.Model.TMDFileData?.Issuer;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Version"/>
#if NET48
public byte TMD_Version => this.Model.TMDFileData.Version;
#else
public byte? TMD_Version => this.Model.TMDFileData?.Version;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.CaCrlVersion"/>
#if NET48
public byte TMD_CaCrlVersion => this.Model.TMDFileData.CaCrlVersion;
#else
public byte? TMD_CaCrlVersion => this.Model.TMDFileData?.CaCrlVersion;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SignerCrlVersion"/>
#if NET48
public byte TMD_SignerCrlVersion => this.Model.TMDFileData.SignerCrlVersion;
#else
public byte? TMD_SignerCrlVersion => this.Model.TMDFileData?.SignerCrlVersion;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Reserved1"/>
#if NET48
public byte TMD_Reserved1 => this.Model.TMDFileData.Reserved1;
#else
public byte? TMD_Reserved1 => this.Model.TMDFileData?.Reserved1;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SystemVersion"/>
#if NET48
public ulong TMD_SystemVersion => this.Model.TMDFileData.SystemVersion;
#else
public ulong? TMD_SystemVersion => this.Model.TMDFileData?.SystemVersion;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.TitleID"/>
#if NET48
public ulong TMD_TitleID => this.Model.TMDFileData.TitleID;
#else
public ulong? TMD_TitleID => this.Model.TMDFileData?.TitleID;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.TitleType"/>
#if NET48
public uint TMD_TitleType => this.Model.TMDFileData.TitleType;
#else
public uint? TMD_TitleType => this.Model.TMDFileData?.TitleType;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.GroupID"/>
#if NET48
public ushort TMD_GroupID => this.Model.TMDFileData.GroupID;
#else
public ushort? TMD_GroupID => this.Model.TMDFileData?.GroupID;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SaveDataSize"/>
#if NET48
public uint TMD_SaveDataSize => this.Model.TMDFileData.SaveDataSize;
#else
public uint? TMD_SaveDataSize => this.Model.TMDFileData?.SaveDataSize;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SRLPrivateSaveDataSize"/>
#if NET48
public uint TMD_SRLPrivateSaveDataSize => this.Model.TMDFileData.SRLPrivateSaveDataSize;
#else
public uint? TMD_SRLPrivateSaveDataSize => this.Model.TMDFileData?.SRLPrivateSaveDataSize;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Reserved2"/>
#if NET48
public byte[] TMD_Reserved2 => this.Model.TMDFileData.Reserved2;
#else
public byte[]? TMD_Reserved2 => this.Model.TMDFileData?.Reserved2;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SRLFlag"/>
#if NET48
public byte TMD_SRLFlag => this.Model.TMDFileData.SRLFlag;
#else
public byte? TMD_SRLFlag => this.Model.TMDFileData?.SRLFlag;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Reserved3"/>
#if NET48
public byte[] TMD_Reserved3 => this.Model.TMDFileData.Reserved3;
#else
public byte[]? TMD_Reserved3 => this.Model.TMDFileData?.Reserved3;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.AccessRights"/>
#if NET48
public uint TMD_AccessRights => this.Model.TMDFileData.AccessRights;
#else
public uint? TMD_AccessRights => this.Model.TMDFileData?.AccessRights;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.TitleVersion"/>
#if NET48
public ushort TMD_TitleVersion => this.Model.TMDFileData.TitleVersion;
#else
public ushort? TMD_TitleVersion => this.Model.TMDFileData?.TitleVersion;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.ContentCount"/>
#if NET48
public ushort TMD_ContentCount => this.Model.TMDFileData.ContentCount;
#else
public ushort? TMD_ContentCount => this.Model.TMDFileData?.ContentCount;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.BootContent"/>
#if NET48
public ushort TMD_BootContent => this.Model.TMDFileData.BootContent;
#else
public ushort? TMD_BootContent => this.Model.TMDFileData?.BootContent;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.Padding2"/>
#if NET48
public byte[] TMD_Padding2 => this.Model.TMDFileData.Padding2;
#else
public byte[]? TMD_Padding2 => this.Model.TMDFileData?.Padding2;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.SHA256HashContentInfoRecords"/>
#if NET48
public byte[] TMD_SHA256HashContentInfoRecords => this.Model.TMDFileData.SHA256HashContentInfoRecords;
#else
public byte[]? TMD_SHA256HashContentInfoRecords => this.Model.TMDFileData?.SHA256HashContentInfoRecords;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.ContentInfoRecords"/>
#if NET48
public SabreTools.Models.N3DS.ContentInfoRecord[] TMD_ContentInfoRecords => this.Model.TMDFileData.ContentInfoRecords;
#else
public SabreTools.Models.N3DS.ContentInfoRecord?[]? TMD_ContentInfoRecords => this.Model.TMDFileData?.ContentInfoRecords;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.ContentChunkRecords"/>
#if NET48
public SabreTools.Models.N3DS.ContentChunkRecord[] TMD_ContentChunkRecords => this.Model.TMDFileData.ContentChunkRecords;
#else
public SabreTools.Models.N3DS.ContentChunkRecord?[]? TMD_ContentChunkRecords => this.Model.TMDFileData?.ContentChunkRecords;
#endif
/// <inheritdoc cref="Models.N3DS.TitleMetadata.CertificateChain"/>
#if NET48
public SabreTools.Models.N3DS.Certificate[] TMD_CertificateChain => this.Model.TMDFileData.CertificateChain;
#else
public SabreTools.Models.N3DS.Certificate?[]? TMD_CertificateChain => this.Model.TMDFileData?.CertificateChain;
#endif
#endregion
#region Partitions
/// <inheritdoc cref="Models.N3DS.CIA.Partitions"/>
#if NET48
public SabreTools.Models.N3DS.NCCHHeader[] Partitions => this.Model.Partitions;
#else
public SabreTools.Models.N3DS.NCCHHeader?[]? Partitions => this.Model.Partitions;
#endif
#endregion
#region Meta Data
/// <inheritdoc cref="Models.N3DS.MetaData.TitleIDDependencyList"/>
#if NET48
public byte[] MD_TitleIDDependencyList => this.Model.MetaData?.TitleIDDependencyList;
#else
public byte[]? MD_TitleIDDependencyList => this.Model.MetaData?.TitleIDDependencyList;
#endif
/// <inheritdoc cref="Models.N3DS.MetaData.Reserved1"/>
#if NET48
public byte[] MD_Reserved1 => this.Model.MetaData?.Reserved1;
#else
public byte[]? MD_Reserved1 => this.Model.MetaData?.Reserved1;
#endif
/// <inheritdoc cref="Models.N3DS.MetaData.CoreVersion"/>
public uint? MD_CoreVersion => this.Model.MetaData?.CoreVersion;
/// <inheritdoc cref="Models.N3DS.MetaData.Reserved2"/>
#if NET48
public byte[] MD_Reserved2 => this.Model.MetaData?.Reserved2;
#else
public byte[]? MD_Reserved2 => this.Model.MetaData?.Reserved2;
#endif
/// <inheritdoc cref="Models.N3DS.MetaData.IconData"/>
#if NET48
public byte[] MD_IconData => this.Model.MetaData?.IconData;
#else
public byte[]? MD_IconData => this.Model.MetaData?.IconData;
#endif
#endregion
#endregion
#region Constructors
/// <inheritdoc/>

View File

@@ -14,542 +14,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Header
/// <inheritdoc cref="Models.GCF.Header.Dummy0"/>
#if NET48
public uint Dummy0 => this.Model.Header.Dummy0;
#else
public uint? Dummy0 => this.Model.Header?.Dummy0;
#endif
/// <inheritdoc cref="Models.GCF.Header.MajorVersion"/>
#if NET48
public uint MajorVersion => this.Model.Header.MajorVersion;
#else
public uint? MajorVersion => this.Model.Header?.MajorVersion;
#endif
/// <inheritdoc cref="Models.GCF.Header.MinorVersion"/>
#if NET48
public uint MinorVersion => this.Model.Header.MinorVersion;
#else
public uint? MinorVersion => this.Model.Header?.MinorVersion;
#endif
/// <inheritdoc cref="Models.GCF.Header.CacheID"/>
#if NET48
public uint CacheID => this.Model.Header.CacheID;
#else
public uint? CacheID => this.Model.Header?.CacheID;
#endif
/// <inheritdoc cref="Models.GCF.Header.LastVersionPlayed"/>
#if NET48
public uint LastVersionPlayed => this.Model.Header.LastVersionPlayed;
#else
public uint? LastVersionPlayed => this.Model.Header?.LastVersionPlayed;
#endif
/// <inheritdoc cref="Models.GCF.Header.Dummy1"/>
#if NET48
public uint Dummy1 => this.Model.Header.Dummy1;
#else
public uint? Dummy1 => this.Model.Header?.Dummy1;
#endif
/// <inheritdoc cref="Models.GCF.Header.Dummy2"/>
#if NET48
public uint Dummy2 => this.Model.Header.Dummy2;
#else
public uint? Dummy2 => this.Model.Header?.Dummy2;
#endif
/// <inheritdoc cref="Models.GCF.Header.FileSize"/>
#if NET48
public uint FileSize => this.Model.Header.FileSize;
#else
public uint? FileSize => this.Model.Header?.FileSize;
#endif
/// <inheritdoc cref="Models.GCF.Header.BlockSize"/>
#if NET48
public uint BlockSize => this.Model.Header.BlockSize;
#else
public uint? BlockSize => this.Model.Header?.BlockSize;
#endif
/// <inheritdoc cref="Models.GCF.Header.BlockCount"/>
#if NET48
public uint BlockCount => this.Model.Header.BlockCount;
#else
public uint? BlockCount => this.Model.Header?.BlockCount;
#endif
/// <inheritdoc cref="Models.GCF.Header.Dummy3"/>
#if NET48
public uint Dummy3 => this.Model.Header.Dummy3;
#else
public uint? Dummy3 => this.Model.Header?.Dummy3;
#endif
#endregion
#region Block Entry Header
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.BlockCount"/>
#if NET48
public uint BEH_BlockCount => this.Model.BlockEntryHeader.BlockCount;
#else
public uint? BEH_BlockCount => this.Model.BlockEntryHeader?.BlockCount;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.BlocksUsed"/>
#if NET48
public uint BEH_BlocksUsed => this.Model.BlockEntryHeader.BlocksUsed;
#else
public uint? BEH_BlocksUsed => this.Model.BlockEntryHeader?.BlocksUsed;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.Dummy0"/>
#if NET48
public uint BEH_Dummy0 => this.Model.BlockEntryHeader.Dummy0;
#else
public uint? BEH_Dummy0 => this.Model.BlockEntryHeader?.Dummy0;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.Dummy1"/>
#if NET48
public uint BEH_Dummy1 => this.Model.BlockEntryHeader.Dummy1;
#else
public uint? BEH_Dummy1 => this.Model.BlockEntryHeader?.Dummy1;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.Dummy2"/>
#if NET48
public uint BEH_Dummy2 => this.Model.BlockEntryHeader.Dummy2;
#else
public uint? BEH_Dummy2 => this.Model.BlockEntryHeader?.Dummy2;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.Dummy3"/>
#if NET48
public uint BEH_Dummy3 => this.Model.BlockEntryHeader.Dummy3;
#else
public uint? BEH_Dummy3 => this.Model.BlockEntryHeader?.Dummy3;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.Dummy4"/>
#if NET48
public uint BEH_Dummy4 => this.Model.BlockEntryHeader.Dummy4;
#else
public uint? BEH_Dummy4 => this.Model.BlockEntryHeader?.Dummy4;
#endif
/// <inheritdoc cref="Models.GCF.BlockEntryHeader.Checksum"/>
#if NET48
public uint BEH_Checksum => this.Model.BlockEntryHeader.Checksum;
#else
public uint? BEH_Checksum => this.Model.BlockEntryHeader?.Checksum;
#endif
#endregion
#region Block Entries
/// <inheritdoc cref="Models.GCF.File.BlockEntries"/>
#if NET48
public SabreTools.Models.GCF.BlockEntry[] BlockEntries => this.Model.BlockEntries;
#else
public SabreTools.Models.GCF.BlockEntry?[]? BlockEntries => this.Model.BlockEntries;
#endif
#endregion
#region Fragmentation Map Header
/// <inheritdoc cref="Models.GCF.FragmentationMapHeader.BlockCount"/>
#if NET48
public uint FMH_BlockCount => this.Model.FragmentationMapHeader.BlockCount;
#else
public uint? FMH_BlockCount => this.Model.FragmentationMapHeader?.BlockCount;
#endif
/// <inheritdoc cref="Models.GCF.FragmentationMapHeader.FirstUnusedEntry"/>
#if NET48
public uint FMH_FirstUnusedEntry => this.Model.FragmentationMapHeader.FirstUnusedEntry;
#else
public uint? FMH_FirstUnusedEntry => this.Model.FragmentationMapHeader?.FirstUnusedEntry;
#endif
/// <inheritdoc cref="Models.GCF.FragmentationMapHeader.Terminator"/>
#if NET48
public uint FMH_Terminator => this.Model.FragmentationMapHeader.Terminator;
#else
public uint? FMH_Terminator => this.Model.FragmentationMapHeader?.Terminator;
#endif
/// <inheritdoc cref="Models.GCF.FragmentationMapHeader.Checksum"/>
#if NET48
public uint FMH_Checksum => this.Model.FragmentationMapHeader.Checksum;
#else
public uint? FMH_Checksum => this.Model.FragmentationMapHeader?.Checksum;
#endif
#endregion
#region Fragmentation Maps
/// <inheritdoc cref="Models.GCF.File.FragmentationMaps"/>
#if NET48
public SabreTools.Models.GCF.FragmentationMap[] FragmentationMaps => this.Model.FragmentationMaps;
#else
public SabreTools.Models.GCF.FragmentationMap?[]? FragmentationMaps => this.Model.FragmentationMaps;
#endif
#endregion
#region Block Entry Map Header
/// <inheritdoc cref="Models.GCF.BlockEntryMapHeader.BlockCount"/>
public uint? BEMH_BlockCount => this.Model.BlockEntryMapHeader?.BlockCount;
/// <inheritdoc cref="Models.GCF.BlockEntryMapHeader.FirstBlockEntryIndex"/>
public uint? BEMH_FirstBlockEntryIndex => this.Model.BlockEntryMapHeader?.FirstBlockEntryIndex;
/// <inheritdoc cref="Models.GCF.BlockEntryMapHeader.LastBlockEntryIndex"/>
public uint? BEMH_LastBlockEntryIndex => this.Model.BlockEntryMapHeader?.LastBlockEntryIndex;
/// <inheritdoc cref="Models.GCF.BlockEntryMapHeader.Dummy0"/>
public uint? BEMH_Dummy0 => this.Model.BlockEntryMapHeader?.Dummy0;
/// <inheritdoc cref="Models.GCF.BlockEntryMapHeader.Checksum"/>
public uint? BEMH_Checksum => this.Model.BlockEntryMapHeader?.Checksum;
#endregion
#region Block Entry Maps
/// <inheritdoc cref="Models.GCF.File.BlockEntryMaps"/>
#if NET48
public SabreTools.Models.GCF.BlockEntryMap[] BlockEntryMaps => this.Model.BlockEntryMaps;
#else
public SabreTools.Models.GCF.BlockEntryMap?[]? BlockEntryMaps => this.Model.BlockEntryMaps;
#endif
#endregion
#region Directory Header
/// <inheritdoc cref="Models.GCF.DirectoryHeader.Dummy0"/>
#if NET48
public uint DH_Dummy0 => this.Model.DirectoryHeader.Dummy0;
#else
public uint? DH_Dummy0 => this.Model.DirectoryHeader?.Dummy0;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.CacheID"/>
#if NET48
public uint DH_CacheID => this.Model.DirectoryHeader.CacheID;
#else
public uint? DH_CacheID => this.Model.DirectoryHeader?.CacheID;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.LastVersionPlayed"/>
#if NET48
public uint DH_LastVersionPlayed => this.Model.DirectoryHeader.LastVersionPlayed;
#else
public uint? DH_LastVersionPlayed => this.Model.DirectoryHeader?.LastVersionPlayed;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.ItemCount"/>
#if NET48
public uint DH_ItemCount => this.Model.DirectoryHeader.ItemCount;
#else
public uint? DH_ItemCount => this.Model.DirectoryHeader?.ItemCount;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.FileCount"/>
#if NET48
public uint DH_FileCount => this.Model.DirectoryHeader.FileCount;
#else
public uint? DH_FileCount => this.Model.DirectoryHeader?.FileCount;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.Dummy1"/>
#if NET48
public uint DH_Dummy1 => this.Model.DirectoryHeader.Dummy1;
#else
public uint? DH_Dummy1 => this.Model.DirectoryHeader?.Dummy1;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.DirectorySize"/>
#if NET48
public uint DH_DirectorySize => this.Model.DirectoryHeader.DirectorySize;
#else
public uint? DH_DirectorySize => this.Model.DirectoryHeader?.DirectorySize;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.NameSize"/>
#if NET48
public uint DH_NameSize => this.Model.DirectoryHeader.NameSize;
#else
public uint? DH_NameSize => this.Model.DirectoryHeader?.NameSize;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.Info1Count"/>
#if NET48
public uint DH_Info1Count => this.Model.DirectoryHeader.Info1Count;
#else
public uint? DH_Info1Count => this.Model.DirectoryHeader?.Info1Count;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.CopyCount"/>
#if NET48
public uint DH_CopyCount => this.Model.DirectoryHeader.CopyCount;
#else
public uint? DH_CopyCount => this.Model.DirectoryHeader?.CopyCount;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.LocalCount"/>
#if NET48
public uint DH_LocalCount => this.Model.DirectoryHeader.LocalCount;
#else
public uint? DH_LocalCount => this.Model.DirectoryHeader?.LocalCount;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.Dummy2"/>
#if NET48
public uint DH_Dummy2 => this.Model.DirectoryHeader.Dummy2;
#else
public uint? DH_Dummy2 => this.Model.DirectoryHeader?.Dummy2;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.Dummy3"/>
#if NET48
public uint DH_Dummy3 => this.Model.DirectoryHeader.Dummy3;
#else
public uint? DH_Dummy3 => this.Model.DirectoryHeader?.Dummy3;
#endif
/// <inheritdoc cref="Models.GCF.DirectoryHeader.Checksum"/>
#if NET48
public uint DH_Checksum => this.Model.DirectoryHeader.Checksum;
#else
public uint? DH_Checksum => this.Model.DirectoryHeader?.Checksum;
#endif
#endregion
#region Directory Entries
/// <inheritdoc cref="Models.GCF.File.DirectoryEntries"/>
#if NET48
public SabreTools.Models.GCF.DirectoryEntry[] DirectoryEntries => this.Model.DirectoryEntries;
#else
public SabreTools.Models.GCF.DirectoryEntry?[]? DirectoryEntries => this.Model.DirectoryEntries;
#endif
#endregion
#region Directory Names
/// <inheritdoc cref="Models.GCF.File.DirectoryNames"/>
#if NET48
public Dictionary<long, string> DirectoryNames => this.Model.DirectoryNames;
#else
public Dictionary<long, string?>? DirectoryNames => this.Model.DirectoryNames;
#endif
#endregion
#region Directory Info 1 Entries
/// <inheritdoc cref="Models.GCF.File.DirectoryInfo1Entries"/>
#if NET48
public SabreTools.Models.GCF.DirectoryInfo1Entry[] DirectoryInfo1Entries => this.Model.DirectoryInfo1Entries;
#else
public SabreTools.Models.GCF.DirectoryInfo1Entry?[]? DirectoryInfo1Entries => this.Model.DirectoryInfo1Entries;
#endif
#endregion
#region Directory Info 2 Entries
/// <inheritdoc cref="Models.GCF.File.DirectoryInfo2Entries"/>
#if NET48
public SabreTools.Models.GCF.DirectoryInfo2Entry[] DirectoryInfo2Entries => this.Model.DirectoryInfo2Entries;
#else
public SabreTools.Models.GCF.DirectoryInfo2Entry?[]? DirectoryInfo2Entries => this.Model.DirectoryInfo2Entries;
#endif
#endregion
#region Directory Copy Entries
/// <inheritdoc cref="Models.GCF.File.DirectoryCopyEntries"/>
#if NET48
public SabreTools.Models.GCF.DirectoryCopyEntry[] DirectoryCopyEntries => this.Model.DirectoryCopyEntries;
#else
public SabreTools.Models.GCF.DirectoryCopyEntry?[]? DirectoryCopyEntries => this.Model.DirectoryCopyEntries;
#endif
#endregion
#region Directory Local Entries
/// <inheritdoc cref="Models.GCF.File.DirectoryLocalEntries"/>
#if NET48
public SabreTools.Models.GCF.DirectoryLocalEntry[] DirectoryLocalEntries => this.Model.DirectoryLocalEntries;
#else
public SabreTools.Models.GCF.DirectoryLocalEntry?[]? DirectoryLocalEntries => this.Model.DirectoryLocalEntries;
#endif
#endregion
#region Directory Map Header
/// <inheritdoc cref="Models.GCF.DirectoryMapHeader.Dummy0"/>
public uint? DMH_Dummy0 => this.Model.DirectoryMapHeader?.Dummy0;
/// <inheritdoc cref="Models.GCF.DirectoryMapHeader.Dummy1"/>
public uint? DMH_Dummy1 => this.Model.DirectoryMapHeader?.Dummy1;
#endregion
#region Directory Map Entries
/// <inheritdoc cref="Models.GCF.File.DirectoryMapEntries"/>
#if NET48
public SabreTools.Models.GCF.DirectoryMapEntry[] DirectoryMapEntries => this.Model.DirectoryMapEntries;
#else
public SabreTools.Models.GCF.DirectoryMapEntry?[]? DirectoryMapEntries => this.Model.DirectoryMapEntries;
#endif
#endregion
#region Checksum Header
/// <inheritdoc cref="Models.GCF.ChecksumHeader.Dummy0"/>
#if NET48
public uint CH_Dummy0 => this.Model.ChecksumHeader.Dummy0;
#else
public uint? CH_Dummy0 => this.Model.ChecksumHeader?.Dummy0;
#endif
/// <inheritdoc cref="Models.GCF.ChecksumHeader.ChecksumSize"/>
#if NET48
public uint CH_ChecksumSize => this.Model.ChecksumHeader.ChecksumSize;
#else
public uint? CH_ChecksumSize => this.Model.ChecksumHeader?.ChecksumSize;
#endif
#endregion
#region Checksum Map Header
/// <inheritdoc cref="Models.GCF.ChecksumMapHeader.Dummy0"/>
#if NET48
public uint CMH_Dummy0 => this.Model.ChecksumMapHeader.Dummy0;
#else
public uint? CMH_Dummy0 => this.Model.ChecksumMapHeader?.Dummy0;
#endif
/// <inheritdoc cref="Models.GCF.ChecksumMapHeader.Dummy1"/>
#if NET48
public uint CMH_Dummy1 => this.Model.ChecksumMapHeader.Dummy1;
#else
public uint? CMH_Dummy1 => this.Model.ChecksumMapHeader?.Dummy1;
#endif
/// <inheritdoc cref="Models.GCF.ChecksumMapHeader.ItemCount"/>
#if NET48
public uint CMH_ItemCount => this.Model.ChecksumMapHeader.ItemCount;
#else
public uint? CMH_ItemCount => this.Model.ChecksumMapHeader?.ItemCount;
#endif
/// <inheritdoc cref="Models.GCF.ChecksumMapHeader.ChecksumCount"/>
#if NET48
public uint CMH_ChecksumCount => this.Model.ChecksumMapHeader.ChecksumCount;
#else
public uint? CMH_ChecksumCount => this.Model.ChecksumMapHeader?.ChecksumCount;
#endif
#endregion
#region Checksum Map Entries
/// <inheritdoc cref="Models.GCF.File.ChecksumMapEntries"/>
#if NET48
public SabreTools.Models.GCF.ChecksumMapEntry[] ChecksumMapEntries => this.Model.ChecksumMapEntries;
#else
public SabreTools.Models.GCF.ChecksumMapEntry?[]? ChecksumMapEntries => this.Model.ChecksumMapEntries;
#endif
#endregion
#region Checksum Entries
/// <inheritdoc cref="Models.GCF.File.ChecksumEntries"/>
#if NET48
public SabreTools.Models.GCF.ChecksumEntry[] ChecksumEntries => this.Model.ChecksumEntries;
#else
public SabreTools.Models.GCF.ChecksumEntry?[]? ChecksumEntries => this.Model.ChecksumEntries;
#endif
#endregion
#region Data Block Header
/// <inheritdoc cref="Models.GCF.DataBlockHeader.LastVersionPlayed"/>
#if NET48
public uint DBH_LastVersionPlayed => this.Model.DataBlockHeader.LastVersionPlayed;
#else
public uint? DBH_LastVersionPlayed => this.Model.DataBlockHeader?.LastVersionPlayed;
#endif
/// <inheritdoc cref="Models.GCF.DataBlockHeader.BlockCount"/>
#if NET48
public uint DBH_BlockCount => this.Model.DataBlockHeader.BlockCount;
#else
public uint? DBH_BlockCount => this.Model.DataBlockHeader?.BlockCount;
#endif
/// <inheritdoc cref="Models.GCF.DataBlockHeader.BlockSize"/>
#if NET48
public uint DBH_BlockSize => this.Model.DataBlockHeader.BlockSize;
#else
public uint? DBH_BlockSize => this.Model.DataBlockHeader?.BlockSize;
#endif
/// <inheritdoc cref="Models.GCF.DataBlockHeader.FirstBlockOffset"/>
#if NET48
public uint DBH_FirstBlockOffset => this.Model.DataBlockHeader.FirstBlockOffset;
#else
public uint? DBH_FirstBlockOffset => this.Model.DataBlockHeader?.FirstBlockOffset;
#endif
/// <inheritdoc cref="Models.GCF.DataBlockHeader.BlocksUsed"/>
#if NET48
public uint DBH_BlocksUsed => this.Model.DataBlockHeader.BlocksUsed;
#else
public uint? DBH_BlocksUsed => this.Model.DataBlockHeader?.BlocksUsed;
#endif
/// <inheritdoc cref="Models.GCF.DataBlockHeader.Checksum"/>
#if NET48
public uint DBH_Checksum => this.Model.DataBlockHeader.Checksum;
#else
public uint? DBH_Checksum => this.Model.DataBlockHeader?.Checksum;
#endif
#endregion
#endregion
#region Extension Properties
/// <summary>
@@ -568,16 +32,16 @@ namespace BinaryObjectScanner.Wrappers
return _files;
// If we don't have a required property
if (DirectoryEntries == null || DirectoryMapEntries == null || BlockEntries == null)
if (this.Model.DirectoryEntries == null || this.Model.DirectoryMapEntries == null || this.Model.BlockEntries == null)
return null;
// Otherwise, scan and build the files
var files = new List<FileInfo>();
for (int i = 0; i < DirectoryEntries.Length; i++)
for (int i = 0; i < this.Model.DirectoryEntries.Length; i++)
{
// Get the directory entry
var directoryEntry = DirectoryEntries[i];
var directoryMapEntry = DirectoryMapEntries[i];
var directoryEntry = this.Model.DirectoryEntries[i];
var directoryMapEntry = this.Model.DirectoryMapEntries[i];
if (directoryEntry == null || directoryMapEntry == null)
continue;
@@ -602,7 +66,7 @@ namespace BinaryObjectScanner.Wrappers
uint index = directoryEntry.ParentIndex;
while (index != 0xFFFFFFFF)
{
var parentDirectoryEntry = DirectoryEntries[index];
var parentDirectoryEntry = this.Model.DirectoryEntries[index];
if (parentDirectoryEntry == null)
break;
@@ -612,9 +76,9 @@ namespace BinaryObjectScanner.Wrappers
// Traverse the block entries
index = directoryMapEntry.FirstBlockIndex;
while (index != DBH_BlockCount)
while (index != this.Model.DataBlockHeader?.BlockCount)
{
var nextBlock = BlockEntries[index];
var nextBlock = this.Model.BlockEntries[index];
if (nextBlock == null)
break;
@@ -656,23 +120,15 @@ namespace BinaryObjectScanner.Wrappers
#if NET6_0_OR_GREATER
// If we don't have a block count, offset, or size
if (DBH_BlockCount == null || DBH_FirstBlockOffset == null || DBH_BlockSize == null)
if (this.Model.DataBlockHeader?.BlockCount == null || this.Model.DataBlockHeader?.FirstBlockOffset == null || this.Model.DataBlockHeader?.BlockSize == null)
return null;
#endif
// Otherwise, build the data block set
#if NET48
_dataBlockOffsets = new long[DBH_BlockCount];
#else
_dataBlockOffsets = new long[DBH_BlockCount.Value];
#endif
for (int i = 0; i < DBH_BlockCount; i++)
_dataBlockOffsets = new long[this.Model.DataBlockHeader.BlockCount];
for (int i = 0; i < this.Model.DataBlockHeader.BlockCount; i++)
{
#if NET48
long dataBlockOffset = DBH_FirstBlockOffset + (i * DBH_BlockSize);
#else
long dataBlockOffset = DBH_FirstBlockOffset.Value + (i * DBH_BlockSize.Value);
#endif
long dataBlockOffset = this.Model.DataBlockHeader.FirstBlockOffset + (i * this.Model.DataBlockHeader.BlockSize);
_dataBlockOffsets[i] = dataBlockOffset;
}
@@ -859,11 +315,7 @@ namespace BinaryObjectScanner.Wrappers
{
long dataBlockOffset = DataBlockOffsets[dataBlockIndex++];
dataBlockOffsets.Add(dataBlockOffset);
#if NET48
blockEntrySize -= DBH_BlockSize;
#else
blockEntrySize -= DBH_BlockSize ?? 0;
#endif
blockEntrySize -= this.Model.DataBlockHeader?.BlockSize ?? 0;
}
}
@@ -900,11 +352,10 @@ namespace BinaryObjectScanner.Wrappers
long fileSize = file.Size;
for (int i = 0; i < dataBlockOffsets.Count; i++)
{
int readSize = (int)Math.Min(this.Model.DataBlockHeader?.BlockSize ?? 0, fileSize);
#if NET48
int readSize = (int)Math.Min(DBH_BlockSize, fileSize);
byte[] data = ReadFromDataSource((int)dataBlockOffsets[i], readSize);
#else
int readSize = (int)Math.Min(DBH_BlockSize ?? 0, fileSize);
byte[]? data = ReadFromDataSource((int)dataBlockOffsets[i], readSize);
#endif
if (data == null)

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using System.IO;
using System.Text;
@@ -13,407 +12,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region Common Header
/// <inheritdoc cref="Models.InstallShieldCabinet.CommonHeader.Signature"/>
#if NET48
public string Signature => this.Model.CommonHeader.Signature;
#else
public string? Signature => this.Model.CommonHeader?.Signature;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.CommonHeader.Version"/>
#if NET48
public uint Version => this.Model.CommonHeader.Version;
#else
public uint? Version => this.Model.CommonHeader?.Version;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.CommonHeader.VolumeInfo"/>
#if NET48
public uint VolumeInfo => this.Model.CommonHeader.VolumeInfo;
#else
public uint? VolumeInfo => this.Model.CommonHeader?.VolumeInfo;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.CommonHeader.DescriptorOffset"/>
#if NET48
public uint DescriptorOffset => this.Model.CommonHeader.DescriptorOffset;
#else
public uint? DescriptorOffset => this.Model.CommonHeader?.DescriptorOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.CommonHeader.DescriptorSize"/>
#if NET48
public uint DescriptorSize => this.Model.CommonHeader.DescriptorSize;
#else
public uint? DescriptorSize => this.Model.CommonHeader?.DescriptorSize;
#endif
#endregion
#region Volume Header
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.DataOffset"/>
#if NET48
public uint DataOffset => this.Model.VolumeHeader.DataOffset;
#else
public uint? DataOffset => this.Model.VolumeHeader?.DataOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.DataOffsetHigh"/>
#if NET48
public uint DataOffsetHigh => this.Model.VolumeHeader.DataOffsetHigh;
#else
public uint? DataOffsetHigh => this.Model.VolumeHeader?.DataOffsetHigh;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileIndex"/>
#if NET48
public uint FirstFileIndex => this.Model.VolumeHeader.FirstFileIndex;
#else
public uint? FirstFileIndex => this.Model.VolumeHeader?.FirstFileIndex;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileIndex"/>
#if NET48
public uint LastFileIndex => this.Model.VolumeHeader.LastFileIndex;
#else
public uint? LastFileIndex => this.Model.VolumeHeader?.LastFileIndex;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileOffset"/>
#if NET48
public uint FirstFileOffset => this.Model.VolumeHeader.FirstFileOffset;
#else
public uint? FirstFileOffset => this.Model.VolumeHeader?.FirstFileOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileOffsetHigh"/>
#if NET48
public uint FirstFileOffsetHigh => this.Model.VolumeHeader.FirstFileOffsetHigh;
#else
public uint? FirstFileOffsetHigh => this.Model.VolumeHeader?.FirstFileOffsetHigh;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileSizeExpanded"/>
#if NET48
public uint FirstFileSizeExpanded => this.Model.VolumeHeader.FirstFileSizeExpanded;
#else
public uint? FirstFileSizeExpanded => this.Model.VolumeHeader?.FirstFileSizeExpanded;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileSizeExpandedHigh"/>
#if NET48
public uint FirstFileSizeExpandedHigh => this.Model.VolumeHeader.FirstFileSizeExpandedHigh;
#else
public uint? FirstFileSizeExpandedHigh => this.Model.VolumeHeader?.FirstFileSizeExpandedHigh;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileSizeCompressed"/>
#if NET48
public uint FirstFileSizeCompressed => this.Model.VolumeHeader.FirstFileSizeCompressed;
#else
public uint? FirstFileSizeCompressed => this.Model.VolumeHeader?.FirstFileSizeCompressed;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.FirstFileSizeCompressedHigh"/>
#if NET48
public uint FirstFileSizeCompressedHigh => this.Model.VolumeHeader.FirstFileSizeCompressedHigh;
#else
public uint? FirstFileSizeCompressedHigh => this.Model.VolumeHeader?.FirstFileSizeCompressedHigh;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileOffset"/>
#if NET48
public uint LastFileOffset => this.Model.VolumeHeader.LastFileOffset;
#else
public uint? LastFileOffset => this.Model.VolumeHeader?.LastFileOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileOffsetHigh"/>
#if NET48
public uint LastFileOffsetHigh => this.Model.VolumeHeader.LastFileOffsetHigh;
#else
public uint? LastFileOffsetHigh => this.Model.VolumeHeader?.LastFileOffsetHigh;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileSizeExpanded"/>
#if NET48
public uint LastFileSizeExpanded => this.Model.VolumeHeader.LastFileSizeExpanded;
#else
public uint? LastFileSizeExpanded => this.Model.VolumeHeader?.LastFileSizeExpanded;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileSizeExpandedHigh"/>
#if NET48
public uint LastFileSizeExpandedHigh => this.Model.VolumeHeader.LastFileSizeExpandedHigh;
#else
public uint? LastFileSizeExpandedHigh => this.Model.VolumeHeader?.LastFileSizeExpandedHigh;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileSizeCompressed"/>
#if NET48
public uint LastFileSizeCompressed => this.Model.VolumeHeader.LastFileSizeCompressed;
#else
public uint? LastFileSizeCompressed => this.Model.VolumeHeader?.LastFileSizeCompressed;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.VolumeHeader.LastFileSizeCompressedHigh"/>
#if NET48
public uint LastFileSizeCompressedHigh => this.Model.VolumeHeader.LastFileSizeCompressedHigh;
#else
public uint? LastFileSizeCompressedHigh => this.Model.VolumeHeader?.LastFileSizeCompressedHigh;
#endif
#endregion
#region Descriptor
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.StringsOffset"/>
#if NET48
public uint StringsOffset => this.Model.Descriptor.StringsOffset;
#else
public uint? StringsOffset => this.Model.Descriptor?.StringsOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved0"/>
#if NET48
public byte[] Reserved0 => this.Model.Descriptor.Reserved0;
#else
public byte[]? Reserved0 => this.Model.Descriptor?.Reserved0;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.ComponentListOffset"/>
#if NET48
public uint ComponentListOffset => this.Model.Descriptor.ComponentListOffset;
#else
public uint? ComponentListOffset => this.Model.Descriptor?.ComponentListOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.FileTableOffset"/>
#if NET48
public uint FileTableOffset => this.Model.Descriptor.FileTableOffset;
#else
public uint? FileTableOffset => this.Model.Descriptor?.FileTableOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved1"/>
#if NET48
public byte[] Reserved1 => this.Model.Descriptor.Reserved1;
#else
public byte[]? Reserved1 => this.Model.Descriptor?.Reserved1;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.FileTableSize"/>
#if NET48
public uint FileTableSize => this.Model.Descriptor.FileTableSize;
#else
public uint? FileTableSize => this.Model.Descriptor?.FileTableSize;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.FileTableSize2"/>
#if NET48
public uint FileTableSize2 => this.Model.Descriptor.FileTableSize2;
#else
public uint? FileTableSize2 => this.Model.Descriptor?.FileTableSize2;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.DirectoryCount"/>
#if NET48
public ushort DirectoryCount => this.Model.Descriptor.DirectoryCount;
#else
public ushort? DirectoryCount => this.Model.Descriptor?.DirectoryCount;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved2"/>
#if NET48
public byte[] Reserved2 => this.Model.Descriptor.Reserved2;
#else
public byte[]? Reserved2 => this.Model.Descriptor?.Reserved2;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved3"/>
#if NET48
public byte[] Reserved3 => this.Model.Descriptor.Reserved3;
#else
public byte[]? Reserved3 => this.Model.Descriptor?.Reserved3;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved4"/>
#if NET48
public byte[] Reserved4 => this.Model.Descriptor.Reserved4;
#else
public byte[]? Reserved4 => this.Model.Descriptor?.Reserved4;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.FileCount"/>
#if NET48
public uint FileCount => this.Model.Descriptor.FileCount;
#else
public uint? FileCount => this.Model.Descriptor?.FileCount;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.FileTableOffset2"/>
#if NET48
public uint FileTableOffset2 => this.Model.Descriptor.FileTableOffset2;
#else
public uint? FileTableOffset2 => this.Model.Descriptor?.FileTableOffset2;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.ComponentTableInfoCount"/>
#if NET48
public ushort ComponentTableInfoCount => this.Model.Descriptor.ComponentTableInfoCount;
#else
public ushort? ComponentTableInfoCount => this.Model.Descriptor?.ComponentTableInfoCount;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.ComponentTableOffset"/>
#if NET48
public uint ComponentTableOffset => this.Model.Descriptor.ComponentTableOffset;
#else
public uint? ComponentTableOffset => this.Model.Descriptor?.ComponentTableOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved5"/>
#if NET48
public byte[] Reserved5 => this.Model.Descriptor.Reserved5;
#else
public byte[]? Reserved5 => this.Model.Descriptor?.Reserved5;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved6"/>
#if NET48
public byte[] Reserved6 => this.Model.Descriptor.Reserved6;
#else
public byte[]? Reserved6 => this.Model.Descriptor?.Reserved6;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.FileGroupOffsets"/>
#if NET48
public uint[] D_FileGroupOffsets => this.Model.Descriptor.FileGroupOffsets;
#else
public uint[]? D_FileGroupOffsets => this.Model.Descriptor?.FileGroupOffsets;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.ComponentOffsets"/>
#if NET48
public uint[] D_ComponentOffsets => this.Model.Descriptor.ComponentOffsets;
#else
public uint[]? D_ComponentOffsets => this.Model.Descriptor?.ComponentOffsets;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.SetupTypesOffset"/>
#if NET48
public uint SetupTypesOffset => this.Model.Descriptor.SetupTypesOffset;
#else
public uint? SetupTypesOffset => this.Model.Descriptor?.SetupTypesOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.SetupTableOffset"/>
#if NET48
public uint SetupTableOffset => this.Model.Descriptor.SetupTableOffset;
#else
public uint? SetupTableOffset => this.Model.Descriptor?.SetupTableOffset;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved7"/>
#if NET48
public byte[] Reserved7 => this.Model.Descriptor.Reserved7;
#else
public byte[]? Reserved7 => this.Model.Descriptor?.Reserved7;
#endif
/// <inheritdoc cref="Models.InstallShieldCabinet.Descriptor.Reserved8"/>
#if NET48
public byte[] Reserved8 => this.Model.Descriptor.Reserved8;
#else
public byte[]? Reserved8 => this.Model.Descriptor?.Reserved8;
#endif
#endregion
#region File Descriptor Offsets
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.FileDescriptorOffsets"/>
#if NET48
public uint[] FileDescriptorOffsets => this.Model.FileDescriptorOffsets;
#else
public uint[]? FileDescriptorOffsets => this.Model.FileDescriptorOffsets;
#endif
#endregion
#region Directory Descriptors
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.DirectoryNames"/>
#if NET48
public string[] DirectoryNames => this.Model.DirectoryNames;
#else
public string[]? DirectoryNames => this.Model.DirectoryNames;
#endif
#endregion
#region File Descriptors
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.FileDescriptors"/>
#if NET48
public SabreTools.Models.InstallShieldCabinet.FileDescriptor[] FileDescriptors => this.Model.FileDescriptors;
#else
public SabreTools.Models.InstallShieldCabinet.FileDescriptor?[]? FileDescriptors => this.Model.FileDescriptors;
#endif
#endregion
#region File Group Offsets
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.FileGroupOffsets"/>
#if NET48
public Dictionary<long, SabreTools.Models.InstallShieldCabinet.OffsetList> FileGroupOffsets => this.Model.FileGroupOffsets;
#else
public Dictionary<long, SabreTools.Models.InstallShieldCabinet.OffsetList?>? FileGroupOffsets => this.Model.FileGroupOffsets;
#endif
#endregion
#region File Groups
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.FileGroups"/>
#if NET48
public SabreTools.Models.InstallShieldCabinet.FileGroup[] FileGroups => this.Model.FileGroups;
#else
public SabreTools.Models.InstallShieldCabinet.FileGroup?[]? FileGroups => this.Model.FileGroups;
#endif
#endregion
#region Component Offsets
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.ComponentOffsets"/>
#if NET48
public Dictionary<long, SabreTools.Models.InstallShieldCabinet.OffsetList> ComponentOffsets => this.Model.ComponentOffsets;
#else
public Dictionary<long, SabreTools.Models.InstallShieldCabinet.OffsetList?>? ComponentOffsets => this.Model.ComponentOffsets;
#endif
#endregion
#region Components
/// <inheritdoc cref="Models.InstallShieldCabinet.Cabinet.Components"/>
#if NET48
public SabreTools.Models.InstallShieldCabinet.Component[] Components => this.Model.Components;
#else
public SabreTools.Models.InstallShieldCabinet.Component?[]? Components => this.Model.Components;
#endif
#endregion
#endregion
#region Extension Properties
/// <summary>
@@ -423,11 +21,7 @@ namespace BinaryObjectScanner.Wrappers
{
get
{
#if NET48
uint majorVersion = Version;
#else
uint majorVersion = Version ?? 0;
#endif
uint majorVersion = this.Model.CommonHeader?.Version ?? 0;
if (majorVersion >> 24 == 1)
{
majorVersion = (majorVersion >> 12) & 0x0F;

View File

@@ -13,603 +13,6 @@ namespace BinaryObjectScanner.Wrappers
#endregion
#region Pass-Through Properties
#region MS-DOS Stub
#region Standard Fields
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.Magic"/>
#if NET48
public string Stub_Magic => this.Model.Stub.Header.Magic;
#else
public string? Stub_Magic => this.Model.Stub?.Header?.Magic;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.LastPageBytes"/>
#if NET48
public ushort Stub_LastPageBytes => this.Model.Stub.Header.LastPageBytes;
#else
public ushort? Stub_LastPageBytes => this.Model.Stub?.Header?.LastPageBytes;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.Pages"/>
#if NET48
public ushort Stub_Pages => this.Model.Stub.Header.Pages;
#else
public ushort? Stub_Pages => this.Model.Stub?.Header?.Pages;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.RelocationItems"/>
#if NET48
public ushort Stub_RelocationItems => this.Model.Stub.Header.RelocationItems;
#else
public ushort? Stub_RelocationItems => this.Model.Stub?.Header?.RelocationItems;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.HeaderParagraphSize"/>
#if NET48
public ushort Stub_HeaderParagraphSize => this.Model.Stub.Header.HeaderParagraphSize;
#else
public ushort? Stub_HeaderParagraphSize => this.Model.Stub?.Header?.HeaderParagraphSize;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.MinimumExtraParagraphs"/>
#if NET48
public ushort Stub_MinimumExtraParagraphs => this.Model.Stub.Header.MinimumExtraParagraphs;
#else
public ushort? Stub_MinimumExtraParagraphs => this.Model.Stub?.Header?.MinimumExtraParagraphs;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.MaximumExtraParagraphs"/>
#if NET48
public ushort Stub_MaximumExtraParagraphs => this.Model.Stub.Header.MaximumExtraParagraphs;
#else
public ushort? Stub_MaximumExtraParagraphs => this.Model.Stub?.Header?.MaximumExtraParagraphs;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.InitialSSValue"/>
#if NET48
public ushort Stub_InitialSSValue => this.Model.Stub.Header.InitialSSValue;
#else
public ushort? Stub_InitialSSValue => this.Model.Stub?.Header?.InitialSSValue;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.InitialSPValue"/>
#if NET48
public ushort Stub_InitialSPValue => this.Model.Stub.Header.InitialSPValue;
#else
public ushort? Stub_InitialSPValue => this.Model.Stub?.Header?.InitialSPValue;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.Checksum"/>
#if NET48
public ushort Stub_Checksum => this.Model.Stub.Header.Checksum;
#else
public ushort? Stub_Checksum => this.Model.Stub?.Header?.Checksum;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.InitialIPValue"/>
#if NET48
public ushort Stub_InitialIPValue => this.Model.Stub.Header.InitialIPValue;
#else
public ushort? Stub_InitialIPValue => this.Model.Stub?.Header?.InitialIPValue;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.InitialCSValue"/>
#if NET48
public ushort Stub_InitialCSValue => this.Model.Stub.Header.InitialCSValue;
#else
public ushort? Stub_InitialCSValue => this.Model.Stub?.Header?.InitialCSValue;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.RelocationTableAddr"/>
#if NET48
public ushort Stub_RelocationTableAddr => this.Model.Stub.Header.RelocationTableAddr;
#else
public ushort? Stub_RelocationTableAddr => this.Model.Stub?.Header?.RelocationTableAddr;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.OverlayNumber"/>
#if NET48
public ushort Stub_OverlayNumber => this.Model.Stub.Header.OverlayNumber;
#else
public ushort? Stub_OverlayNumber => this.Model.Stub?.Header?.OverlayNumber;
#endif
#endregion
#region PE Extensions
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.Reserved1"/>
#if NET48
public ushort[] Stub_Reserved1 => this.Model.Stub.Header.Reserved1;
#else
public ushort[]? Stub_Reserved1 => this.Model.Stub?.Header?.Reserved1;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.OEMIdentifier"/>
#if NET48
public ushort Stub_OEMIdentifier => this.Model.Stub.Header.OEMIdentifier;
#else
public ushort? Stub_OEMIdentifier => this.Model.Stub?.Header?.OEMIdentifier;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.OEMInformation"/>
#if NET48
public ushort Stub_OEMInformation => this.Model.Stub.Header.OEMInformation;
#else
public ushort? Stub_OEMInformation => this.Model.Stub?.Header?.OEMInformation;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.Reserved2"/>
#if NET48
public ushort[] Stub_Reserved2 => this.Model.Stub.Header.Reserved2;
#else
public ushort[]? Stub_Reserved2 => Model?.Stub?.Header?.Reserved2;
#endif
/// <inheritdoc cref="Models.MSDOS.ExecutableHeader.NewExeHeaderAddr"/>
#if NET48
public uint Stub_NewExeHeaderAddr => this.Model.Stub.Header.NewExeHeaderAddr;
#else
public uint? Stub_NewExeHeaderAddr => this.Model.Stub?.Header?.NewExeHeaderAddr;
#endif
#endregion
#endregion
#region Information Block
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.Signature"/>
#if NET48
public string Signature => this.Model.InformationBlock.Signature;
#else
public string? Signature => this.Model.InformationBlock?.Signature;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ByteOrder"/>
#if NET48
public SabreTools.Models.LinearExecutable.ByteOrder ByteOrder => this.Model.InformationBlock.ByteOrder;
#else
public SabreTools.Models.LinearExecutable.ByteOrder? ByteOrder => this.Model.InformationBlock?.ByteOrder;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.WordOrder"/>
#if NET48
public SabreTools.Models.LinearExecutable.WordOrder WordOrder => this.Model.InformationBlock.WordOrder;
#else
public SabreTools.Models.LinearExecutable.WordOrder? WordOrder => this.Model.InformationBlock?.WordOrder;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ExecutableFormatLevel"/>
#if NET48
public uint ExecutableFormatLevel => this.Model.InformationBlock.ExecutableFormatLevel;
#else
public uint? ExecutableFormatLevel => this.Model.InformationBlock?.ExecutableFormatLevel;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.CPUType"/>
#if NET48
public SabreTools.Models.LinearExecutable.CPUType CPUType => this.Model.InformationBlock.CPUType;
#else
public SabreTools.Models.LinearExecutable.CPUType? CPUType => this.Model.InformationBlock?.CPUType;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ModuleOS"/>
#if NET48
public SabreTools.Models.LinearExecutable.OperatingSystem ModuleOS => this.Model.InformationBlock.ModuleOS;
#else
public SabreTools.Models.LinearExecutable.OperatingSystem? ModuleOS => this.Model.InformationBlock?.ModuleOS;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ModuleVersion"/>
#if NET48
public uint ModuleVersion => this.Model.InformationBlock.ModuleVersion;
#else
public uint? ModuleVersion => this.Model.InformationBlock?.ModuleVersion;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ModuleTypeFlags"/>
#if NET48
public SabreTools.Models.LinearExecutable.ModuleFlags ModuleTypeFlags => this.Model.InformationBlock.ModuleTypeFlags;
#else
public SabreTools.Models.LinearExecutable.ModuleFlags? ModuleTypeFlags => this.Model.InformationBlock?.ModuleTypeFlags;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ModuleNumberPages"/>
#if NET48
public uint ModuleNumberPages => this.Model.InformationBlock.ModuleNumberPages;
#else
public uint? ModuleNumberPages => this.Model.InformationBlock?.ModuleNumberPages;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.InitialObjectCS"/>
#if NET48
public uint InitialObjectCS => this.Model.InformationBlock.InitialObjectCS;
#else
public uint? InitialObjectCS => this.Model.InformationBlock?.InitialObjectCS;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.InitialEIP"/>
#if NET48
public uint InitialEIP => this.Model.InformationBlock.InitialEIP;
#else
public uint? InitialEIP => this.Model.InformationBlock?.InitialEIP;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.InitialObjectSS"/>
#if NET48
public uint InitialObjectSS => this.Model.InformationBlock.InitialObjectSS;
#else
public uint? InitialObjectSS => this.Model.InformationBlock?.InitialObjectSS;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.InitialESP"/>
#if NET48
public uint InitialESP => this.Model.InformationBlock.InitialESP;
#else
public uint? InitialESP => this.Model.InformationBlock?.InitialESP;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.MemoryPageSize"/>
#if NET48
public uint MemoryPageSize => this.Model.InformationBlock.MemoryPageSize;
#else
public uint? MemoryPageSize => this.Model.InformationBlock?.MemoryPageSize;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.BytesOnLastPage"/>
#if NET48
public uint BytesOnLastPage => this.Model.InformationBlock.BytesOnLastPage;
#else
public uint? BytesOnLastPage => this.Model.InformationBlock?.BytesOnLastPage;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.FixupSectionSize"/>
#if NET48
public uint FixupSectionSize => this.Model.InformationBlock.FixupSectionSize;
#else
public uint? FixupSectionSize => this.Model.InformationBlock?.FixupSectionSize;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.FixupSectionChecksum"/>
#if NET48
public uint FixupSectionChecksum => this.Model.InformationBlock.FixupSectionChecksum;
#else
public uint? FixupSectionChecksum => this.Model.InformationBlock?.FixupSectionChecksum;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.LoaderSectionSize"/>
#if NET48
public uint LoaderSectionSize => this.Model.InformationBlock.LoaderSectionSize;
#else
public uint? LoaderSectionSize => this.Model.InformationBlock?.LoaderSectionSize;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.LoaderSectionChecksum"/>
#if NET48
public uint LoaderSectionChecksum => this.Model.InformationBlock.LoaderSectionChecksum;
#else
public uint? LoaderSectionChecksum => this.Model.InformationBlock?.LoaderSectionChecksum;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ObjectTableOffset"/>
#if NET48
public uint ObjectTableOffset => this.Model.InformationBlock.ObjectTableOffset;
#else
public uint? ObjectTableOffset => this.Model.InformationBlock?.ObjectTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ObjectTableCount"/>
#if NET48
public uint ObjectTableCount => this.Model.InformationBlock.ObjectTableCount;
#else
public uint? ObjectTableCount => this.Model.InformationBlock?.ObjectTableCount;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ObjectPageMapOffset"/>
#if NET48
public uint ObjectPageMapOffset => this.Model.InformationBlock.ObjectPageMapOffset;
#else
public uint? ObjectPageMapOffset => this.Model.InformationBlock?.ObjectPageMapOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ObjectIterateDataMapOffset"/>
#if NET48
public uint ObjectIterateDataMapOffset => this.Model.InformationBlock.ObjectIterateDataMapOffset;
#else
public uint? ObjectIterateDataMapOffset => this.Model.InformationBlock?.ObjectIterateDataMapOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ResourceTableOffset"/>
#if NET48
public uint ResourceTableOffset => this.Model.InformationBlock.ResourceTableOffset;
#else
public uint? ResourceTableOffset => this.Model.InformationBlock?.ResourceTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ResourceTableCount"/>
#if NET48
public uint ResourceTableCount => this.Model.InformationBlock.ResourceTableCount;
#else
public uint? ResourceTableCount => this.Model.InformationBlock?.ResourceTableCount;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ResidentNamesTableOffset"/>
#if NET48
public uint ResidentNamesTableOffset => this.Model.InformationBlock.ResidentNamesTableOffset;
#else
public uint? ResidentNamesTableOffset => this.Model.InformationBlock?.ResidentNamesTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.EntryTableOffset"/>
#if NET48
public uint EntryTableOffset => this.Model.InformationBlock.EntryTableOffset;
#else
public uint? EntryTableOffset => this.Model.InformationBlock?.EntryTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ModuleDirectivesTableOffset"/>
#if NET48
public uint ModuleDirectivesTableOffset => this.Model.InformationBlock.ModuleDirectivesTableOffset;
#else
public uint? ModuleDirectivesTableOffset => this.Model.InformationBlock?.ModuleDirectivesTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ModuleDirectivesCount"/>
#if NET48
public uint ModuleDirectivesCount => this.Model.InformationBlock.ModuleDirectivesCount;
#else
public uint? ModuleDirectivesCount => this.Model.InformationBlock?.ModuleDirectivesCount;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.FixupPageTableOffset"/>
#if NET48
public uint FixupPageTableOffset => this.Model.InformationBlock.FixupPageTableOffset;
#else
public uint? FixupPageTableOffset => this.Model.InformationBlock?.FixupPageTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.FixupRecordTableOffset"/>
#if NET48
public uint FixupRecordTableOffset => this.Model.InformationBlock.FixupRecordTableOffset;
#else
public uint? FixupRecordTableOffset => this.Model.InformationBlock?.FixupRecordTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ImportedModulesNameTableOffset"/>
#if NET48
public uint ImportedModulesNameTableOffset => this.Model.InformationBlock.ImportedModulesNameTableOffset;
#else
public uint? ImportedModulesNameTableOffset => this.Model.InformationBlock?.ImportedModulesNameTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ImportedModulesCount"/>
#if NET48
public uint ImportedModulesCount => this.Model.InformationBlock.ImportedModulesCount;
#else
public uint? ImportedModulesCount => this.Model.InformationBlock?.ImportedModulesCount;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ImportProcedureNameTableOffset"/>
#if NET48
public uint ImportProcedureNameTableOffset => this.Model.InformationBlock.ImportProcedureNameTableOffset;
#else
public uint? ImportProcedureNameTableOffset => this.Model.InformationBlock?.ImportProcedureNameTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.PerPageChecksumTableOffset"/>
#if NET48
public uint PerPageChecksumTableOffset => this.Model.InformationBlock.PerPageChecksumTableOffset;
#else
public uint? PerPageChecksumTableOffset => this.Model.InformationBlock?.PerPageChecksumTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.DataPagesOffset"/>
#if NET48
public uint DataPagesOffset => this.Model.InformationBlock.DataPagesOffset;
#else
public uint? DataPagesOffset => this.Model.InformationBlock?.DataPagesOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.PreloadPageCount"/>
#if NET48
public uint PreloadPageCount => this.Model.InformationBlock.PreloadPageCount;
#else
public uint? PreloadPageCount => this.Model.InformationBlock?.PreloadPageCount;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.NonResidentNamesTableOffset"/>
#if NET48
public uint NonResidentNamesTableOffset => this.Model.InformationBlock.NonResidentNamesTableOffset;
#else
public uint? NonResidentNamesTableOffset => this.Model.InformationBlock?.NonResidentNamesTableOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.NonResidentNamesTableLength"/>
#if NET48
public uint NonResidentNamesTableLength => this.Model.InformationBlock.NonResidentNamesTableLength;
#else
public uint? NonResidentNamesTableLength => this.Model.InformationBlock?.NonResidentNamesTableLength;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.NonResidentNamesTableChecksum"/>
#if NET48
public uint NonResidentNamesTableChecksum => this.Model.InformationBlock.NonResidentNamesTableChecksum;
#else
public uint? NonResidentNamesTableChecksum => this.Model.InformationBlock?.NonResidentNamesTableChecksum;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.AutomaticDataObject"/>
#if NET48
public uint AutomaticDataObject => this.Model.InformationBlock.AutomaticDataObject;
#else
public uint? AutomaticDataObject => this.Model.InformationBlock?.AutomaticDataObject;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.DebugInformationOffset"/>
#if NET48
public uint DebugInformationOffset => this.Model.InformationBlock.DebugInformationOffset;
#else
public uint? DebugInformationOffset => this.Model.InformationBlock?.DebugInformationOffset;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.DebugInformationLength"/>
#if NET48
public uint DebugInformationLength => this.Model.InformationBlock.DebugInformationLength;
#else
public uint? DebugInformationLength => this.Model.InformationBlock?.DebugInformationLength;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.PreloadInstancePagesNumber"/>
#if NET48
public uint PreloadInstancePagesNumber => this.Model.InformationBlock.PreloadInstancePagesNumber;
#else
public uint? PreloadInstancePagesNumber => this.Model.InformationBlock?.PreloadInstancePagesNumber;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.DemandInstancePagesNumber"/>
#if NET48
public uint DemandInstancePagesNumber => this.Model.InformationBlock.DemandInstancePagesNumber;
#else
public uint? DemandInstancePagesNumber => this.Model.InformationBlock?.DemandInstancePagesNumber;
#endif
/// <inheritdoc cref="Models.LinearExecutable.InformationBlock.ExtraHeapAllocation"/>
#if NET48
public uint ExtraHeapAllocation => this.Model.InformationBlock.ExtraHeapAllocation;
#else
public uint? ExtraHeapAllocation => this.Model.InformationBlock?.ExtraHeapAllocation;
#endif
#endregion
#region Tables
/// <inheritdoc cref="Models.LinearExecutable.ObjectTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.ObjectTableEntry[] ObjectTable => this.Model.ObjectTable;
#else
public SabreTools.Models.LinearExecutable.ObjectTableEntry?[]? ObjectTable => this.Model.ObjectTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.ObjectPageMap"/>
#if NET48
public SabreTools.Models.LinearExecutable.ObjectPageMapEntry[] ObjectPageMap => this.Model.ObjectPageMap;
#else
public SabreTools.Models.LinearExecutable.ObjectPageMapEntry?[]? ObjectPageMap => this.Model.ObjectPageMap;
#endif
/// <inheritdoc cref="Models.LinearExecutable.ResourceTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.ResourceTableEntry[] ResourceTable => this.Model.ResourceTable;
#else
public SabreTools.Models.LinearExecutable.ResourceTableEntry?[]? ResourceTable => this.Model.ResourceTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.ResidentNamesTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.ResidentNamesTableEntry[] ResidentNamesTable => this.Model.ResidentNamesTable;
#else
public SabreTools.Models.LinearExecutable.ResidentNamesTableEntry?[]? ResidentNamesTable => this.Model.ResidentNamesTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.EntryTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.EntryTableBundle[] EntryTable => this.Model.EntryTable;
#else
public SabreTools.Models.LinearExecutable.EntryTableBundle?[]? EntryTable => this.Model.EntryTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.ModuleFormatDirectivesTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.ModuleFormatDirectivesTableEntry[] ModuleFormatDirectivesTable => this.Model.ModuleFormatDirectivesTable;
#else
public SabreTools.Models.LinearExecutable.ModuleFormatDirectivesTableEntry?[]? ModuleFormatDirectivesTable => this.Model.ModuleFormatDirectivesTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.VerifyRecordDirectiveTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.VerifyRecordDirectiveTableEntry[] VerifyRecordDirectiveTable => this.Model.VerifyRecordDirectiveTable;
#else
public SabreTools.Models.LinearExecutable.VerifyRecordDirectiveTableEntry?[]? VerifyRecordDirectiveTable => this.Model.VerifyRecordDirectiveTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.PerPageChecksumTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.PerPageChecksumTableEntry[] PerPageChecksumTable => this.Model.PerPageChecksumTable;
#else
public SabreTools.Models.LinearExecutable.PerPageChecksumTableEntry?[]? PerPageChecksumTable => this.Model.PerPageChecksumTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.FixupPageTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.FixupPageTableEntry[] FixupPageTable => this.Model.FixupPageTable;
#else
public SabreTools.Models.LinearExecutable.FixupPageTableEntry?[]? FixupPageTable => this.Model.FixupPageTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.FixupRecordTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.FixupRecordTableEntry[] FixupRecordTable => this.Model.FixupRecordTable;
#else
public SabreTools.Models.LinearExecutable.FixupRecordTableEntry?[]? FixupRecordTable => this.Model.FixupRecordTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.ImportModuleNameTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.ImportModuleNameTableEntry[] ImportModuleNameTable => this.Model.ImportModuleNameTable;
#else
public SabreTools.Models.LinearExecutable.ImportModuleNameTableEntry?[]? ImportModuleNameTable => this.Model.ImportModuleNameTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.ImportModuleProcedureNameTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.ImportModuleProcedureNameTableEntry[] ImportModuleProcedureNameTable => this.Model.ImportModuleProcedureNameTable;
#else
public SabreTools.Models.LinearExecutable.ImportModuleProcedureNameTableEntry?[]? ImportModuleProcedureNameTable => this.Model.ImportModuleProcedureNameTable;
#endif
/// <inheritdoc cref="Models.LinearExecutable.NonResidentNamesTable"/>
#if NET48
public SabreTools.Models.LinearExecutable.NonResidentNamesTableEntry[] NonResidentNamesTable => this.Model.NonResidentNamesTable;
#else
public SabreTools.Models.LinearExecutable.NonResidentNamesTableEntry?[]? NonResidentNamesTable => this.Model.NonResidentNamesTable;
#endif
#endregion
#region Debug Information
/// <inheritdoc cref="Models.LinearExecutable.DebugInformation.Signature"/>
#if NET48
public string DI_Signature => this.Model.DebugInformation?.Signature;
#else
public string? DI_Signature => this.Model.DebugInformation?.Signature;
#endif
/// <inheritdoc cref="Models.LinearExecutable.DebugInformation.FormatType"/>
public SabreTools.Models.LinearExecutable.DebugFormatType? DI_FormatType => this.Model.DebugInformation?.FormatType;
/// <inheritdoc cref="Models.LinearExecutable.DebugInformation.DebuggerData"/>
#if NET48
public byte[] DebuggerData => this.Model.DebugInformation?.DebuggerData;
#else
public byte[]? DebuggerData => this.Model.DebugInformation?.DebuggerData;
#endif
#endregion
#endregion
#region Extension Properties
// TODO: Determine what extension properties are needed
#endregion
#region Constructors
/// <inheritdoc/>

Some files were not shown because too many files have changed in this diff Show More