using System.Runtime.InteropServices; namespace BinaryObjectScanner.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 sealed class SecuROMAddD { /// /// "AddD", Identifier? /// public uint Signature; /// /// 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; /// /// Version, always 8 bytes? /// public string Version; /// /// Unknown (Build? Formatted as a string) /// 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; /// /// Entry table /// public SecuROMAddDEntry[] Entries; } }