mirror of
https://github.com/SabreTools/BinaryObjectScanner.git
synced 2026-07-11 03:17:00 +00:00
Use exposed model directly in more places
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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}";
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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 };
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
//}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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()}";
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user