diff --git a/BurnOutSharp.Models/PortableExecutable/SecuROMAddD.cs b/BurnOutSharp.Models/PortableExecutable/SecuROMAddD.cs new file mode 100644 index 00000000..206f5b26 --- /dev/null +++ b/BurnOutSharp.Models/PortableExecutable/SecuROMAddD.cs @@ -0,0 +1,107 @@ +using System.Runtime.InteropServices; + +namespace BurnOutSharp.Models.PortableExecutable +{ + /// + /// Overlay data associated with SecuROM executables + /// + /// + /// All information in this file has been researched in a clean room + /// environment by using sample from legally obtained software that + /// is protected by SecuROM. + /// + [StructLayout(LayoutKind.Sequential)] + public class SecuROMAddD + { + /// + /// "AddD", Identifier? + /// + public uint AddD; + + /// + /// Unknown (Entry count?) + /// + public uint EntryCount; + + /// + /// Version + /// + public string Version; + + /// + /// Unknown (Build? Formatted as a string) + /// + public uint Build; + + /// + /// Unknown (0x14) + /// + /// 498211340 [6668, 3762] in the sample + public uint Unknown14h; + + /// + /// Unknown (0x18), possibly entry 1 date/time? + /// + /// 783556112 [7696, 11956] / 1994-10-30 22:28:32 in the sample + public uint Unknown18h; + + /// + /// Unknown (0x1C), possibly entry 2 date/time? + /// + /// 861548360 [12104, 13146] / 1997-04-20 14:59:20 in the sample + public uint Unknown1Ch; + + /// + /// Unknown (0x20), possibly entry 3 date/time? + /// + /// 879113110 [13206, 13414] / 1997-11-09 22:05:10 in the sample + public uint Unknown20h; + + /// + /// Unknown (0x24) + /// + /// 4212741 [18437, 64] in the sample + public uint Unknown24h; + + /// + /// Unknown (0x28) + /// + /// 1364015180 [14412, 20813] in the sample + public uint Unknown28h; + + /// + /// Unknown (0x2C) + /// + /// 2 [2, 0] in the sample + public uint Unknown2Ch; + + /// + /// Unknown (0x30) + /// + /// 4270144 [10304, 65] in the sample + public uint Unknown30h; + + /// + /// Unknown (0x34) + /// + /// 132 [132, 0] in the sample + public uint Unknown34h; + + /// + /// Unknown (0x38) + /// + /// 3147176 [1448, 48] in the sample + public uint Unknown38h; + + /// + /// Unknown (0x3C) + /// + /// 1244976 [65328, 18] in the sample + public uint Unknown3Ch; + + /// + /// Entry table + /// + public SecuROMAddDEntry[] Entries; + } +} diff --git a/BurnOutSharp.Models/PortableExecutable/SecuROMAddDEntry.cs b/BurnOutSharp.Models/PortableExecutable/SecuROMAddDEntry.cs new file mode 100644 index 00000000..47c92de2 --- /dev/null +++ b/BurnOutSharp.Models/PortableExecutable/SecuROMAddDEntry.cs @@ -0,0 +1,78 @@ +using System.Runtime.InteropServices; + +namespace BurnOutSharp.Models.PortableExecutable +{ + /// + /// Overlay data associated with SecuROM executables + /// + /// + /// All information in this file has been researched in a clean room + /// environment by using sample from legally obtained software that + /// is protected by SecuROM. + /// + [StructLayout(LayoutKind.Sequential)] + public class SecuROMAddDEntry + { + /// + /// Physical offset of the embedded file + /// + public uint PhysicalOffset; + + /// + /// Length of the embedded file + /// + /// The last entry seems to be 4 bytes short + public uint Length; + + /// + /// Unknown (0x08) + /// + /// 3149224 [3496, 48] in the sample (all 3 entries) + public uint Unknown08h; + + /// + /// Unknown (0x0C) + /// + /// 3147176 [1448, 48] in the sample (all 3 entries) + public uint Unknown0Ch; + + /// + /// Unknown (0x10) + /// + /// 3149224 [3496, 48] in the sample (all 3 entries) + public uint Unknown10h; + + /// + /// Unknown (0x14) + /// + /// 1245044 [65396, 18] in the sample (all 3 entries) + public uint Unknown14h; + + /// + /// Unknown (0x18) + /// + /// 4214725 [20421, 64] in the sample (all 3 entries) + public uint Unknown18h; + + /// + /// Unknown (0x1C) + /// + /// 2 [2, 0] in the sample (all 3 entries) + public uint Unknown1Ch; + + /// + /// Entry file name (null-terminated) + /// + /// 12 bytes long in the sample (all 3 entries) + public string FileName; + + /// + /// Unknown (0x2C) + /// + /// + /// Offset based on consistent-sized filenames (12 bytes) + /// 132 [132, 0] in the sample (all 3 entries) + /// + public uint Unknown2Ch; + } +}