From 115ea028227e6d64cc81f3071067a98ffb3c1987 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 17 Apr 2024 12:12:01 -0400 Subject: [PATCH] Update libraries --- .../BinaryObjectScanner.csproj | 8 +- BinaryObjectScanner/FileType/VPK.cs | 2 +- BinaryObjectScanner/Packer/WiseInstaller.cs | 49 +----- BinaryObjectScanner/Protection/Macrovision.cs | 2 +- .../Utilities/WrapperFactory.cs | 8 +- Test/Extractor.cs | 2 +- Test/Printer.cs | 141 +++++++++++++++--- Test/Test.csproj | 6 +- 8 files changed, 141 insertions(+), 77 deletions(-) diff --git a/BinaryObjectScanner/BinaryObjectScanner.csproj b/BinaryObjectScanner/BinaryObjectScanner.csproj index d106e19d..7cbb4d67 100644 --- a/BinaryObjectScanner/BinaryObjectScanner.csproj +++ b/BinaryObjectScanner/BinaryObjectScanner.csproj @@ -81,14 +81,14 @@ - + - + - + - + diff --git a/BinaryObjectScanner/FileType/VPK.cs b/BinaryObjectScanner/FileType/VPK.cs index 06a04951..4ccf2994 100644 --- a/BinaryObjectScanner/FileType/VPK.cs +++ b/BinaryObjectScanner/FileType/VPK.cs @@ -2,7 +2,7 @@ using System; using System.IO; using System.Linq; using BinaryObjectScanner.Interfaces; -using SabreTools.IO; +using SabreTools.IO.Extensions; namespace BinaryObjectScanner.FileType { diff --git a/BinaryObjectScanner/Packer/WiseInstaller.cs b/BinaryObjectScanner/Packer/WiseInstaller.cs index 12a18d39..7d7d4f60 100644 --- a/BinaryObjectScanner/Packer/WiseInstaller.cs +++ b/BinaryObjectScanner/Packer/WiseInstaller.cs @@ -3,9 +3,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; using BinaryObjectScanner.Interfaces; -using SabreTools.IO; +using SabreTools.IO.Extensions; using SabreTools.Matching; using SabreTools.Serialization.Wrappers; +using WiseUnpacker; using Wise = WiseUnpacker.WiseUnpacker; namespace BinaryObjectScanner.Packer @@ -151,14 +152,14 @@ namespace BinaryObjectScanner.Packer // Ensure that we have an archive end if (format.ArchiveEnd > 0) { - overlayOffset = dataStart + format.ArchiveEnd; + overlayOffset = (int)(dataStart + format.ArchiveEnd); int archiveEndLoaded = overlayData.ReadInt32(ref overlayOffset); if (archiveEndLoaded != 0) format.ArchiveEnd = archiveEndLoaded; } // Skip to the start of the archive - overlayOffset = dataStart + format.ArchiveStart; + overlayOffset = (int)(dataStart + format.ArchiveStart); // Skip over the initialization text, if we expect it if (format.InitText) @@ -316,47 +317,5 @@ namespace BinaryObjectScanner.Packer return null; } - - /// - /// Class representing the properties of each recognized Wise installer format - /// - /// TODO: Requires all fields to be writable in package before replacement - private class FormatProperty - { - /// - /// Offset to the executable data - /// - public int ExecutableOffset { get; set; } - - /// - /// Indicates if this format includes a DLL at the start or not - /// - public bool Dll { get; set; } - - /// - /// Offset within the data where the archive starts - /// - public int ArchiveStart { get; set; } - - /// - /// Position in the archive head of the archive end - /// - public int ArchiveEnd { get; set; } - - /// - /// Format includes initialization text - /// - public bool InitText { get; set; } - - /// - /// Position of the filename within the data - /// - public int FilenamePosition { get; set; } - - /// - /// Format does not include a CRC - /// - public bool NoCrc { get; set; } - } } } diff --git a/BinaryObjectScanner/Protection/Macrovision.cs b/BinaryObjectScanner/Protection/Macrovision.cs index cb7ccb3b..31d5f432 100644 --- a/BinaryObjectScanner/Protection/Macrovision.cs +++ b/BinaryObjectScanner/Protection/Macrovision.cs @@ -7,7 +7,7 @@ using System.IO; using System.Linq; using BinaryObjectScanner.Interfaces; using BinaryObjectScanner.Utilities; -using SabreTools.IO; +using SabreTools.IO.Extensions; using SabreTools.Matching; using SabreTools.Serialization.Wrappers; diff --git a/BinaryObjectScanner/Utilities/WrapperFactory.cs b/BinaryObjectScanner/Utilities/WrapperFactory.cs index 95ee17da..ff4130c2 100644 --- a/BinaryObjectScanner/Utilities/WrapperFactory.cs +++ b/BinaryObjectScanner/Utilities/WrapperFactory.cs @@ -1,5 +1,5 @@ using System.IO; -using SabreTools.IO; +using SabreTools.IO.Extensions; using SabreTools.Matching; using SabreTools.Serialization.Interfaces; using SabreTools.Serialization.Wrappers; @@ -11,7 +11,7 @@ namespace BinaryObjectScanner.Utilities /// /// Create an instance of a wrapper based on file type /// - public static IWrapper? CreateWrapper(SupportedFileType fileType, Stream? data) + public static object? CreateWrapper(SupportedFileType fileType, Stream? data) { switch (fileType) { @@ -60,14 +60,14 @@ namespace BinaryObjectScanner.Utilities /// /// Stream data to parse /// IWrapper representing the executable, null on error - public static IWrapper? CreateExecutableWrapper(Stream? stream) + public static object? CreateExecutableWrapper(Stream? stream) { // If we have no stream if (stream == null) return null; // Try to get an MS-DOS wrapper first - IWrapper? wrapper = MSDOS.Create(stream); + var wrapper = MSDOS.Create(stream); if (wrapper == null || !(wrapper is MSDOS msdos)) return null; diff --git a/Test/Extractor.cs b/Test/Extractor.cs index 89f068cf..c31ff5bd 100644 --- a/Test/Extractor.cs +++ b/Test/Extractor.cs @@ -6,7 +6,7 @@ using BinaryObjectScanner.Utilities; #if NET40_OR_GREATER || NETCOREAPP using OpenMcdf; #endif -using SabreTools.IO; +using SabreTools.IO.Extensions; using SabreTools.Serialization.Wrappers; #if NET462_OR_GREATER || NETCOREAPP using SharpCompress.Archives; diff --git a/Test/Printer.cs b/Test/Printer.cs index 43f4e51d..6cc0dcec 100644 --- a/Test/Printer.cs +++ b/Test/Printer.cs @@ -2,8 +2,7 @@ using System; using System.IO; using System.Text; using BinaryObjectScanner.Utilities; -using SabreTools.IO; -using SabreTools.Serialization.Interfaces; +using SabreTools.IO.Extensions; using SabreTools.Serialization.Wrappers; namespace Test @@ -79,25 +78,23 @@ namespace Test return; } - // Print the wrapper name - Console.WriteLine($"{wrapper.Description()} wrapper created successfully!"); - // Get the base info output name string filenameBase = $"info-{DateTime.Now:yyyy-MM-dd_HHmmss.ffff}"; #if NET6_0_OR_GREATER - // If we have the JSON flag - if (json) - { - // Create the output data - string serializedData = wrapper.ExportJSON(); - Console.WriteLine(serializedData); + // If we have the JSON flag + if (json) + { + // Create the output data + string serializedData = wrapper.ExportJSON(); + Console.WriteLine(serializedData); - // Write the output data - using var jsw = new StreamWriter(File.OpenWrite($"{filenameBase}.json")); - jsw.WriteLine(serializedData); - } + // Write the output data + using var jsw = new StreamWriter(File.OpenWrite($"{filenameBase}.json")); + jsw.WriteLine(serializedData); + } #endif + // Create the output data var builder = wrapper.PrettyPrint(); Console.WriteLine(builder); @@ -118,7 +115,7 @@ namespace Test /// /// Export the item information as pretty-printed text /// - private static StringBuilder PrettyPrint(this IWrapper wrapper) + private static StringBuilder PrettyPrint(this object wrapper) { return wrapper switch { @@ -133,6 +130,7 @@ namespace Test IRD item => item.PrettyPrint(), LinearExecutable item => item.PrettyPrint(), MicrosoftCabinet item => item.PrettyPrint(), + MoPaQ item => item.PrettyPrint(), MSDOS item => item.PrettyPrint(), N3DS item => item.PrettyPrint(), NCF item => item.PrettyPrint(), @@ -140,7 +138,9 @@ namespace Test Nitro item => item.PrettyPrint(), PAK item => item.PrettyPrint(), PFF item => item.PrettyPrint(), + PIC item => item.PrettyPrint(), PlayJAudioFile item => item.PrettyPrint(), + //PlayJPlaylist item => item.PrettyPrint(), PortableExecutable item => item.PrettyPrint(), Quantum item => item.PrettyPrint(), SGA item => item.PrettyPrint(), @@ -151,14 +151,59 @@ namespace Test XMID item => item.PrettyPrint(), XZP item => item.PrettyPrint(), _ => new StringBuilder(), + }; ; + } + +#if NET6_0_OR_GREATER + /// + /// Export the item information as JSON + /// + private static string ExportJSON(this object wrapper) + { + return wrapper switch + { + AACSMediaKeyBlock item => item.ExportJSON(), + BDPlusSVM item => item.ExportJSON(), + BFPK item => item.ExportJSON(), + BSP item => item.ExportJSON(), + CFB item => item.ExportJSON(), + CIA item => item.ExportJSON(), + GCF item => item.ExportJSON(), + InstallShieldCabinet item => item.ExportJSON(), + IRD item => item.ExportJSON(), + LinearExecutable item => item.ExportJSON(), + MicrosoftCabinet item => item.ExportJSON(), + MoPaQ item => item.ExportJSON(), + MSDOS item => item.ExportJSON(), + N3DS item => item.ExportJSON(), + NCF item => item.ExportJSON(), + NewExecutable item => item.ExportJSON(), + Nitro item => item.ExportJSON(), + PAK item => item.ExportJSON(), + PFF item => item.ExportJSON(), + PIC item => item.ExportJSON(), + PlayJAudioFile item => item.ExportJSON(), + PlayJPlaylist item => item.ExportJSON(), + PortableExecutable item => item.ExportJSON(), + Quantum item => item.ExportJSON(), + SGA item => item.ExportJSON(), + VBSP item => item.ExportJSON(), + VPK item => item.ExportJSON(), + WAD item => item.ExportJSON(), + XeMID item => item.ExportJSON(), + XMID item => item.ExportJSON(), + XZP item => item.ExportJSON(), + _ => string.Empty, }; } +#endif /// /// Export the item information as pretty-printed text /// private static StringBuilder PrettyPrint(this AACSMediaKeyBlock item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.AACSMediaKeyBlock.Print(builder, item.Model); return builder; @@ -169,6 +214,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this BDPlusSVM item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.BDPlusSVM.Print(builder, item.Model); return builder; @@ -179,6 +225,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this BFPK item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.BFPK.Print(builder, item.Model); return builder; @@ -189,6 +236,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this BSP item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.BSP.Print(builder, item.Model); return builder; @@ -199,6 +247,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this CFB item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.CFB.Print(builder, item.Model); return builder; @@ -209,6 +258,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this CIA item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.CIA.Print(builder, item.Model); return builder; @@ -219,6 +269,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this GCF item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.GCF.Print(builder, item.Model); return builder; @@ -229,6 +280,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this InstallShieldCabinet item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.InstallShieldCabinet.Print(builder, item.Model); return builder; @@ -239,6 +291,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this IRD item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.IRD.Print(builder, item.Model); return builder; @@ -249,6 +302,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this LinearExecutable item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.LinearExecutable.Print(builder, item.Model); return builder; @@ -259,16 +313,29 @@ namespace Test /// private static StringBuilder PrettyPrint(this MicrosoftCabinet item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.MicrosoftCabinet.Print(builder, item.Model); return builder; } + /// + /// Export the item information as pretty-printed text + /// + private static StringBuilder PrettyPrint(this MoPaQ item) + { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); + var builder = new StringBuilder(); + SabreTools.Printing.MoPaQ.Print(builder, item.Model); + return builder; + } + /// /// Export the item information as pretty-printed text /// private static StringBuilder PrettyPrint(this MSDOS item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.MSDOS.Print(builder, item.Model); return builder; @@ -279,6 +346,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this N3DS item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.N3DS.Print(builder, item.Model); return builder; @@ -289,6 +357,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this NCF item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.NCF.Print(builder, item.Model); return builder; @@ -299,6 +368,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this NewExecutable item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.NewExecutable.Print(builder, item.Model); return builder; @@ -309,6 +379,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this Nitro item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.Nitro.Print(builder, item.Model); return builder; @@ -319,6 +390,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this PAK item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.PAK.Print(builder, item.Model); return builder; @@ -329,6 +401,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this PFF item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.PFF.Print(builder, item.Model); return builder; @@ -337,18 +410,42 @@ namespace Test /// /// Export the item information as pretty-printed text /// - private static StringBuilder PrettyPrint(this PlayJAudioFile item) + private static StringBuilder PrettyPrint(this PIC item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); - SabreTools.Printing.PlayJAudioFile.Print(builder, item.Model); + SabreTools.Printing.PIC.Print(builder, item.Model); return builder; } + /// + /// Export the item information as pretty-printed text + /// + private static StringBuilder PrettyPrint(this PlayJAudioFile item) + { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); + var builder = new StringBuilder(); + SabreTools.Printing.PlayJAudioFile.Print(builder, item.Model); + return builder; + } + + ///// + ///// Export the item information as pretty-printed text + ///// + //private static StringBuilder PrettyPrint(this PlayJPlaylist item) + //{ + // Console.WriteLine($"{item.Description()} wrapper created successfully!"); + // var builder = new StringBuilder(); + // SabreTools.Printing.PlayJPlaylist.Print(builder, item.Model); + // return builder; + //} + /// /// Export the item information as pretty-printed text /// private static StringBuilder PrettyPrint(this PortableExecutable item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.PortableExecutable.Print(builder, item.Model); return builder; @@ -359,6 +456,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this Quantum item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.Quantum.Print(builder, item.Model); return builder; @@ -369,6 +467,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this SGA item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.SGA.Print(builder, item.Model); return builder; @@ -379,6 +478,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this VBSP item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.VBSP.Print(builder, item.Model); return builder; @@ -389,6 +489,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this VPK item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.VPK.Print(builder, item.Model); return builder; @@ -399,6 +500,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this WAD item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.WAD.Print(builder, item.Model); return builder; @@ -409,6 +511,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this XeMID item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.XeMID.Print(builder, item.Model); return builder; @@ -419,6 +522,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this XMID item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.XMID.Print(builder, item.Model); return builder; @@ -429,6 +533,7 @@ namespace Test /// private static StringBuilder PrettyPrint(this XZP item) { + Console.WriteLine($"{item.Description()} wrapper created successfully!"); var builder = new StringBuilder(); SabreTools.Printing.XZP.Print(builder, item.Model); return builder; diff --git a/Test/Test.csproj b/Test/Test.csproj index 1444998a..9f6e36ec 100644 --- a/Test/Test.csproj +++ b/Test/Test.csproj @@ -27,12 +27,12 @@ - - + + - +