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 @@
-
-
+
+
-
+