using System.Runtime.InteropServices; namespace SabreTools.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. /// public sealed class SecuROMAddD { /// /// "AddD", Identifier? /// public uint Signature { get; set; } /// s /// Unknown (Entry count?) /// /// /// 3 in EXPUNGED, 3.17.00.0017, 3.17.00.0019 /// 3 in 4.47.00.0039, 4.84.00.0054, 4.84.69.0037, 4.84.76.7966, 4.84.76.7968, 4.85.07.0009 /// public uint EntryCount { get; set; } /// /// Version, always 8 bytes? /// [MarshalAs(UnmanagedType.LPStr)] public string? Version; /// /// Unknown (Build? Formatted as a string) /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public char[]? Build; /// /// Unknown (0x14h), Variable number of bytes before entry table /// /// /// 44 bytes in EXPUNGED, 3.17.00.0017, 3.17.00.0019, 4.47.00.0039 /// 112 bytes in 4.84.00.0054, 4.84.69.0037, 4.84.76.7966, 4.84.76.7968, 4.85.07.0009 /// 112 byte range contains a fixed-length string at 0x2C, possibly a product ID? /// "801400-001" in 4.84.00.0054 /// "594130-001" in 4.84.69.0037 /// "554900-001" in 4.84.76.7966 /// "554900-001" in 4.84.76.7968 /// "548520-001" in 4.85.07.0009 /// public byte[]? Unknown14h { get; set; } /// /// Entry table /// public SecuROMAddDEntry?[]? Entries { get; set; } } }