Files
BinaryObjectScanner/BurnOutSharp.Models/LinearExecutable/Executable.cs

102 lines
3.3 KiB
C#
Raw Normal View History

2022-11-04 10:34:49 -07:00
namespace BurnOutSharp.Models.LinearExecutable
{
/// <summary>
/// The `LINEAR` executable-file header contains information that the loader requires for
/// segmented executable files. This information includes the linker version number, data
/// specified by linker, data specified by resource compiler, tables of segment data, tables
/// of resource data, and so on. The following illustrations shows the LE file header:
/// </summary>
/// <see href="https://faydoc.tripod.com/formats/exe-LE.htm"/>
/// <see href="http://www.edm2.com/index.php/LX_-_Linear_eXecutable_Module_Format_Description"/>
public class Executable
{
/// <summary>
2022-11-04 21:05:03 -07:00
/// MS-DOS executable stub
2022-11-04 10:34:49 -07:00
/// </summary>
2022-11-04 21:05:03 -07:00
public MSDOS.Executable Stub { get; set; }
2022-11-04 12:55:43 -07:00
/// <summary>
/// Information block
/// </summary>
public InformationBlock InformationBlock { get; set; }
2022-11-04 12:59:50 -07:00
/// <summary>
/// Object table
/// </summary>
public ObjectTableEntry[] ObjectTable { get; set; }
2022-11-04 13:48:30 -07:00
/// <summary>
/// Object page table
/// </summary>
public ObjectPageTableEntry[] ObjectPageTable { get; set; }
2022-11-04 14:51:57 -07:00
// TODO: Object iterate data map table [Does this exist?]
/// <summary>
/// Resource table
/// </summary>
public ResourceTableEntry[] ResourceTable { get; set; }
2022-11-04 15:00:11 -07:00
/// <summary>
/// Resident Name table
/// </summary>
public ResidentNameTableEntry[] ResidentNameTable { get; set; }
2022-11-04 16:51:04 -07:00
/// <summary>
/// Entry table
/// </summary>
public EntryTableEntry[] EntryTable { get; set; }
/// <summary>
/// Module format directives table (optional)
/// </summary>
public ModuleFormatDirectivesTableEntry[] ModuleFormatDirectivesTable { get; set; }
/// <summary>
/// Verify record directive table (optional)
/// </summary>
public VerifyRecordDirectiveTableEntry[] VerifyRecordDirectiveTable { get; set; }
2022-11-04 15:29:04 -07:00
/// <summary>
/// Per-Page checksum table
/// </summary>
public PerPageChecksumTableEntry[] PerPageChecksumTable { get; set; }
2022-11-04 16:09:20 -07:00
/// <summary>
/// Fix-up page table
/// </summary>
public FixupPageTableEntry[] FixupPageTable { get; set; }
2022-11-04 21:00:02 -07:00
/// <summary>
/// Fix-up record table
/// </summary>
public FixupRecordTableEntry[] FixupRecordTable { get; set; }
2022-11-04 15:31:59 -07:00
/// <summary>
2022-11-04 15:36:38 -07:00
/// Import module name table
2022-11-04 15:31:59 -07:00
/// </summary>
public ImportModuleNameTableEntry[] ImportModuleNameTable { get; set; }
2022-11-04 15:36:38 -07:00
/// <summary>
/// Import procedure name table
/// </summary>
public ImportModuleProcedureNameTableEntry[] ImportModuleProcedureNameTable { get; set; }
2022-11-04 12:55:43 -07:00
2022-11-04 15:00:11 -07:00
// TODO: Preload Pages
// TODO: Demand Load Pages
// TODO: Iterated Pages
/// <summary>
/// Non-Resident Name table
/// </summary>
public NonResidentNameTableEntry[] NonResidentNameTable { get; set; }
2022-11-04 12:55:43 -07:00
2022-11-04 16:09:20 -07:00
// TODO: Non-resident directives data (Undefined)
2022-11-04 16:04:01 -07:00
/// <summary>
/// Debug information
/// </summary>
public DebugInformation DebugInformation { get; set; }
2022-11-04 10:34:49 -07:00
}
}