diff --git a/BinaryObjectScanner/Factory.cs b/BinaryObjectScanner/Factory.cs
index 4c70ae60..40f1dc54 100644
--- a/BinaryObjectScanner/Factory.cs
+++ b/BinaryObjectScanner/Factory.cs
@@ -1,4 +1,8 @@
-using BinaryObjectScanner.Interfaces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using BinaryObjectScanner.Interfaces;
using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner
@@ -68,5 +72,61 @@ namespace BinaryObjectScanner
_ => null,
};
}
+
+ ///
+ /// Initialize all implementations of a type
+ ///
+ public static List? InitCheckClasses() =>
+ InitCheckClasses(Assembly.GetExecutingAssembly()) ?? [];
+
+ ///
+ /// Initialize all implementations of a type
+ ///
+ public static List? InitCheckClasses(Assembly assembly)
+ {
+ List classTypes = [];
+
+ // If not all types can be loaded, use the ones that could be
+ List assemblyTypes = [];
+ try
+ {
+ assemblyTypes = assembly.GetTypes().ToList();
+ }
+ catch (ReflectionTypeLoadException rtle)
+ {
+ assemblyTypes = rtle.Types.Where(t => t != null)!.ToList();
+ }
+
+ // Get information from the type param
+ string interfaceName = typeof(T)!.FullName;
+
+ // Loop through all types
+ foreach (Type type in assemblyTypes)
+ {
+ // If the type isn't a class
+ if (!type.IsClass)
+ continue;
+
+ // If the type isn't a class or doesn't implement the interface
+ bool interfaceFound = false;
+ foreach (var ii in type.GetInterfaces())
+ {
+ if (ii.FullName != interfaceName)
+ continue;
+
+ interfaceFound = true;
+ break;
+ }
+ if (!interfaceFound)
+ continue;
+
+ // Try to create a concrete instance of the type
+ var instance = (T?)Activator.CreateInstance(type);
+ if (instance != null)
+ classTypes.Add(instance);
+ }
+
+ return classTypes;
+ }
}
}
diff --git a/BinaryObjectScanner/FileType/Executable.cs b/BinaryObjectScanner/FileType/Executable.cs
index 70c8980b..107ce486 100644
--- a/BinaryObjectScanner/FileType/Executable.cs
+++ b/BinaryObjectScanner/FileType/Executable.cs
@@ -1,8 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
-using System.Reflection;
using BinaryObjectScanner.Interfaces;
using SabreTools.IO.Extensions;
using SabreTools.Serialization.Wrappers;
@@ -33,59 +31,59 @@ namespace BinaryObjectScanner.FileType
///
/// Cache for all IContentCheck types
///
- public static IEnumerable ContentCheckClasses
+ public static List ContentCheckClasses
{
get
{
- contentCheckClasses ??= InitCheckClasses();
+ contentCheckClasses ??= Factory.InitCheckClasses();
return contentCheckClasses ?? [];
}
}
///
- /// Cache for all ILinearExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- public static IEnumerable LinearExecutableCheckClasses
+ public static List> LinearExecutableCheckClasses
{
get
{
- linearExecutableCheckClasses ??= InitCheckClasses();
+ linearExecutableCheckClasses ??= Factory.InitCheckClasses>();
return linearExecutableCheckClasses ?? [];
}
}
///
- /// Cache for all IMSDOSExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- public static IEnumerable MSDOSExecutableCheckClasses
+ public static List> MSDOSExecutableCheckClasses
{
get
{
- msdosExecutableCheckClasses ??= InitCheckClasses();
+ msdosExecutableCheckClasses ??= Factory.InitCheckClasses>();
return msdosExecutableCheckClasses ?? [];
}
}
///
- /// Cache for all INewExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- public static IEnumerable NewExecutableCheckClasses
+ public static List> NewExecutableCheckClasses
{
get
{
- newExecutableCheckClasses ??= InitCheckClasses();
+ newExecutableCheckClasses ??= Factory.InitCheckClasses>();
return newExecutableCheckClasses ?? [];
}
}
///
- /// Cache for all IPortableExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- public static IEnumerable PortableExecutableCheckClasses
+ public static List> PortableExecutableCheckClasses
{
get
{
- portableExecutableCheckClasses ??= InitCheckClasses();
+ portableExecutableCheckClasses ??= Factory.InitCheckClasses>();
return portableExecutableCheckClasses ?? [];
}
}
@@ -97,27 +95,27 @@ namespace BinaryObjectScanner.FileType
///
/// Cache for all IContentCheck types
///
- private static IEnumerable? contentCheckClasses;
+ private static List? contentCheckClasses;
///
- /// Cache for all ILinearExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- private static IEnumerable? linearExecutableCheckClasses;
+ private static List>? linearExecutableCheckClasses;
///
- /// Cache for all IMSDOSExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- private static IEnumerable? msdosExecutableCheckClasses;
+ private static List>? msdosExecutableCheckClasses;
///
- /// Cache for all INewExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- private static IEnumerable? newExecutableCheckClasses;
+ private static List>? newExecutableCheckClasses;
///
- /// Cache for all IPortableExecutableCheck types
+ /// Cache for all IExecutableCheck types
///
- private static IEnumerable? portableExecutableCheckClasses;
+ private static List>? portableExecutableCheckClasses;
#endregion
@@ -241,16 +239,16 @@ namespace BinaryObjectScanner.FileType
/// Executable to scan
/// True to include debug data, false otherwise
/// Set of protections in file, null on error
- public IDictionary RunLinearExecutableChecks(string file, Stream stream, LinearExecutable lex, bool includeDebug)
+ public IDictionary, string> RunLinearExecutableChecks(string file, Stream stream, LinearExecutable lex, bool includeDebug)
{
// Create the output dictionary
- var protections = new CheckDictionary();
+ var protections = new CheckDictionary>();
// Iterate through all checks
LinearExecutableCheckClasses.IterateWithAction(checkClass =>
{
// Get the protection for the class, if possible
- var protection = checkClass.CheckLinearExecutable(file, lex, includeDebug);
+ var protection = checkClass.CheckExecutable(file, lex, includeDebug);
if (string.IsNullOrEmpty(protection))
return;
@@ -275,16 +273,16 @@ namespace BinaryObjectScanner.FileType
/// Executable to scan
/// True to include debug data, false otherwise
/// Set of protections in file, null on error
- public IDictionary RunMSDOSExecutableChecks(string file, Stream stream, MSDOS mz, bool includeDebug)
+ public IDictionary, string> RunMSDOSExecutableChecks(string file, Stream stream, MSDOS mz, bool includeDebug)
{
// Create the output dictionary
- var protections = new CheckDictionary();
+ var protections = new CheckDictionary>();
// Iterate through all checks
MSDOSExecutableCheckClasses.IterateWithAction(checkClass =>
{
// Get the protection for the class, if possible
- var protection = checkClass.CheckMSDOSExecutable(file, mz, includeDebug);
+ var protection = checkClass.CheckExecutable(file, mz, includeDebug);
if (string.IsNullOrEmpty(protection))
return;
@@ -309,16 +307,16 @@ namespace BinaryObjectScanner.FileType
/// Executable to scan
/// True to include debug data, false otherwise
/// Set of protections in file, null on error
- public IDictionary RunNewExecutableChecks(string file, Stream stream, NewExecutable nex, bool includeDebug)
+ public IDictionary, string> RunNewExecutableChecks(string file, Stream stream, NewExecutable nex, bool includeDebug)
{
// Create the output dictionary
- var protections = new CheckDictionary();
+ var protections = new CheckDictionary>();
// Iterate through all checks
NewExecutableCheckClasses.IterateWithAction(checkClass =>
{
// Get the protection for the class, if possible
- var protection = checkClass.CheckNewExecutable(file, nex, includeDebug);
+ var protection = checkClass.CheckExecutable(file, nex, includeDebug);
if (string.IsNullOrEmpty(protection))
return;
@@ -343,16 +341,16 @@ namespace BinaryObjectScanner.FileType
/// Executable to scan
/// True to include debug data, false otherwise
/// Set of protections in file, null on error
- public IDictionary RunPortableExecutableChecks(string file, Stream stream, PortableExecutable pex, bool includeDebug)
+ public IDictionary, string> RunPortableExecutableChecks(string file, Stream stream, PortableExecutable pex, bool includeDebug)
{
// Create the output dictionary
- var protections = new CheckDictionary();
+ var protections = new CheckDictionary>();
// Iterate through all checks
PortableExecutableCheckClasses.IterateWithAction(checkClass =>
{
// Get the protection for the class, if possible
- var protection = checkClass.CheckPortableExecutable(file, pex, includeDebug);
+ var protection = checkClass.CheckExecutable(file, pex, includeDebug);
if (string.IsNullOrEmpty(protection))
return;
@@ -372,50 +370,6 @@ namespace BinaryObjectScanner.FileType
#endregion
- #region Initializers
-
- ///
- /// Initialize all implementations of a type
- ///
- private static IEnumerable? InitCheckClasses() =>
- InitCheckClasses(Assembly.GetExecutingAssembly()) ?? [];
-
- ///
- /// Initialize all implementations of a type
- ///
- private static IEnumerable? InitCheckClasses(Assembly assembly)
- {
- List classTypes = [];
-
- // If not all types can be loaded, use the ones that could be
- List assemblyTypes = [];
- try
- {
- assemblyTypes = assembly.GetTypes().ToList();
- }
- catch (ReflectionTypeLoadException rtle)
- {
- assemblyTypes = rtle.Types.Where(t => t != null)!.ToList();
- }
-
- // Loop through all types
- foreach (Type type in assemblyTypes)
- {
- // If the type isn't a class or doesn't implement the interface
- if (!type.IsClass || type.GetInterface(typeof(T).Name) == null)
- continue;
-
- // Try to create a concrete instance of the type
- var instance = (T?)Activator.CreateInstance(type);
- if (instance != null)
- classTypes.Add(instance);
- }
-
- return classTypes;
- }
-
- #endregion
-
#region Helpers
///
diff --git a/BinaryObjectScanner/GameEngine/RenderWare.cs b/BinaryObjectScanner/GameEngine/RenderWare.cs
index 1fc4d70b..07ba12a9 100644
--- a/BinaryObjectScanner/GameEngine/RenderWare.cs
+++ b/BinaryObjectScanner/GameEngine/RenderWare.cs
@@ -15,10 +15,10 @@ namespace BinaryObjectScanner.GameEngine
/// RenderWare 3.7 SDK: https://github.com/sigmaco/rwsdk-v37-pc
/// Wikipedia list of RenderWare games: https://en.wikipedia.org/wiki/Category:RenderWare_games
///
- public class RenderWare : IPortableExecutableCheck
+ public class RenderWare : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Handler.cs b/BinaryObjectScanner/Handler.cs
index beec6f48..6b81803a 100644
--- a/BinaryObjectScanner/Handler.cs
+++ b/BinaryObjectScanner/Handler.cs
@@ -1,8 +1,6 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Reflection;
using BinaryObjectScanner.Interfaces;
namespace BinaryObjectScanner
@@ -14,12 +12,12 @@ namespace BinaryObjectScanner
///
/// Cache for all IPathCheck types
///
- public static IEnumerable PathCheckClasses
+ public static List PathCheckClasses
{
get
{
- pathCheckClasses ??= InitCheckClasses();
- return pathCheckClasses;
+ pathCheckClasses ??= Factory.InitCheckClasses();
+ return pathCheckClasses ?? [];
}
}
@@ -30,7 +28,7 @@ namespace BinaryObjectScanner
///
/// Cache for all IPathCheck types
///
- private static IEnumerable? pathCheckClasses;
+ private static List? pathCheckClasses;
#endregion
@@ -116,50 +114,6 @@ namespace BinaryObjectScanner
#endregion
- #region Initializers
-
- ///
- /// Initialize all implementations of a type
- ///
- private static IEnumerable InitCheckClasses() =>
- InitCheckClasses(Assembly.GetExecutingAssembly());
-
- ///
- /// Initialize all implementations of a type
- ///
- private static IEnumerable InitCheckClasses(Assembly assembly)
- {
- List classTypes = [];
-
- // If not all types can be loaded, use the ones that could be
- List assemblyTypes = [];
- try
- {
- assemblyTypes = assembly.GetTypes().ToList();
- }
- catch (ReflectionTypeLoadException rtle)
- {
- assemblyTypes = rtle.Types.Where(t => t != null)!.ToList();
- }
-
- // Loop through all types
- foreach (Type type in assemblyTypes)
- {
- // If the type isn't a class or doesn't implement the interface
- if (!type.IsClass || type.GetInterface(typeof(T).Name) == null)
- continue;
-
- // Try to create a concrete instance of the type
- var instance = (T?)Activator.CreateInstance(type);
- if (instance != null)
- classTypes.Add(instance);
- }
-
- return classTypes;
- }
-
- #endregion
-
#region Helpers
///
diff --git a/BinaryObjectScanner/Interfaces/IMSDOSExecutableCheck.cs b/BinaryObjectScanner/Interfaces/IExecutableCheck.cs
similarity index 60%
rename from BinaryObjectScanner/Interfaces/IMSDOSExecutableCheck.cs
rename to BinaryObjectScanner/Interfaces/IExecutableCheck.cs
index b6dc8a5f..80e00463 100644
--- a/BinaryObjectScanner/Interfaces/IMSDOSExecutableCheck.cs
+++ b/BinaryObjectScanner/Interfaces/IExecutableCheck.cs
@@ -1,19 +1,19 @@
-using SabreTools.Serialization.Wrappers;
+using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Interfaces
{
///
- /// Check a MS-DOS Executable (MZ) for protection
+ /// Check an executable for protection
///
- public interface IMSDOSExecutableCheck
+ public interface IExecutableCheck where T : WrapperBase
{
///
/// Check a path for protections based on file contents
///
/// File to check for protection indicators
- /// MSDOS representing the read-in file
+ /// Executable representing the read-in file
/// True to include debug data, false otherwise
/// String containing any protections found in the file
- string? CheckMSDOSExecutable(string file, MSDOS mz, bool includeDebug);
+ string? CheckExecutable(string file, T exe, bool includeDebug);
}
}
diff --git a/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs b/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs
index 70e097f4..a894be5d 100644
--- a/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs
+++ b/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs
@@ -3,7 +3,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Interfaces
{
///
- /// Mark a LinearExecutable type as being able to be extracted
+ /// Mark an executable type as being able to be extracted
///
public interface IExtractableExecutable where T : WrapperBase
{
diff --git a/BinaryObjectScanner/Interfaces/ILinearExecutableCheck.cs b/BinaryObjectScanner/Interfaces/ILinearExecutableCheck.cs
deleted file mode 100644
index 0e0881bd..00000000
--- a/BinaryObjectScanner/Interfaces/ILinearExecutableCheck.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using SabreTools.Serialization.Wrappers;
-
-namespace BinaryObjectScanner.Interfaces
-{
- ///
- /// Check a Linear Executable (LE) for protection
- ///
- public interface ILinearExecutableCheck
- {
- ///
- /// Check a path for protections based on file contents
- ///
- /// File to check for protection indicators
- /// LinearExecutable representing the read-in file
- /// True to include debug data, false otherwise
- /// String containing any protections found in the file
- string? CheckLinearExecutable(string file, LinearExecutable lex, bool includeDebug);
- }
-}
diff --git a/BinaryObjectScanner/Interfaces/INewExecutableCheck.cs b/BinaryObjectScanner/Interfaces/INewExecutableCheck.cs
deleted file mode 100644
index f2791009..00000000
--- a/BinaryObjectScanner/Interfaces/INewExecutableCheck.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using SabreTools.Serialization.Wrappers;
-
-namespace BinaryObjectScanner.Interfaces
-{
- ///
- /// Check a New Executable (NE) for protection
- ///
- public interface INewExecutableCheck
- {
- ///
- /// Check a path for protections based on file contents
- ///
- /// File to check for protection indicators
- /// NewExecutable representing the read-in file
- /// True to include debug data, false otherwise
- /// String containing any protections found in the file
- string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug);
- }
-}
diff --git a/BinaryObjectScanner/Interfaces/IPortableExecutableCheck.cs b/BinaryObjectScanner/Interfaces/IPortableExecutableCheck.cs
deleted file mode 100644
index 4242ef9c..00000000
--- a/BinaryObjectScanner/Interfaces/IPortableExecutableCheck.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using SabreTools.Serialization.Wrappers;
-
-namespace BinaryObjectScanner.Interfaces
-{
- ///
- /// Check a Portable Executable (PE) for protection
- ///
- public interface IPortableExecutableCheck
- {
- ///
- /// Check a path for protections based on file contents
- ///
- /// File to check for protection indicators
- /// PortableExecutable representing the read-in file
- /// True to include debug data, false otherwise
- /// String containing any protections found in the file
- string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug);
- }
-}
diff --git a/BinaryObjectScanner/Packer/ASPack.cs b/BinaryObjectScanner/Packer/ASPack.cs
index 59932de3..9453b4f1 100644
--- a/BinaryObjectScanner/Packer/ASPack.cs
+++ b/BinaryObjectScanner/Packer/ASPack.cs
@@ -8,10 +8,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
- public class ASPack : IExtractableExecutable, IPortableExecutableCheck
+ public class ASPack : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/AdvancedInstaller.cs b/BinaryObjectScanner/Packer/AdvancedInstaller.cs
index b13a4d3f..bb5e6f15 100644
--- a/BinaryObjectScanner/Packer/AdvancedInstaller.cs
+++ b/BinaryObjectScanner/Packer/AdvancedInstaller.cs
@@ -6,10 +6,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// TODO: Verify that all versions are detected
- public class AdvancedInstaller : IExtractableExecutable, IPortableExecutableCheck
+ public class AdvancedInstaller : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs b/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs
index 268d7576..c09ea1cf 100644
--- a/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs
+++ b/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs
@@ -7,10 +7,10 @@ namespace BinaryObjectScanner.Packer
// Created by IndigoRose (creators of Setup Factory), primarily to be used to create autorun menus for various media.
// Official website: https://www.autoplay.org/
// TODO: Add extraction
- public class AutoPlayMediaStudio : IExtractableExecutable, IPortableExecutableCheck
+ public class AutoPlayMediaStudio : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/CExe.cs b/BinaryObjectScanner/Packer/CExe.cs
index a4f0ae32..1bf00653 100644
--- a/BinaryObjectScanner/Packer/CExe.cs
+++ b/BinaryObjectScanner/Packer/CExe.cs
@@ -13,10 +13,10 @@ namespace BinaryObjectScanner.Packer
// The official website for CExe also includes the source code (which does have to be retrieved by the Wayback Machine)
// http://www.scottlu.com/Content/CExe.html
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class CExe : IExtractableExecutable, IPortableExecutableCheck
+ public class CExe : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/DotFuscator.cs b/BinaryObjectScanner/Packer/DotFuscator.cs
index 02f59ba1..1d9bd271 100644
--- a/BinaryObjectScanner/Packer/DotFuscator.cs
+++ b/BinaryObjectScanner/Packer/DotFuscator.cs
@@ -5,10 +5,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
- public class DotFuscator : IExtractableExecutable, IPortableExecutableCheck
+ public class DotFuscator : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/DotNetReactor.cs b/BinaryObjectScanner/Packer/DotNetReactor.cs
index 2f9268f5..b2dc0b07 100644
--- a/BinaryObjectScanner/Packer/DotNetReactor.cs
+++ b/BinaryObjectScanner/Packer/DotNetReactor.cs
@@ -15,10 +15,10 @@ namespace BinaryObjectScanner.Packer
///
/// Resource that could be useful for extraction: https://github.com/SychicBoy/NETReactorSlayer
///
- public class DotNetReactor : IExtractableExecutable, IPortableExecutableCheck
+ public class DotNetReactor : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// TODO: Detect version
// TODO: Further refine checks using https://github.com/horsicq/Detect-It-Easy/blob/075a70b1484d1d84d1dc37c86aac16188d5a84e7/db/PE/NetReactor.2.sg and https://github.com/cod3nym/detection-rules/blob/main/yara/dotnet/obf_net_reactor.yar
diff --git a/BinaryObjectScanner/Packer/EXEStealth.cs b/BinaryObjectScanner/Packer/EXEStealth.cs
index 08a74019..166a6962 100644
--- a/BinaryObjectScanner/Packer/EXEStealth.cs
+++ b/BinaryObjectScanner/Packer/EXEStealth.cs
@@ -10,7 +10,7 @@ namespace BinaryObjectScanner.Packer
// TODO: Detect 3.15 and up (maybe looking for `Metamorphism`)
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class EXEStealth : IContentCheck, IExtractableExecutable, IPortableExecutableCheck
+ public class EXEStealth : IContentCheck, IExecutableCheck, IExtractableExecutable
{
///
public string? CheckContents(string file, byte[] fileContent, bool includeDebug)
@@ -38,7 +38,7 @@ namespace BinaryObjectScanner.Packer
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/EmbeddedExecutable.cs b/BinaryObjectScanner/Packer/EmbeddedExecutable.cs
index b4dad6af..c4a351f6 100644
--- a/BinaryObjectScanner/Packer/EmbeddedExecutable.cs
+++ b/BinaryObjectScanner/Packer/EmbeddedExecutable.cs
@@ -11,10 +11,10 @@ namespace BinaryObjectScanner.Packer
/// Though not technically a packer, this detection is for any executables that include
/// others in their resources in some uncompressed manner to be used at runtime.
///
- public class EmbeddedExecutable : IExtractableExecutable, IPortableExecutableCheck
+ public class EmbeddedExecutable : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/GenteeInstaller.cs b/BinaryObjectScanner/Packer/GenteeInstaller.cs
index 6807b7b1..df773ccf 100644
--- a/BinaryObjectScanner/Packer/GenteeInstaller.cs
+++ b/BinaryObjectScanner/Packer/GenteeInstaller.cs
@@ -6,10 +6,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class GenteeInstaller : IExtractableExecutable, IPortableExecutableCheck
+ public class GenteeInstaller : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/HyperTechCrackProof.cs b/BinaryObjectScanner/Packer/HyperTechCrackProof.cs
index 37368d44..ed23080d 100644
--- a/BinaryObjectScanner/Packer/HyperTechCrackProof.cs
+++ b/BinaryObjectScanner/Packer/HyperTechCrackProof.cs
@@ -9,10 +9,10 @@ namespace BinaryObjectScanner.Packer
// https://www.reddit.com/r/riseofincarnates/comments/m3vbnm/subreddit_revival_does_anyone_still_have_rise_of/
// https://steamcommunity.com/app/310950/discussions/0/4224890554455490819/
// https://github.com/horsicq/Detect-It-Easy/blob/63a1aa8bb23ca02d8a7fd5936db8dbc5c5d52dea/db/PE/HyperTech%20Crackproof.2.sg
- public class HyperTechCrackProof : IExtractableExecutable, IPortableExecutableCheck
+ public class HyperTechCrackProof : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/InnoSetup.cs b/BinaryObjectScanner/Packer/InnoSetup.cs
index a4262d51..9ee66674 100644
--- a/BinaryObjectScanner/Packer/InnoSetup.cs
+++ b/BinaryObjectScanner/Packer/InnoSetup.cs
@@ -9,10 +9,12 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction - https://github.com/dscharrer/InnoExtract
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class InnoSetup : IExtractableExecutable, INewExecutableCheck, IPortableExecutableCheck
+ public class InnoSetup : IExecutableCheck,
+ IExecutableCheck,
+ IExtractableExecutable
{
///
- public string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// Check for "Inno" in the reserved words
if (nex.Model.Stub?.Header?.Reserved2?[4] == 0x6E49 && nex.Model.Stub?.Header?.Reserved2?[5] == 0x6F6E)
@@ -28,7 +30,7 @@ namespace BinaryObjectScanner.Packer
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/InstallAnywhere.cs b/BinaryObjectScanner/Packer/InstallAnywhere.cs
index a4c65165..75e85854 100644
--- a/BinaryObjectScanner/Packer/InstallAnywhere.cs
+++ b/BinaryObjectScanner/Packer/InstallAnywhere.cs
@@ -6,10 +6,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction, which may be possible with the current libraries but needs to be investigated further.
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class InstallAnywhere : IExtractableExecutable, IPortableExecutableCheck
+ public class InstallAnywhere : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/InstallerVISE.cs b/BinaryObjectScanner/Packer/InstallerVISE.cs
index 374b7ed7..53c28312 100644
--- a/BinaryObjectScanner/Packer/InstallerVISE.cs
+++ b/BinaryObjectScanner/Packer/InstallerVISE.cs
@@ -6,11 +6,11 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction - https://github.com/Bioruebe/UniExtract2
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class InstallerVISE : IExtractableExecutable, IPortableExecutableCheck
+ public class InstallerVISE : IExecutableCheck, IExtractableExecutable
{
//TODO: Add exact version detection for Windows builds, make sure versions before 3.X are detected as well, and detect the Mac builds.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/IntelInstallationFramework.cs b/BinaryObjectScanner/Packer/IntelInstallationFramework.cs
index 180ce043..09bd1918 100644
--- a/BinaryObjectScanner/Packer/IntelInstallationFramework.cs
+++ b/BinaryObjectScanner/Packer/IntelInstallationFramework.cs
@@ -5,10 +5,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction, seems to primarily use MSZip compression.
- public class IntelInstallationFramework : IExtractableExecutable, IPortableExecutableCheck
+ public class IntelInstallationFramework : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs b/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs
index 8adb54f4..841b5a81 100644
--- a/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs
+++ b/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs
@@ -7,10 +7,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction, which should be possible with LibMSPackN, but it refuses to extract due to SFX files lacking the typical CAB identifiers.
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class MicrosoftCABSFX : IExtractableExecutable, IPortableExecutableCheck
+ public class MicrosoftCABSFX : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/NSIS.cs b/BinaryObjectScanner/Packer/NSIS.cs
index 1bdd4d64..f6c4f7e6 100644
--- a/BinaryObjectScanner/Packer/NSIS.cs
+++ b/BinaryObjectScanner/Packer/NSIS.cs
@@ -5,10 +5,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
- public class NSIS : IExtractableExecutable, IPortableExecutableCheck
+ public class NSIS : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/NeoLite.cs b/BinaryObjectScanner/Packer/NeoLite.cs
index cffe4a53..85f23d28 100644
--- a/BinaryObjectScanner/Packer/NeoLite.cs
+++ b/BinaryObjectScanner/Packer/NeoLite.cs
@@ -13,11 +13,11 @@ namespace BinaryObjectScanner.Packer
/// PEiD scanning definitions that include NeoLite: https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
/// Website listing various packers, including NeoLite: http://protools.narod.ru/packers.htm
///
- public class NeoLite : IExtractableExecutable, IPortableExecutableCheck
+ public class NeoLite : IExecutableCheck, IExtractableExecutable
{
// TODO: Find samples of NeoLite 1.X.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/PECompact.cs b/BinaryObjectScanner/Packer/PECompact.cs
index 35e07dde..0075f1ea 100644
--- a/BinaryObjectScanner/Packer/PECompact.cs
+++ b/BinaryObjectScanner/Packer/PECompact.cs
@@ -5,10 +5,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Better version detection - https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
// TODO: Add extraction
- public class PECompact : IExtractableExecutable, IPortableExecutableCheck
+ public class PECompact : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/Petite.cs b/BinaryObjectScanner/Packer/Petite.cs
index 6e3d4e98..27b82e71 100644
--- a/BinaryObjectScanner/Packer/Petite.cs
+++ b/BinaryObjectScanner/Packer/Petite.cs
@@ -5,10 +5,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class PEtite : IExtractableExecutable, IPortableExecutableCheck
+ public class PEtite : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/SetupFactory.cs b/BinaryObjectScanner/Packer/SetupFactory.cs
index c451a1ab..95fe1346 100644
--- a/BinaryObjectScanner/Packer/SetupFactory.cs
+++ b/BinaryObjectScanner/Packer/SetupFactory.cs
@@ -7,10 +7,10 @@ namespace BinaryObjectScanner.Packer
// TODO: Add extraction, which is possible but the only tools available that can
// do this seem to be Universal Extractor 2 and InstallExplorer (https://totalcmd.net/plugring/InstallExplorer.html)
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class SetupFactory : IExtractableExecutable, IPortableExecutableCheck
+ public class SetupFactory : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/SevenZipSFX.cs b/BinaryObjectScanner/Packer/SevenZipSFX.cs
index 6deb086c..2bacb3f0 100644
--- a/BinaryObjectScanner/Packer/SevenZipSFX.cs
+++ b/BinaryObjectScanner/Packer/SevenZipSFX.cs
@@ -4,10 +4,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
- public class SevenZipSFX : IExtractableExecutable, IPortableExecutableCheck
+ public class SevenZipSFX : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/Shrinker.cs b/BinaryObjectScanner/Packer/Shrinker.cs
index 72f509d7..4167757f 100644
--- a/BinaryObjectScanner/Packer/Shrinker.cs
+++ b/BinaryObjectScanner/Packer/Shrinker.cs
@@ -5,10 +5,10 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class Shrinker : IExtractableExecutable, IPortableExecutableCheck
+ public class Shrinker : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/UPX.cs b/BinaryObjectScanner/Packer/UPX.cs
index aeaff84f..f8e1142e 100644
--- a/BinaryObjectScanner/Packer/UPX.cs
+++ b/BinaryObjectScanner/Packer/UPX.cs
@@ -9,14 +9,14 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class UPX : IExtractableExecutable, IPortableExecutableCheck
+ public class UPX : IExecutableCheck, IExtractableExecutable
{
private static readonly Regex _oldUpxVersionMatch = new Regex(@"\$Id: UPX (.*?) Copyright \(C\)", RegexOptions.Compiled);
private static readonly Regex _upxVersionMatch = new Regex(@"^([0-9]\.[0-9]{2})$", RegexOptions.Compiled);
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/WinRARSFX.cs b/BinaryObjectScanner/Packer/WinRARSFX.cs
index 6c012501..f9fba171 100644
--- a/BinaryObjectScanner/Packer/WinRARSFX.cs
+++ b/BinaryObjectScanner/Packer/WinRARSFX.cs
@@ -4,10 +4,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
- public class WinRARSFX : IExtractableExecutable, IPortableExecutableCheck
+ public class WinRARSFX : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/WinZipSFX.cs b/BinaryObjectScanner/Packer/WinZipSFX.cs
index 528a0bf4..da42ae2e 100644
--- a/BinaryObjectScanner/Packer/WinZipSFX.cs
+++ b/BinaryObjectScanner/Packer/WinZipSFX.cs
@@ -5,10 +5,13 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
- public class WinZipSFX : IExtractableExecutable, IExtractableExecutable, INewExecutableCheck, IPortableExecutableCheck
+ public class WinZipSFX : IExecutableCheck,
+ IExecutableCheck,
+ IExtractableExecutable,
+ IExtractableExecutable
{
///
- public string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// If the resident-name table doesnt exist
if (nex.Model.ResidentNameTable == null)
@@ -35,7 +38,7 @@ namespace BinaryObjectScanner.Packer
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Packer/WiseInstaller.cs b/BinaryObjectScanner/Packer/WiseInstaller.cs
index 9d98c37d..3f6ac06e 100644
--- a/BinaryObjectScanner/Packer/WiseInstaller.cs
+++ b/BinaryObjectScanner/Packer/WiseInstaller.cs
@@ -13,10 +13,13 @@ using WiseUnpacker.EWISE;
namespace BinaryObjectScanner.Packer
{
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class WiseInstaller : IExtractableExecutable, IExtractableExecutable, INewExecutableCheck, IPortableExecutableCheck
+ public class WiseInstaller : IExecutableCheck,
+ IExecutableCheck,
+ IExtractableExecutable,
+ IExtractableExecutable
{
///
- public string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// If we match a known header
if (MatchesNEVersion(nex) != null)
@@ -42,7 +45,7 @@ namespace BinaryObjectScanner.Packer
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ActiveMARK.cs b/BinaryObjectScanner/Protection/ActiveMARK.cs
index a646a4d2..c0489bc5 100644
--- a/BinaryObjectScanner/Protection/ActiveMARK.cs
+++ b/BinaryObjectScanner/Protection/ActiveMARK.cs
@@ -9,7 +9,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
// TODO: Figure out how to get version numbers
- public class ActiveMARK : IContentCheck, IPortableExecutableCheck
+ public class ActiveMARK : IContentCheck, IExecutableCheck
{
///
public string? CheckContents(string file, byte[] fileContent, bool includeDebug)
@@ -35,7 +35,7 @@ namespace BinaryObjectScanner.Protection
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/AegiSoft.cs b/BinaryObjectScanner/Protection/AegiSoft.cs
index f74fb07c..954f72f7 100644
--- a/BinaryObjectScanner/Protection/AegiSoft.cs
+++ b/BinaryObjectScanner/Protection/AegiSoft.cs
@@ -18,10 +18,10 @@ namespace BinaryObjectScanner.Protection
/// https://pitchbook.com/profiles/company/118805-59
/// https://web.archive.org/web/19990417191351/http://www.aegisoft.com:80/
///
- public class AegiSoft : IPathCheck, IPortableExecutableCheck
+ public class AegiSoft : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/AlphaROM.cs b/BinaryObjectScanner/Protection/AlphaROM.cs
index e5f4f674..f5315cca 100644
--- a/BinaryObjectScanner/Protection/AlphaROM.cs
+++ b/BinaryObjectScanner/Protection/AlphaROM.cs
@@ -40,10 +40,10 @@ namespace BinaryObjectScanner.Protection
// - SETTEC0000SETTEC1111
// - SOFTWARE\SETTEC
// TODO: Are there version numbers?
- public class AlphaROM : IPortableExecutableCheck
+ public class AlphaROM : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// TODO: Add support for detecting Alpha-ROM found in older games made with the RealLive engine.
// TODO: Add version detection for Alpha-ROM.
diff --git a/BinaryObjectScanner/Protection/Armadillo.cs b/BinaryObjectScanner/Protection/Armadillo.cs
index ead6b6f2..90a65d0c 100644
--- a/BinaryObjectScanner/Protection/Armadillo.cs
+++ b/BinaryObjectScanner/Protection/Armadillo.cs
@@ -18,10 +18,10 @@ namespace BinaryObjectScanner.Protection
// TODO: Add version checking, if possible
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class Armadillo : IExtractableExecutable, IPortableExecutableCheck
+ public class Armadillo : IExecutableCheck, IExtractableExecutable
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ByteShield.cs b/BinaryObjectScanner/Protection/ByteShield.cs
index 601c5ecc..0dedc75c 100644
--- a/BinaryObjectScanner/Protection/ByteShield.cs
+++ b/BinaryObjectScanner/Protection/ByteShield.cs
@@ -38,10 +38,10 @@ namespace BinaryObjectScanner.Protection
/// https://www.ftc.gov/sites/default/files/documents/public_comments/ftc-town-hall-address-digital-rights-management-technologies-event-takes-place-wednesday-march-25/539814-00707.pdf
/// https://www.gamesindustry.biz/byteshield-drm-system-now-protecting-over-200-games
///
- public class ByteShield : IPortableExecutableCheck, IPathCheck
+ public class ByteShield : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CDCheck.cs b/BinaryObjectScanner/Protection/CDCheck.cs
index a0c8f9fb..9dbab535 100644
--- a/BinaryObjectScanner/Protection/CDCheck.cs
+++ b/BinaryObjectScanner/Protection/CDCheck.cs
@@ -3,10 +3,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class CDCheck : IPortableExecutableCheck
+ public class CDCheck : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CDDVDCops.cs b/BinaryObjectScanner/Protection/CDDVDCops.cs
index cacc9abf..9acfc601 100644
--- a/BinaryObjectScanner/Protection/CDDVDCops.cs
+++ b/BinaryObjectScanner/Protection/CDDVDCops.cs
@@ -63,7 +63,7 @@ namespace BinaryObjectScanner.Protection
/// List of applications that have CD/DVD/WEB-Cops relating to a Windows update: https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/924867
///
- public class CDDVDCops : IContentCheck, INewExecutableCheck, IPathCheck, IPortableExecutableCheck
+ public class CDDVDCops : IContentCheck, IExecutableCheck, IExecutableCheck, IPathCheck
{
// TODO: Investigate reference to "CD32COPS.DLL" in "WETFLIPP.QZ_" in IA item "Triada_Russian_DVD_Complete_Collection_of_Erotic_Games".
///
@@ -97,7 +97,7 @@ namespace BinaryObjectScanner.Protection
}
///
- public string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// TODO: Don't read entire file
var data = nex.ReadArbitraryRange();
@@ -141,7 +141,7 @@ namespace BinaryObjectScanner.Protection
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CDGuard.cs b/BinaryObjectScanner/Protection/CDGuard.cs
index 988c5157..48361b51 100644
--- a/BinaryObjectScanner/Protection/CDGuard.cs
+++ b/BinaryObjectScanner/Protection/CDGuard.cs
@@ -21,10 +21,10 @@ namespace BinaryObjectScanner.Protection
/// https://gamecopyworld.com/games/pc_omikron.shtml
/// https://forum.ixbt.com/topic.cgi?id=31:3985
///
- public class CDGuard : IPathCheck, IPortableExecutableCheck
+ public class CDGuard : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CDKey.cs b/BinaryObjectScanner/Protection/CDKey.cs
index bf61cd10..03c9fc08 100644
--- a/BinaryObjectScanner/Protection/CDKey.cs
+++ b/BinaryObjectScanner/Protection/CDKey.cs
@@ -4,10 +4,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class CDKey : IPortableExecutableCheck
+ public class CDKey : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CDLock.cs b/BinaryObjectScanner/Protection/CDLock.cs
index 9756f4f9..b1bef3ea 100644
--- a/BinaryObjectScanner/Protection/CDLock.cs
+++ b/BinaryObjectScanner/Protection/CDLock.cs
@@ -25,10 +25,10 @@ namespace BinaryObjectScanner.Protection
/// Possible false positives include Redump entries 51241, 51373, 54397, 76437.
/// Confirmed to be present on Redump entries 24287, 31615, 34448, 35967, 36627, 37700, 37788, 43221, 55788, and 66749.
///
- public class CDLock : IPathCheck, IPortableExecutableCheck
+ public class CDLock : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CDSHiELDSE.cs b/BinaryObjectScanner/Protection/CDSHiELDSE.cs
index 05644e16..2618d3fa 100644
--- a/BinaryObjectScanner/Protection/CDSHiELDSE.cs
+++ b/BinaryObjectScanner/Protection/CDSHiELDSE.cs
@@ -4,10 +4,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class CDSHiELDSE : IPortableExecutableCheck
+ public class CDSHiELDSE : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CenegaProtectDVD.cs b/BinaryObjectScanner/Protection/CenegaProtectDVD.cs
index e07e3853..60a1c8eb 100644
--- a/BinaryObjectScanner/Protection/CenegaProtectDVD.cs
+++ b/BinaryObjectScanner/Protection/CenegaProtectDVD.cs
@@ -12,10 +12,10 @@ namespace BinaryObjectScanner.Protection
/// Games using this protection aren't able to be run from an ISO file, and presumably use DPM as a protection feature.
///
///
- public class CengaProtectDVD : IPathCheck, IPortableExecutableCheck
+ public class CengaProtectDVD : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Channelware.cs b/BinaryObjectScanner/Protection/Channelware.cs
index d7f1e62e..ad617e3f 100644
--- a/BinaryObjectScanner/Protection/Channelware.cs
+++ b/BinaryObjectScanner/Protection/Channelware.cs
@@ -20,10 +20,10 @@ namespace BinaryObjectScanner.Protection
/// Add version detection. Redump entry 116358 is version 1.x and Redump entry 12354 is 2.x, but the file versions are inconsistent.
/// Investigate "NetActive Reach", which is is either a newer version of this DRM, or a new DRM created by the same company. (https://web.archive.org/web/20040101162921/http://www.netactive.com/Products/)
///
- public class Channelware : IPathCheck, IPortableExecutableCheck
+ public class Channelware : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ChosenBytesCodeLock.cs b/BinaryObjectScanner/Protection/ChosenBytesCodeLock.cs
index eb5d21e2..c7264cb2 100644
--- a/BinaryObjectScanner/Protection/ChosenBytesCodeLock.cs
+++ b/BinaryObjectScanner/Protection/ChosenBytesCodeLock.cs
@@ -20,10 +20,10 @@ namespace BinaryObjectScanner.Protection
/// Code-Lock FAQ: https://web.archive.org/web/20041205165232/http://www.chosenbytes.com/codefaq.php
/// Download (Version 2.35 trial): https://web.archive.org/web/20060220121200/http://www.chosenbytes.com:80/Code-Lock_cnet.zip
///
- public class ChosenBytesCodeLock : IPathCheck, IPortableExecutableCheck
+ public class ChosenBytesCodeLock : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CopyKiller.cs b/BinaryObjectScanner/Protection/CopyKiller.cs
index 93f0bdb3..307cdc62 100644
--- a/BinaryObjectScanner/Protection/CopyKiller.cs
+++ b/BinaryObjectScanner/Protection/CopyKiller.cs
@@ -15,10 +15,10 @@ namespace BinaryObjectScanner.Protection
/// TODO: Add support for the developer's EXE obfuscator, "EXEShield Deluxe". Most, if not all, EXEShield protected files are currently detected as "EXE Stealth" by BOS.
/// Samples include CopyKiller (Versions 3.64 & 3.99a) and SafeDiscScanner (Version 0.16) (https://archive.org/details/safediscscanner-0.16-webstylerzone-from-unofficial-source).
///
- public class CopyKiller : IPathCheck, IPortableExecutableCheck
+ public class CopyKiller : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// TODO: Figure out how to differentiate between V3.99 and V3.99a.
// Get the sections from the executable, if possible
diff --git a/BinaryObjectScanner/Protection/CopyLok.cs b/BinaryObjectScanner/Protection/CopyLok.cs
index afa625ae..e1e00073 100644
--- a/BinaryObjectScanner/Protection/CopyLok.cs
+++ b/BinaryObjectScanner/Protection/CopyLok.cs
@@ -20,10 +20,10 @@ namespace BinaryObjectScanner.Protection
///
/// COPYLOK trademark: https://www.trademarkelite.com/europe/trademark/trademark-detail/000618512/COPYLOK.
///
- public class CopyLok : IPortableExecutableCheck
+ public class CopyLok : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/CopyX.cs b/BinaryObjectScanner/Protection/CopyX.cs
index 74d76da7..c3755844 100644
--- a/BinaryObjectScanner/Protection/CopyX.cs
+++ b/BinaryObjectScanner/Protection/CopyX.cs
@@ -14,7 +14,7 @@ namespace BinaryObjectScanner.Protection
// TODO: Technically not necessary, but just check for light/pro first and only if it isn't found look for the other.
// It should be an Or situation and not an And situation.
// TODO: Figure out if Light and Professional are what designate rings and rings+disccheck
- public class CopyX : IPathCheck, IPortableExecutableCheck
+ public class CopyX : IExecutableCheck, IPathCheck
{
// Previous check 'Tivola Ring Protect' removed because it was found to actually be copy-x.
// The checks were for ZDAT/webmast.dxx and ZDAT/webmast.dxx, for Redump IDs 81628 and 116418.
@@ -58,7 +58,7 @@ namespace BinaryObjectScanner.Protection
// Find a viable way to check the last directory alphabetically and not just ZDAT*
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Checks for Professional
// PEX checks intentionally only detect Professional
diff --git a/BinaryObjectScanner/Protection/CrypKey.cs b/BinaryObjectScanner/Protection/CrypKey.cs
index 01a94d87..58a6bb66 100644
--- a/BinaryObjectScanner/Protection/CrypKey.cs
+++ b/BinaryObjectScanner/Protection/CrypKey.cs
@@ -11,10 +11,10 @@ namespace BinaryObjectScanner.Protection
// https://github.com/horsicq/Detect-It-Easy/blob/master/db/PE/CrypKey%20Installer.1.sg
// https://github.com/horsicq/Detect-It-Easy/blob/master/db/PE/CrypKey.2.sg
// https://github.com/wolfram77web/app-peid/blob/master/userdb.txt
- public class CrypKey : IPathCheck, IPortableExecutableCheck
+ public class CrypKey : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Cucko.cs b/BinaryObjectScanner/Protection/Cucko.cs
index cb9656b7..ebea1133 100644
--- a/BinaryObjectScanner/Protection/Cucko.cs
+++ b/BinaryObjectScanner/Protection/Cucko.cs
@@ -10,10 +10,10 @@ namespace BinaryObjectScanner.Protection
// - Reference to `EASTL` and `EAStdC` are standard for EA products and does not indicate Cucko by itself
// - There's little information outside of PiD detection that actually knows about Cucko
// - Cucko is confirmed to, at least, use DMI checks.
- public class Cucko : IPortableExecutableCheck
+ public class Cucko : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Denuvo.cs b/BinaryObjectScanner/Protection/Denuvo.cs
index b9955065..7c946e6b 100644
--- a/BinaryObjectScanner/Protection/Denuvo.cs
+++ b/BinaryObjectScanner/Protection/Denuvo.cs
@@ -25,13 +25,13 @@ namespace BinaryObjectScanner.Protection
/// https://www.wired.com/story/empress-drm-cracking-denuvo-video-game-piracy/
///
- public class Denuvo : IPathCheck, IPortableExecutableCheck
+ public class Denuvo : IExecutableCheck, IPathCheck
{
// TODO: Investigate possible filename checks for Denuvo Anti-Tamper.
// https://www.pcgamingwiki.com/wiki/Denuvo#Redeem.exe
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/DigiGuard.cs b/BinaryObjectScanner/Protection/DigiGuard.cs
index 4ccc7b3a..9e068c0f 100644
--- a/BinaryObjectScanner/Protection/DigiGuard.cs
+++ b/BinaryObjectScanner/Protection/DigiGuard.cs
@@ -23,10 +23,10 @@ namespace BinaryObjectScanner.Protection
/// News article regarding GLFC and Accolade Games: https://www.gamespot.com/articles/accolade-games-on-dvd/1100-2460436/
/// eBay listing for the "BIGWIG SOFTWARE LOCKER", which very likely contains DigiGuard: https://www.ebay.com/itm/325573968970
///
- public class DigiGuard : IPathCheck, IPortableExecutableCheck
+ public class DigiGuard : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/DiscGuard.cs b/BinaryObjectScanner/Protection/DiscGuard.cs
index 1c56dc61..4a4a60b9 100644
--- a/BinaryObjectScanner/Protection/DiscGuard.cs
+++ b/BinaryObjectScanner/Protection/DiscGuard.cs
@@ -35,11 +35,11 @@ namespace BinaryObjectScanner.Protection
/// https://web.archive.org/web/19990503082646/http://www.ttrtech.com/prmakh.htm
/// https://web.archive.org/web/19990209180542/http://www.ttrtech.com/pr2cont.htm
///
- public class DiscGuard : IPathCheck, IPortableExecutableCheck
+ public class DiscGuard : IExecutableCheck, IPathCheck
{
// TODO: Add checks for the game executables, which seem likely to contain some kind of indicators that can be checked for. The game executables all seem to import "Ord(1)" from one of the varying DLLs present.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/EAAntiCheat.cs b/BinaryObjectScanner/Protection/EAAntiCheat.cs
index e297259a..2f6c7fd6 100644
--- a/BinaryObjectScanner/Protection/EAAntiCheat.cs
+++ b/BinaryObjectScanner/Protection/EAAntiCheat.cs
@@ -15,11 +15,11 @@ namespace BinaryObjectScanner.Protection
///
/// The internal name appears to be "skyfall", as this is the Internal Name set to several EA Anti Cheat files, and the string "C:\dev\gitlab-runner\builds\r5uPUG7E\0\anticheat\skyfall\Build\Retail\EAAntiCheat.Installer.pdb" is present in "EAAntiCheat.Installer.Tool.exe".
///
- public class EAAntiCheat : IPathCheck, IPortableExecutableCheck
+ public class EAAntiCheat : IExecutableCheck, IPathCheck
{
// TODO: Add support for detecting older versions, especially versions made before Easy Anti-Cheat was purchased by Epic Games.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/EasyAntiCheat.cs b/BinaryObjectScanner/Protection/EasyAntiCheat.cs
index 82a8a9e7..9544dd9c 100644
--- a/BinaryObjectScanner/Protection/EasyAntiCheat.cs
+++ b/BinaryObjectScanner/Protection/EasyAntiCheat.cs
@@ -18,11 +18,11 @@ namespace BinaryObjectScanner.Protection
/// https://dev.epicgames.com/docs/services/en-US/GameServices/AntiCheat/index.html
/// https://www.unknowncheats.me/wiki/Easy_Anti_Cheat
///
- public class EasyAntiCheat : IPathCheck, IPortableExecutableCheck
+ public class EasyAntiCheat : IExecutableCheck, IPathCheck
{
// TODO: Add support for detecting older versions, especially versions made before Easy Anti-Cheat was purchased by Epic Games.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ElectronicArts.cs b/BinaryObjectScanner/Protection/ElectronicArts.cs
index ede6e217..51ea3145 100644
--- a/BinaryObjectScanner/Protection/ElectronicArts.cs
+++ b/BinaryObjectScanner/Protection/ElectronicArts.cs
@@ -5,10 +5,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class ElectronicArts : IPortableExecutableCheck
+ public class ElectronicArts : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Engine32.cs b/BinaryObjectScanner/Protection/Engine32.cs
index cfadab8a..6bf6e35e 100644
--- a/BinaryObjectScanner/Protection/Engine32.cs
+++ b/BinaryObjectScanner/Protection/Engine32.cs
@@ -13,10 +13,10 @@ namespace BinaryObjectScanner.Protection
/// The file "engine32.dll" is always present (hence the name), and is where the disc checking logic is present.
///
///
- public class Engine32 : IPathCheck, IPortableExecutableCheck
+ public class Engine32 : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/GFWL.cs b/BinaryObjectScanner/Protection/GFWL.cs
index 3b2b722f..9149cfa5 100644
--- a/BinaryObjectScanner/Protection/GFWL.cs
+++ b/BinaryObjectScanner/Protection/GFWL.cs
@@ -8,10 +8,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class GFWL : IPathCheck, IPortableExecutableCheck
+ public class GFWL : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Gefest.cs b/BinaryObjectScanner/Protection/Gefest.cs
index 4480384a..3db90291 100644
--- a/BinaryObjectScanner/Protection/Gefest.cs
+++ b/BinaryObjectScanner/Protection/Gefest.cs
@@ -17,10 +17,10 @@ namespace BinaryObjectScanner.Protection
/// https://j3qx.wordpress.com/2008/12/20/%D0%BF%D0%B8%D1%80%D0%B0%D1%82%D1%81%D0%BA%D0%B8%D0%B5-%D0%B7%D0%B0%D0%BC%D0%B0%D1%88%D0%BA%D0%B8-%D0%B8%D0%BB%D0%B8-%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0-%D0%BE%D1%82-7wolf/
/// http://www.imho.ws/showthread.php?t=34225
///
- public class Gefest : IPathCheck, IPortableExecutableCheck
+ public class Gefest : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/HexaLock.cs b/BinaryObjectScanner/Protection/HexaLock.cs
index 946ea33e..511c3162 100644
--- a/BinaryObjectScanner/Protection/HexaLock.cs
+++ b/BinaryObjectScanner/Protection/HexaLock.cs
@@ -30,10 +30,10 @@ namespace BinaryObjectScanner.Protection
/// https://patentimages.storage.googleapis.com/52/5b/3a/aee21ff4d987e9/US20060123483A1.pdf
/// Special thanks to Ribshark for looking into this protection and sharing his research on the topic!
///
- public class HexalockAutoLock : IPathCheck, IPortableExecutableCheck
+ public class HexalockAutoLock : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ImpulseReactor.cs b/BinaryObjectScanner/Protection/ImpulseReactor.cs
index d5ba9261..c8f76d6b 100644
--- a/BinaryObjectScanner/Protection/ImpulseReactor.cs
+++ b/BinaryObjectScanner/Protection/ImpulseReactor.cs
@@ -10,10 +10,10 @@ namespace BinaryObjectScanner.Protection
{
// Note that this set of checks also contains "Stardock Product Activation"
// This is intentional, as that protection is highly related to Impulse Reactor
- public class ImpulseReactor : IPathCheck, IPortableExecutableCheck
+ public class ImpulseReactor : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Intenium.cs b/BinaryObjectScanner/Protection/Intenium.cs
index 75bfda29..7f42ae4d 100644
--- a/BinaryObjectScanner/Protection/Intenium.cs
+++ b/BinaryObjectScanner/Protection/Intenium.cs
@@ -4,7 +4,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class Intenium : IPortableExecutableCheck
+ public class Intenium : IExecutableCheck
{
/*
* Possible strings for finding INTENIUM Trial & Buy Protection
@@ -23,7 +23,7 @@ namespace BinaryObjectScanner.Protection
*/
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/JoWood.cs b/BinaryObjectScanner/Protection/JoWood.cs
index ab4e27c0..9ffd79d4 100644
--- a/BinaryObjectScanner/Protection/JoWood.cs
+++ b/BinaryObjectScanner/Protection/JoWood.cs
@@ -11,10 +11,10 @@ namespace BinaryObjectScanner.Protection
// Interesting note: the former protection "Xtreme-Protector" was found to be a
// subset of the JoWood X-Prot checks, more specifically the XPROT section check
// that now outputs a version of v1.4+.
- public class JoWood : IPortableExecutableCheck
+ public class JoWood : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/KalypsoLauncher.cs b/BinaryObjectScanner/Protection/KalypsoLauncher.cs
index 1816335e..3d5b744c 100644
--- a/BinaryObjectScanner/Protection/KalypsoLauncher.cs
+++ b/BinaryObjectScanner/Protection/KalypsoLauncher.cs
@@ -19,10 +19,10 @@ namespace BinaryObjectScanner.Protection
/// 1.2.0.12: Found in Redump entry 95617.
/// 2.0.4.2: Newest version as of 3/10/2024, downloaded from updating the installed game from Redump entry 95617.
///
- public class KalypsoLauncher : IPathCheck, IPortableExecutableCheck
+ public class KalypsoLauncher : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/LabelGate.cs b/BinaryObjectScanner/Protection/LabelGate.cs
index 2ade8975..465e172c 100644
--- a/BinaryObjectScanner/Protection/LabelGate.cs
+++ b/BinaryObjectScanner/Protection/LabelGate.cs
@@ -17,10 +17,10 @@ namespace BinaryObjectScanner.Protection
/// https://web.archive.org/web/20040407150004/http://www.sonymusic.co.jp/cccd/lgcd2/help/foreign.html
/// https://vgmdb.net/forums/showthread.php?p=92206
///
- public class LabelGate : IPathCheck, IPortableExecutableCheck
+ public class LabelGate : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/LaserLok.cs b/BinaryObjectScanner/Protection/LaserLok.cs
index 0ae43d86..57924424 100644
--- a/BinaryObjectScanner/Protection/LaserLok.cs
+++ b/BinaryObjectScanner/Protection/LaserLok.cs
@@ -9,10 +9,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class LaserLok : IPathCheck, IPortableExecutableCheck
+ public class LaserLok : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// TODO: Add entry point check
// https://github.com/horsicq/Detect-It-Easy/blob/master/db/PE/Laserlok.2.sg
diff --git a/BinaryObjectScanner/Protection/MGIRegistration.cs b/BinaryObjectScanner/Protection/MGIRegistration.cs
index fc70a97c..97e4c0aa 100644
--- a/BinaryObjectScanner/Protection/MGIRegistration.cs
+++ b/BinaryObjectScanner/Protection/MGIRegistration.cs
@@ -5,10 +5,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class MGIRegistration : IPortableExecutableCheck
+ public class MGIRegistration : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.CDilla.cs b/BinaryObjectScanner/Protection/Macrovision.CDilla.cs
index 72096ada..708d4514 100644
--- a/BinaryObjectScanner/Protection/Macrovision.CDilla.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.CDilla.cs
@@ -34,8 +34,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? CDillaCheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ ///
+ internal string? CDillaCheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// TODO: Implement NE checks for "CDILLA05", "CDILLA10", "CDILLA16", and "CDILLA40".
@@ -60,8 +60,8 @@ namespace BinaryObjectScanner.Protection
return null;
}
- ///
- internal string? CDillaCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? CDillaCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.CactusDataShield.cs b/BinaryObjectScanner/Protection/Macrovision.CactusDataShield.cs
index 57486447..754020d4 100644
--- a/BinaryObjectScanner/Protection/Macrovision.CactusDataShield.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.CactusDataShield.cs
@@ -30,8 +30,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? CactusDataShieldCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? CactusDataShieldCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.FLEXnet.cs b/BinaryObjectScanner/Protection/Macrovision.FLEXnet.cs
index 720ba66c..c7d5ea64 100644
--- a/BinaryObjectScanner/Protection/Macrovision.FLEXnet.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.FLEXnet.cs
@@ -12,8 +12,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? FLEXnetCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? FLEXnetCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.RipGuard.cs b/BinaryObjectScanner/Protection/Macrovision.RipGuard.cs
index a2aa0a71..26f2859e 100644
--- a/BinaryObjectScanner/Protection/Macrovision.RipGuard.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.RipGuard.cs
@@ -18,8 +18,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? RipGuardCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? RipGuardCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.SafeCast.cs b/BinaryObjectScanner/Protection/Macrovision.SafeCast.cs
index a55e02cc..9a6c77c8 100644
--- a/BinaryObjectScanner/Protection/Macrovision.SafeCast.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.SafeCast.cs
@@ -40,8 +40,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? SafeCastCheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ ///
+ internal string? SafeCastCheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// Check for the CDAC01AA name string.
if (nex.Model.ResidentNameTable != null)
@@ -69,8 +69,8 @@ namespace BinaryObjectScanner.Protection
return MatchUtil.GetFirstMatch(file, data, neMatchSets, includeDebug);
}
- ///
- internal string? SafeCastCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? SafeCastCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.SafeDisc.cs b/BinaryObjectScanner/Protection/Macrovision.SafeDisc.cs
index 971210d0..38def4f2 100644
--- a/BinaryObjectScanner/Protection/Macrovision.SafeDisc.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.SafeDisc.cs
@@ -41,8 +41,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? SafeDiscCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? SafeDiscCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Macrovision.SafeWrap.cs b/BinaryObjectScanner/Protection/Macrovision.SafeWrap.cs
index 47a21a49..e6f8d960 100644
--- a/BinaryObjectScanner/Protection/Macrovision.SafeWrap.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.SafeWrap.cs
@@ -38,8 +38,8 @@ namespace BinaryObjectScanner.Protection
///
public partial class Macrovision
{
- ///
- internal string? SafeWrapCheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ ///
+ internal string? SafeWrapCheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// TODO: Figure out what SafeWrap is exactly, and add checks.
diff --git a/BinaryObjectScanner/Protection/Macrovision.cs b/BinaryObjectScanner/Protection/Macrovision.cs
index 1777a312..ae342f76 100644
--- a/BinaryObjectScanner/Protection/Macrovision.cs
+++ b/BinaryObjectScanner/Protection/Macrovision.cs
@@ -18,20 +18,20 @@ namespace BinaryObjectScanner.Protection
/// Macrovision Corporation CD-ROM Unauthorized Copying Study: https://web.archive.org/web/20011005161810/http://www.macrovision.com/solutions/software/cdrom/images/Games_CD-ROM_Study.PDF
/// List of trademarks associated with Marovision: https://tmsearch.uspto.gov/bin/showfield?f=toc&state=4804%3Au8wykd.5.1&p_search=searchss&p_L=50&BackReference=&p_plural=yes&p_s_PARA1=&p_tagrepl%7E%3A=PARA1%24LD&expr=PARA1+AND+PARA2&p_s_PARA2=macrovision&p_tagrepl%7E%3A=PARA2%24ALL&p_op_ALL=AND&a_default=search&a_search=Submit+Query&a_search=Submit+Query
///
- public partial class Macrovision : IPathCheck, INewExecutableCheck, IPortableExecutableCheck
+ public partial class Macrovision : IExecutableCheck, IExecutableCheck, IPathCheck
{
///
- public string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
var resultsList = new List();
// Run C-Dilla NE checks
- var cDilla = CDillaCheckNewExecutable(file, nex, includeDebug);
+ var cDilla = CDillaCheckExecutable(file, nex, includeDebug);
if (!string.IsNullOrEmpty(cDilla))
resultsList.Add(cDilla!);
// Run SafeCast NE checks
- var safeCast = SafeCastCheckNewExecutable(file, nex, includeDebug);
+ var safeCast = SafeCastCheckExecutable(file, nex, includeDebug);
if (!string.IsNullOrEmpty(safeCast))
resultsList.Add(safeCast!);
@@ -42,7 +42,7 @@ namespace BinaryObjectScanner.Protection
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
@@ -127,32 +127,32 @@ namespace BinaryObjectScanner.Protection
}
// Run Cactus Data Shield PE checks
- var match = CactusDataShieldCheckPortableExecutable(file, pex, includeDebug);
+ var match = CactusDataShieldCheckExecutable(file, pex, includeDebug);
if (!string.IsNullOrEmpty(match))
resultsList.Add(match!);
// Run C-Dilla PE checks
- match = CDillaCheckPortableExecutable(file, pex, includeDebug);
+ match = CDillaCheckExecutable(file, pex, includeDebug);
if (!string.IsNullOrEmpty(match))
resultsList.Add(match!);
// Run RipGuard PE checks
- match = RipGuardCheckPortableExecutable(file, pex, includeDebug);
+ match = RipGuardCheckExecutable(file, pex, includeDebug);
if (!string.IsNullOrEmpty(match))
resultsList.Add(match!);
// Run SafeCast PE checks
- match = SafeCastCheckPortableExecutable(file, pex, includeDebug);
+ match = SafeCastCheckExecutable(file, pex, includeDebug);
if (!string.IsNullOrEmpty(match))
resultsList.Add(match!);
// Run SafeDisc PE checks
- match = SafeDiscCheckPortableExecutable(file, pex, includeDebug);
+ match = SafeDiscCheckExecutable(file, pex, includeDebug);
if (!string.IsNullOrEmpty(match))
resultsList.Add(match!);
// Run FLEXnet PE checks
- match = FLEXnetCheckPortableExecutable(file, pex, includeDebug);
+ match = FLEXnetCheckExecutable(file, pex, includeDebug);
if (!string.IsNullOrEmpty(match))
resultsList.Add(match!);
diff --git a/BinaryObjectScanner/Protection/MediaCloQ.cs b/BinaryObjectScanner/Protection/MediaCloQ.cs
index ea9baec7..b49d5266 100644
--- a/BinaryObjectScanner/Protection/MediaCloQ.cs
+++ b/BinaryObjectScanner/Protection/MediaCloQ.cs
@@ -11,12 +11,12 @@ namespace BinaryObjectScanner.Protection
/// MediaCloQ was a copy protection created by SunnComm to protect music CDs. It's a multisession CD, and all the audio tracks are erroneously marked as data tracks.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/MediaMax.cs b/BinaryObjectScanner/Protection/MediaMax.cs
index 353c7e28..6e6434e2 100644
--- a/BinaryObjectScanner/Protection/MediaMax.cs
+++ b/BinaryObjectScanner/Protection/MediaMax.cs
@@ -14,10 +14,10 @@ namespace BinaryObjectScanner.Protection
/// List of discs known to contain MediaMax CD-3: https://en.wikipedia.org/wiki/List_of_compact_discs_sold_with_MediaMax_CD-3
/// TODO: Add support for detecting the Mac version, which is present on "All That I Am" by Santana (Barcode 8 2876-59773-2 6)
///
- public class MediaMax : IPathCheck, IPortableExecutableCheck
+ public class MediaMax : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/NEACProtect.cs b/BinaryObjectScanner/Protection/NEACProtect.cs
index ed0c0f83..5cfa70b8 100644
--- a/BinaryObjectScanner/Protection/NEACProtect.cs
+++ b/BinaryObjectScanner/Protection/NEACProtect.cs
@@ -19,10 +19,10 @@ namespace BinaryObjectScanner.Protection
/// https://github.com/SteamDatabase/FileDetectionRuleSets/pull/235
/// https://www.protondb.com/app/1203220
///
- public class NEACProtect : IPathCheck, IPortableExecutableCheck
+ public class NEACProtect : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Most of the relevant executables are highly obfuscated, making executable detection mostly impractical.
// Get the sections from the executable, if possible
diff --git a/BinaryObjectScanner/Protection/NProtect.cs b/BinaryObjectScanner/Protection/NProtect.cs
index 827225f8..3578ec3d 100644
--- a/BinaryObjectScanner/Protection/NProtect.cs
+++ b/BinaryObjectScanner/Protection/NProtect.cs
@@ -25,13 +25,13 @@ namespace BinaryObjectScanner.Protection
/// https://nprotect.com/nprotect_pdf/nProtect_KeyCryptV.pdf
/// https://nprotect.com/nprotect_pdf/nProtect_KeyCrypt.pdf
///
- public class NProtect : IPathCheck, IPortableExecutableCheck
+ public class NProtect : IExecutableCheck, IPathCheck
{
// TODO: Add LE checks for "npkcrypt.vxd" in Redump entry 90526.
// TODO: Add text check for the string mentioned in https://github.com/mnadareski/BinaryObjectScanner/issues/154.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/OnlineRegistration.cs b/BinaryObjectScanner/Protection/OnlineRegistration.cs
index 8be6623e..bab2f639 100644
--- a/BinaryObjectScanner/Protection/OnlineRegistration.cs
+++ b/BinaryObjectScanner/Protection/OnlineRegistration.cs
@@ -4,10 +4,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class OnlineRegistration : IPortableExecutableCheck
+ public class OnlineRegistration : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/OpenMG.cs b/BinaryObjectScanner/Protection/OpenMG.cs
index 20879093..c331015d 100644
--- a/BinaryObjectScanner/Protection/OpenMG.cs
+++ b/BinaryObjectScanner/Protection/OpenMG.cs
@@ -14,10 +14,10 @@ namespace BinaryObjectScanner.Protection
/// References:
/// https://en.wikipedia.org/wiki/OpenMG
///
- public class OpenMG : IPathCheck, IPortableExecutableCheck
+ public class OpenMG : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Origin.cs b/BinaryObjectScanner/Protection/Origin.cs
index bfdc6376..c83ca933 100644
--- a/BinaryObjectScanner/Protection/Origin.cs
+++ b/BinaryObjectScanner/Protection/Origin.cs
@@ -7,10 +7,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class Origin : IPathCheck, IPortableExecutableCheck
+ public class Origin : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/PlayJ.cs b/BinaryObjectScanner/Protection/PlayJ.cs
index 6ffd351a..ac7728e9 100644
--- a/BinaryObjectScanner/Protection/PlayJ.cs
+++ b/BinaryObjectScanner/Protection/PlayJ.cs
@@ -11,10 +11,10 @@ namespace BinaryObjectScanner.Protection
/// PlayJ (https://web.archive.org/web/20000815053956/http://www.playj.com/) by EverAd was a form of DRM protected audio that was intended to be distributed freely, but that showed advertisements to the listener.
///
///
- public class PlayJ : IPathCheck, IPortableExecutableCheck
+ public class PlayJ : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ProtectDisc.cs b/BinaryObjectScanner/Protection/ProtectDisc.cs
index 8c53c29a..760a0769 100644
--- a/BinaryObjectScanner/Protection/ProtectDisc.cs
+++ b/BinaryObjectScanner/Protection/ProtectDisc.cs
@@ -11,10 +11,10 @@ namespace BinaryObjectScanner.Protection
{
// This protection was called VOB ProtectCD / ProtectDVD in versions prior to 6
// ProtectDISC 9/10 checks for the presence of CSS on the disc to run, but don't encrypt any sectors or check for keys. Confirmed in Redump entries 78367 and 110095.
- public class ProtectDISC : IPortableExecutableCheck, IPathCheck
+ public class ProtectDISC : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
@@ -120,7 +120,7 @@ namespace BinaryObjectScanner.Protection
return MatchUtil.GetFirstMatch(path, matchers, any: true);
}
- public static string GetOldVersion(string matchedString)
+ private static string GetOldVersion(string matchedString)
{
// Remove unnecessary parts
matchedString = matchedString.Trim()
@@ -140,7 +140,7 @@ namespace BinaryObjectScanner.Protection
return matchedStringArray[2].TrimStart('V');
}
- public static string? GetVersion3till6(string file, byte[]? fileContent, List positions)
+ private static string? GetVersion3till6(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
@@ -153,7 +153,7 @@ namespace BinaryObjectScanner.Protection
return $"5.9-6.0 {GetVOBBuild(fileContent, positions[0])}";
}
- public static string? GetVersion6till8(string file, byte[]? fileContent, List positions)
+ private static string? GetVersion6till8(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
@@ -227,7 +227,7 @@ namespace BinaryObjectScanner.Protection
}
}
- public static string? GetVersion76till10(string file, byte[]? fileContent, List positions)
+ private static string? GetVersion76till10(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
diff --git a/BinaryObjectScanner/Protection/RainbowSentinel.cs b/BinaryObjectScanner/Protection/RainbowSentinel.cs
index baa0bbd4..5159db33 100644
--- a/BinaryObjectScanner/Protection/RainbowSentinel.cs
+++ b/BinaryObjectScanner/Protection/RainbowSentinel.cs
@@ -36,10 +36,10 @@ namespace BinaryObjectScanner.Protection
///
/// Rainbow NetSentinel: IA item "czchip199707cd".
///
- public class RainbowSentinel : IPathCheck, INewExecutableCheck, IPortableExecutableCheck
+ public class RainbowSentinel : IExecutableCheck, IExecutableCheck, IPathCheck
{
///
- public string? CheckNewExecutable(string file, NewExecutable nex, bool includeDebug)
+ public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
{
// TODO: Don't read entire file
var data = nex.ReadArbitraryRange();
@@ -133,7 +133,7 @@ namespace BinaryObjectScanner.Protection
}
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/RealArcade.cs b/BinaryObjectScanner/Protection/RealArcade.cs
index 276d23cb..68b226a6 100644
--- a/BinaryObjectScanner/Protection/RealArcade.cs
+++ b/BinaryObjectScanner/Protection/RealArcade.cs
@@ -14,10 +14,10 @@ namespace BinaryObjectScanner.Protection
/// https://github.com/lightbulbatelier/RealArcade-DGA
/// https://archive.org/details/realrcade-games-preservation-project
///
- public class RealArcade : IPathCheck, IPortableExecutableCheck
+ public class RealArcade : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Roxxe.cs b/BinaryObjectScanner/Protection/Roxxe.cs
index f056c1ea..6b4b9ce3 100644
--- a/BinaryObjectScanner/Protection/Roxxe.cs
+++ b/BinaryObjectScanner/Protection/Roxxe.cs
@@ -12,10 +12,10 @@ namespace BinaryObjectScanner.Protection
///
/// DRML: https://github.com/TheRogueArchivist/DRML/blob/main/entries/Roxxe/Roxxe.md
///
- public class Roxxe : IPathCheck, IPortableExecutableCheck
+ public class Roxxe : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/SVKP.cs b/BinaryObjectScanner/Protection/SVKP.cs
index 931d4617..f5f5f9c8 100644
--- a/BinaryObjectScanner/Protection/SVKP.cs
+++ b/BinaryObjectScanner/Protection/SVKP.cs
@@ -19,12 +19,12 @@ namespace BinaryObjectScanner.Protection
/// Unofficial PEiD detections for SVKP: https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
/// DiE detections for SVKP: https://github.com/horsicq/Detect-It-Easy/blob/master/db/PE/SVK%20Protector.2.sg
///
- public class SVKProtector : IPathCheck, IPortableExecutableCheck
+ public class SVKProtector : IExecutableCheck, IPathCheck
{
// TODO: Find 1.4+ samples.
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/SecuROM.cs b/BinaryObjectScanner/Protection/SecuROM.cs
index 58e753cc..79d12a2c 100644
--- a/BinaryObjectScanner/Protection/SecuROM.cs
+++ b/BinaryObjectScanner/Protection/SecuROM.cs
@@ -11,10 +11,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
// TODO: Investigate SecuROM for Macintosh
- public class SecuROM : IPathCheck, IPortableExecutableCheck
+ public class SecuROM : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
@@ -189,7 +189,7 @@ namespace BinaryObjectScanner.Protection
return $"{major}.{minor}.{patch}.{revision}";
}
- public static string? GetV5Version(string file, byte[]? fileContent, List positions)
+ private static string? GetV5Version(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
diff --git a/BinaryObjectScanner/Protection/SmartE.cs b/BinaryObjectScanner/Protection/SmartE.cs
index 547e4b2e..5b915f28 100644
--- a/BinaryObjectScanner/Protection/SmartE.cs
+++ b/BinaryObjectScanner/Protection/SmartE.cs
@@ -7,10 +7,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class SmartE : IPathCheck, IPortableExecutableCheck
+ public class SmartE : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/SoftLock.cs b/BinaryObjectScanner/Protection/SoftLock.cs
index 358cab70..55c61722 100644
--- a/BinaryObjectScanner/Protection/SoftLock.cs
+++ b/BinaryObjectScanner/Protection/SoftLock.cs
@@ -12,10 +12,10 @@ namespace BinaryObjectScanner.Protection
///
///
///
- public class SoftLock : IPortableExecutableCheck, IPathCheck
+ public class SoftLock : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/SolidShield.cs b/BinaryObjectScanner/Protection/SolidShield.cs
index 0479ac54..0a5af72a 100644
--- a/BinaryObjectScanner/Protection/SolidShield.cs
+++ b/BinaryObjectScanner/Protection/SolidShield.cs
@@ -11,10 +11,10 @@ namespace BinaryObjectScanner.Protection
{
// TODO: Not matching all SolidShield Wrapper v1 (See JackKeane)
// TODO: Not matching all SolidShield Wrapper v1 (See NFS11)
- public class SolidShield : IPathCheck, IPortableExecutableCheck
+ public class SolidShield : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// TODO: Investigate ".pseudo" section found in "tvdm.dll" in Redump entry 68166.
@@ -148,7 +148,7 @@ namespace BinaryObjectScanner.Protection
return MatchUtil.GetFirstMatch(path, matchers, any: true);
}
- public static string? GetExeWrapperVersion(string file, byte[]? fileContent, List positions)
+ private static string? GetExeWrapperVersion(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
@@ -179,7 +179,7 @@ namespace BinaryObjectScanner.Protection
return string.Empty;
}
- public static string? GetVersionPlusTages(string file, byte[]? fileContent, List positions)
+ private static string? GetVersionPlusTages(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
diff --git a/BinaryObjectScanner/Protection/StarForce.cs b/BinaryObjectScanner/Protection/StarForce.cs
index 2cac9512..b62fda06 100644
--- a/BinaryObjectScanner/Protection/StarForce.cs
+++ b/BinaryObjectScanner/Protection/StarForce.cs
@@ -8,7 +8,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class StarForce : IPathCheck, IPortableExecutableCheck
+ public class StarForce : IExecutableCheck, IPathCheck
{
// TODO: Bring up to par with PiD.
// Known issues:
@@ -18,7 +18,7 @@ namespace BinaryObjectScanner.Protection
// "Replay.exe" not detected, doesn't detect "[FL Disc]" (Redump entry 81756).
// Doesn't detect "[Pro]" (Redump entry 91336).
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Steam.cs b/BinaryObjectScanner/Protection/Steam.cs
index c891646a..851c0a92 100644
--- a/BinaryObjectScanner/Protection/Steam.cs
+++ b/BinaryObjectScanner/Protection/Steam.cs
@@ -6,10 +6,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class Steam : IPathCheck, IPortableExecutableCheck
+ public class Steam : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Sysiphus.cs b/BinaryObjectScanner/Protection/Sysiphus.cs
index f9af518c..54c0c528 100644
--- a/BinaryObjectScanner/Protection/Sysiphus.cs
+++ b/BinaryObjectScanner/Protection/Sysiphus.cs
@@ -5,10 +5,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class Sysiphus : IPortableExecutableCheck
+ public class Sysiphus : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
@@ -27,7 +27,7 @@ namespace BinaryObjectScanner.Protection
return null;
}
- public static string GetVersion(string matchedString)
+ private static string GetVersion(string matchedString)
{
// The string is reversed
matchedString = new string(matchedString.Reverse().ToArray()).Trim();
diff --git a/BinaryObjectScanner/Protection/Tages.cs b/BinaryObjectScanner/Protection/Tages.cs
index 4bd53072..f7bce6aa 100644
--- a/BinaryObjectScanner/Protection/Tages.cs
+++ b/BinaryObjectScanner/Protection/Tages.cs
@@ -9,10 +9,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class TAGES : IPathCheck, IPortableExecutableCheck
+ public class TAGES : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
@@ -221,7 +221,7 @@ namespace BinaryObjectScanner.Protection
return "(Unknown Version)";
}
- public static string? GetVersion(string file, byte[]? fileContent, List positions)
+ private static string? GetVersion(string file, byte[]? fileContent, List positions)
{
// If we have no content
if (fileContent == null)
diff --git a/BinaryObjectScanner/Protection/Themida.cs b/BinaryObjectScanner/Protection/Themida.cs
index f324a3b2..7e2615d1 100644
--- a/BinaryObjectScanner/Protection/Themida.cs
+++ b/BinaryObjectScanner/Protection/Themida.cs
@@ -23,10 +23,10 @@ namespace BinaryObjectScanner.Protection
/// Investigate further ArcSoft programs.
/// Investigate PUBG (possibly older versions) (https://www.pcgamingwiki.com/wiki/PUBG:_Battlegrounds).
///
- public class Themida : IPortableExecutableCheck
+ public class Themida : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ThreePLock.cs b/BinaryObjectScanner/Protection/ThreePLock.cs
index d9235992..83ac19a3 100644
--- a/BinaryObjectScanner/Protection/ThreePLock.cs
+++ b/BinaryObjectScanner/Protection/ThreePLock.cs
@@ -8,10 +8,10 @@ namespace BinaryObjectScanner.Protection
/// There don't seem to be any other signs that this is 3P-Lock anywhere in the example files
/// No website has been found for 3P-Lock yet
///
- public class ThreePLock : IPortableExecutableCheck
+ public class ThreePLock : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/ThreeTwoOneStudios.cs b/BinaryObjectScanner/Protection/ThreeTwoOneStudios.cs
index 8fce0eb0..88465cac 100644
--- a/BinaryObjectScanner/Protection/ThreeTwoOneStudios.cs
+++ b/BinaryObjectScanner/Protection/ThreeTwoOneStudios.cs
@@ -4,10 +4,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
- public class ThreeTwoOneStudios : IPortableExecutableCheck
+ public class ThreeTwoOneStudios : IExecutableCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/Uplay.cs b/BinaryObjectScanner/Protection/Uplay.cs
index 8bc223ac..529c25c5 100644
--- a/BinaryObjectScanner/Protection/Uplay.cs
+++ b/BinaryObjectScanner/Protection/Uplay.cs
@@ -7,10 +7,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
// Got renamed to Ubisoft Connect / Ubisoft Game Launcher
- public class Uplay : IPathCheck, IPortableExecutableCheck
+ public class Uplay : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/WMDS.cs b/BinaryObjectScanner/Protection/WMDS.cs
index 34f71543..c7973169 100644
--- a/BinaryObjectScanner/Protection/WMDS.cs
+++ b/BinaryObjectScanner/Protection/WMDS.cs
@@ -14,10 +14,10 @@ namespace BinaryObjectScanner.Protection
/// Known to be used along with MediaMax CD-3 and XCP2, possibly others.
/// Reference: https://news.microsoft.com/2003/01/20/microsoft-releases-new-windows-media-data-session-toolkit-enabling-second-session-creation/
///
- public class WMDS : IPathCheck, IPortableExecutableCheck
+ public class WMDS : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/WTMCDProtect.cs b/BinaryObjectScanner/Protection/WTMCDProtect.cs
index c08781c5..ffabd368 100644
--- a/BinaryObjectScanner/Protection/WTMCDProtect.cs
+++ b/BinaryObjectScanner/Protection/WTMCDProtect.cs
@@ -8,10 +8,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
// TODO: Document and implement support for this better, including version detection.
- public class WTMCDProtect : IPathCheck, IPortableExecutableCheck
+ public class WTMCDProtect : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Protection/XCP.cs b/BinaryObjectScanner/Protection/XCP.cs
index 6107f063..0904238a 100644
--- a/BinaryObjectScanner/Protection/XCP.cs
+++ b/BinaryObjectScanner/Protection/XCP.cs
@@ -9,10 +9,10 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
// TODO: Figure out how to use path check framework here
- public class XCP : IPathCheck, IPortableExecutableCheck
+ public class XCP : IExecutableCheck, IPathCheck
{
///
- public string? CheckPortableExecutable(string file, PortableExecutable pex, bool includeDebug)
+ public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
{
// Get the sections from the executable, if possible
var sections = pex.Model.SectionTable;
diff --git a/BinaryObjectScanner/Scanner.cs b/BinaryObjectScanner/Scanner.cs
index 50e82801..730aa658 100644
--- a/BinaryObjectScanner/Scanner.cs
+++ b/BinaryObjectScanner/Scanner.cs
@@ -468,7 +468,7 @@ namespace BinaryObjectScanner
/// Name of the source file of the stream, for tracking
/// MSDOS to scan the contents of
/// Set of protections found from extraction, null on error
- private ProtectionDictionary? HandleExtractableProtections(IEnumerable? classes,
+ private ProtectionDictionary? HandleExtractableProtections(IEnumerable>? classes,
string fileName,
MSDOS mz)
{
@@ -534,7 +534,7 @@ namespace BinaryObjectScanner
/// Name of the source file of the stream, for tracking
/// LinearExecutable to scan the contents of
/// Set of protections found from extraction, null on error
- private ProtectionDictionary? HandleExtractableProtections(IEnumerable? classes,
+ private ProtectionDictionary? HandleExtractableProtections(IEnumerable>? classes,
string fileName,
LinearExecutable lex)
{
@@ -600,7 +600,7 @@ namespace BinaryObjectScanner
/// Name of the source file of the stream, for tracking
/// NewExecutable to scan the contents of
/// Set of protections found from extraction, null on error
- private ProtectionDictionary? HandleExtractableProtections(IEnumerable? classes,
+ private ProtectionDictionary? HandleExtractableProtections(IEnumerable>? classes,
string fileName,
NewExecutable nex)
{
@@ -666,7 +666,7 @@ namespace BinaryObjectScanner
/// Name of the source file of the stream, for tracking
/// PortableExecutable to scan the contents of
/// Set of protections found from extraction, null on error
- private ProtectionDictionary? HandleExtractableProtections(IEnumerable? classes,
+ private ProtectionDictionary? HandleExtractableProtections(IEnumerable>? classes,
string fileName,
PortableExecutable pex)
{
diff --git a/Coding Guide.md b/Coding Guide.md
index 6644b91b..c7d3c10b 100644
--- a/Coding Guide.md
+++ b/Coding Guide.md
@@ -377,10 +377,10 @@ This section contains information on in-code organization principles that depend
| --- | --- |
| `BinaryObjectScanner` | Varies from file to file. |
| `BinaryObjectScanner/FileType` | `IDetectable` implementations, `IExtractable` implementations, helper methods. |
-| `BinaryObjectScanner/GameEngine` | `IContentCheck` implementations, `ILinearExecutableCheck` implementations, `INewExecutableCheck` implementations, `IPortableExecutableCheck` implementations, `IPathCheck` implementations, `IExtractable` implementations, helper methods. |
+| `BinaryObjectScanner/GameEngine` | `IContentCheck` implementations, `IExecutableCheck` implementations, `IExecutableCheck` implementations, `IExecutableCheck` implementations, `IPathCheck` implementations, `IExtractable` implementations, helper methods. |
| `BinaryObjectScanner/Interfaces` | Methods ordered alphabetically. |
-| `BinaryObjectScanner/Packer` | `IContentCheck` implementations, `ILinearExecutableCheck` implementations, `INewExecutableCheck` implementations, `IPortableExecutableCheck` implementations, `IPathCheck` implementations, `IExtractable` implementations, helper methods. |
-| `BinaryObjectScanner/Protection` | `IContentCheck` implementations, `ILinearExecutableCheck` implementations, `INewExecutableCheck` implementations, `IPortableExecutableCheck` implementations, `IPathCheck` implementations, `IExtractable` implementations, helper methods. |
+| `BinaryObjectScanner/Packer` | `IContentCheck` implementations, `IExecutableCheck` implementations, `IExecutableCheck` implementations, `IExecutableCheck` implementations, `IPathCheck` implementations, `IExtractable` implementations, helper methods. |
+| `BinaryObjectScanner/Protection` | `IContentCheck` implementations, `IExecutableCheck` implementations, `IExecutableCheck` implementations, `IExecutableCheck` implementations, `IPathCheck` implementations, `IExtractable` implementations, helper methods. |
| `ExtractionTool` | New functionality should be added as a combination of a flag with a long and a short form, a new line in the help text, and a new method (if necessary). |
| `ProtectionScan` | New functionality should be added as a combination of a flag with a long and a short form, a new line in the help text, and a new method (if necessary). |
diff --git a/Developer Guide.md b/Developer Guide.md
index 8776173e..233ad020 100644
--- a/Developer Guide.md
+++ b/Developer Guide.md
@@ -36,11 +36,11 @@ Adding a new checker or format should happen in a few distinct steps:
- If it is a new supported file type (such as an archive format), create the file in `BinaryObjectScanner.FileType`. By default, you will need to implement `BinaryObjectScanner.Interfaces.IDetectable` or `BinaryObjectScanner.Interfaces.IExtractable`. Do not implement any other interfaces. Please consider asking project maintainers before doing this work, especially if there are external dependencies.
- - If it is a new supported game engine or standard library, create the file in `BinaryObjectScanner.GameEngine`. By default, you will need to implement at least one of: `BinaryObjectScanner.Interfaces.ILinearExecutableCheck`, `BinaryObjectScanner.Interfaces.INewExecutableCheck`, and `BinaryObjectScanner.Interfaces.IPortableExecutableCheck`. It is exceptionally rare to need to implement `BinaryObjectScanner.Interfaces.IPathCheck`.
+ - If it is a new supported game engine or standard library, create the file in `BinaryObjectScanner.GameEngine`. By default, you will need to implement at least one of: `BinaryObjectScanner.Interfaces.IExecutableCheck`, `BinaryObjectScanner.Interfaces.IExecutableCheck`, and `BinaryObjectScanner.Interfaces.IExecutableCheck`. It is exceptionally rare to need to implement `BinaryObjectScanner.Interfaces.IPathCheck`.
- - If it is a new supported executable packer, compressor, or installer format, create the file in `BinaryObjectScanner.Packer`. By default, you will need to implement `BinaryObjectScanner.Interfaces.IExtractable` as well as at least one of: `BinaryObjectScanner.Interfaces.ILinearExecutableCheck`, `BinaryObjectScanner.Interfaces.INewExecutableCheck`, and `BinaryObjectScanner.Interfaces.IPortableExecutableCheck`. It is exceptionally rare to need to implement `BinaryObjectScanner.Interfaces.IPathCheck`.
+ - If it is a new supported executable packer, compressor, or installer format, create the file in `BinaryObjectScanner.Packer`. By default, you will need to implement `BinaryObjectScanner.Interfaces.IExtractable` as well as at least one of: `BinaryObjectScanner.Interfaces.IExecutableCheck