diff --git a/.vscode/launch.json b/.vscode/launch.json
index 57c2cdf4..5fe33211 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -11,7 +11,7 @@
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/ProtectionScan/bin/Debug/net8.0/ProtectionScan.dll",
- "args": [],
+ "args": ["/mnt/b/BurnOutSharp Testing Files/PackerType/NSIS/"],
"cwd": "${workspaceFolder}/ProtectionScan",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",
diff --git a/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs b/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs
index a894be5d..df432f24 100644
--- a/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs
+++ b/BinaryObjectScanner/Interfaces/IExtractableExecutable.cs
@@ -5,7 +5,7 @@ namespace BinaryObjectScanner.Interfaces
///
/// Mark an executable type as being able to be extracted
///
- public interface IExtractableExecutable where T : WrapperBase
+ public interface IExtractableExecutable : IExecutableCheck where T : WrapperBase
{
///
/// Extract an Executable to a path, if possible
diff --git a/BinaryObjectScanner/Packer/ASPack.cs b/BinaryObjectScanner/Packer/ASPack.cs
index 9453b4f1..ec909726 100644
--- a/BinaryObjectScanner/Packer/ASPack.cs
+++ b/BinaryObjectScanner/Packer/ASPack.cs
@@ -8,7 +8,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
- public class ASPack : IExecutableCheck, IExtractableExecutable
+ public class ASPack : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/AdvancedInstaller.cs b/BinaryObjectScanner/Packer/AdvancedInstaller.cs
index bb5e6f15..4e21ced7 100644
--- a/BinaryObjectScanner/Packer/AdvancedInstaller.cs
+++ b/BinaryObjectScanner/Packer/AdvancedInstaller.cs
@@ -6,7 +6,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// TODO: Verify that all versions are detected
- public class AdvancedInstaller : IExecutableCheck, IExtractableExecutable
+ public class AdvancedInstaller : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs b/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs
index c09ea1cf..e326b502 100644
--- a/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs
+++ b/BinaryObjectScanner/Packer/AutoPlayMediaStudio.cs
@@ -7,7 +7,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class AutoPlayMediaStudio : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/CExe.cs b/BinaryObjectScanner/Packer/CExe.cs
index 1bf00653..81e6e164 100644
--- a/BinaryObjectScanner/Packer/CExe.cs
+++ b/BinaryObjectScanner/Packer/CExe.cs
@@ -13,7 +13,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class CExe : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/DotFuscator.cs b/BinaryObjectScanner/Packer/DotFuscator.cs
index 1d9bd271..084e83dd 100644
--- a/BinaryObjectScanner/Packer/DotFuscator.cs
+++ b/BinaryObjectScanner/Packer/DotFuscator.cs
@@ -5,7 +5,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
- public class DotFuscator : IExecutableCheck, IExtractableExecutable
+ public class DotFuscator : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/DotNetReactor.cs b/BinaryObjectScanner/Packer/DotNetReactor.cs
index b2dc0b07..a36b14c4 100644
--- a/BinaryObjectScanner/Packer/DotNetReactor.cs
+++ b/BinaryObjectScanner/Packer/DotNetReactor.cs
@@ -15,7 +15,7 @@ namespace BinaryObjectScanner.Packer
///
/// Resource that could be useful for extraction: https://github.com/SychicBoy/NETReactorSlayer
///
- public class DotNetReactor : IExecutableCheck, IExtractableExecutable
+ public class DotNetReactor : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/EXEStealth.cs b/BinaryObjectScanner/Packer/EXEStealth.cs
index 166a6962..fff20842 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, IExecutableCheck, IExtractableExecutable
+ public class EXEStealth : IContentCheck, IExtractableExecutable
{
///
public string? CheckContents(string file, byte[] fileContent, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/EmbeddedExecutable.cs b/BinaryObjectScanner/Packer/EmbeddedExecutable.cs
index c4a351f6..aa4c4f1c 100644
--- a/BinaryObjectScanner/Packer/EmbeddedExecutable.cs
+++ b/BinaryObjectScanner/Packer/EmbeddedExecutable.cs
@@ -11,7 +11,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class EmbeddedExecutable : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/GenteeInstaller.cs b/BinaryObjectScanner/Packer/GenteeInstaller.cs
index df773ccf..d724f0b6 100644
--- a/BinaryObjectScanner/Packer/GenteeInstaller.cs
+++ b/BinaryObjectScanner/Packer/GenteeInstaller.cs
@@ -6,7 +6,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class GenteeInstaller : IExecutableCheck, IExtractableExecutable
+ public class GenteeInstaller : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/HyperTechCrackProof.cs b/BinaryObjectScanner/Packer/HyperTechCrackProof.cs
index ed23080d..d8c4a58c 100644
--- a/BinaryObjectScanner/Packer/HyperTechCrackProof.cs
+++ b/BinaryObjectScanner/Packer/HyperTechCrackProof.cs
@@ -9,7 +9,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class HyperTechCrackProof : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/InnoSetup.cs b/BinaryObjectScanner/Packer/InnoSetup.cs
index 9ee66674..16301d3a 100644
--- a/BinaryObjectScanner/Packer/InnoSetup.cs
+++ b/BinaryObjectScanner/Packer/InnoSetup.cs
@@ -10,7 +10,6 @@ namespace BinaryObjectScanner.Packer
// TODO: Add extraction - https://github.com/dscharrer/InnoExtract
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
public class InnoSetup : IExecutableCheck,
- IExecutableCheck,
IExtractableExecutable
{
///
diff --git a/BinaryObjectScanner/Packer/InstallAnywhere.cs b/BinaryObjectScanner/Packer/InstallAnywhere.cs
index 75e85854..f10a2326 100644
--- a/BinaryObjectScanner/Packer/InstallAnywhere.cs
+++ b/BinaryObjectScanner/Packer/InstallAnywhere.cs
@@ -6,7 +6,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class InstallAnywhere : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/InstallerVISE.cs b/BinaryObjectScanner/Packer/InstallerVISE.cs
index 53c28312..1bac879c 100644
--- a/BinaryObjectScanner/Packer/InstallerVISE.cs
+++ b/BinaryObjectScanner/Packer/InstallerVISE.cs
@@ -6,7 +6,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction - https://github.com/Bioruebe/UniExtract2
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class InstallerVISE : IExecutableCheck, IExtractableExecutable
+ public class InstallerVISE : IExtractableExecutable
{
//TODO: Add exact version detection for Windows builds, make sure versions before 3.X are detected as well, and detect the Mac builds.
///
diff --git a/BinaryObjectScanner/Packer/IntelInstallationFramework.cs b/BinaryObjectScanner/Packer/IntelInstallationFramework.cs
index 09bd1918..8d5e27cf 100644
--- a/BinaryObjectScanner/Packer/IntelInstallationFramework.cs
+++ b/BinaryObjectScanner/Packer/IntelInstallationFramework.cs
@@ -5,7 +5,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction, seems to primarily use MSZip compression.
- public class IntelInstallationFramework : IExecutableCheck, IExtractableExecutable
+ public class IntelInstallationFramework : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs b/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs
index 841b5a81..d82b2020 100644
--- a/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs
+++ b/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs
@@ -7,7 +7,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class MicrosoftCABSFX : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/NSIS.cs b/BinaryObjectScanner/Packer/NSIS.cs
index f6c4f7e6..82eef9f2 100644
--- a/BinaryObjectScanner/Packer/NSIS.cs
+++ b/BinaryObjectScanner/Packer/NSIS.cs
@@ -5,7 +5,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
- public class NSIS : IExecutableCheck, IExtractableExecutable
+ public class NSIS : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/NeoLite.cs b/BinaryObjectScanner/Packer/NeoLite.cs
index 85f23d28..049259f5 100644
--- a/BinaryObjectScanner/Packer/NeoLite.cs
+++ b/BinaryObjectScanner/Packer/NeoLite.cs
@@ -13,7 +13,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class NeoLite : IExtractableExecutable
{
// TODO: Find samples of NeoLite 1.X.
///
diff --git a/BinaryObjectScanner/Packer/PECompact.cs b/BinaryObjectScanner/Packer/PECompact.cs
index 0075f1ea..0adf404d 100644
--- a/BinaryObjectScanner/Packer/PECompact.cs
+++ b/BinaryObjectScanner/Packer/PECompact.cs
@@ -5,7 +5,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Better version detection - https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
// TODO: Add extraction
- public class PECompact : IExecutableCheck, IExtractableExecutable
+ public class PECompact : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/Petite.cs b/BinaryObjectScanner/Packer/Petite.cs
index 27b82e71..3c3c9883 100644
--- a/BinaryObjectScanner/Packer/Petite.cs
+++ b/BinaryObjectScanner/Packer/Petite.cs
@@ -5,7 +5,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class PEtite : IExecutableCheck, IExtractableExecutable
+ public class PEtite : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/SetupFactory.cs b/BinaryObjectScanner/Packer/SetupFactory.cs
index 95fe1346..345e12b9 100644
--- a/BinaryObjectScanner/Packer/SetupFactory.cs
+++ b/BinaryObjectScanner/Packer/SetupFactory.cs
@@ -7,7 +7,7 @@ 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 : IExecutableCheck, IExtractableExecutable
+ public class SetupFactory : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/SevenZipSFX.cs b/BinaryObjectScanner/Packer/SevenZipSFX.cs
index 2bacb3f0..6d440208 100644
--- a/BinaryObjectScanner/Packer/SevenZipSFX.cs
+++ b/BinaryObjectScanner/Packer/SevenZipSFX.cs
@@ -4,7 +4,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
- public class SevenZipSFX : IExecutableCheck, IExtractableExecutable
+ public class SevenZipSFX : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/Shrinker.cs b/BinaryObjectScanner/Packer/Shrinker.cs
index 4167757f..0085d7e0 100644
--- a/BinaryObjectScanner/Packer/Shrinker.cs
+++ b/BinaryObjectScanner/Packer/Shrinker.cs
@@ -5,7 +5,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class Shrinker : IExecutableCheck, IExtractableExecutable
+ public class Shrinker : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/UPX.cs b/BinaryObjectScanner/Packer/UPX.cs
index f8e1142e..e7ccb401 100644
--- a/BinaryObjectScanner/Packer/UPX.cs
+++ b/BinaryObjectScanner/Packer/UPX.cs
@@ -9,7 +9,7 @@ namespace BinaryObjectScanner.Packer
{
// TODO: Add extraction
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class UPX : IExecutableCheck, IExtractableExecutable
+ public class UPX : IExtractableExecutable
{
private static readonly Regex _oldUpxVersionMatch = new Regex(@"\$Id: UPX (.*?) Copyright \(C\)", RegexOptions.Compiled);
diff --git a/BinaryObjectScanner/Packer/WinRARSFX.cs b/BinaryObjectScanner/Packer/WinRARSFX.cs
index f9fba171..b9a25eee 100644
--- a/BinaryObjectScanner/Packer/WinRARSFX.cs
+++ b/BinaryObjectScanner/Packer/WinRARSFX.cs
@@ -4,7 +4,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
- public class WinRARSFX : IExecutableCheck, IExtractableExecutable
+ public class WinRARSFX : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/WinZipSFX.cs b/BinaryObjectScanner/Packer/WinZipSFX.cs
index da42ae2e..75e86273 100644
--- a/BinaryObjectScanner/Packer/WinZipSFX.cs
+++ b/BinaryObjectScanner/Packer/WinZipSFX.cs
@@ -5,10 +5,7 @@ using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Packer
{
- public class WinZipSFX : IExecutableCheck,
- IExecutableCheck,
- IExtractableExecutable,
- IExtractableExecutable
+ public class WinZipSFX : IExtractableExecutable, IExtractableExecutable
{
///
public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
diff --git a/BinaryObjectScanner/Packer/WiseInstaller.cs b/BinaryObjectScanner/Packer/WiseInstaller.cs
index 3f6ac06e..64ff6fca 100644
--- a/BinaryObjectScanner/Packer/WiseInstaller.cs
+++ b/BinaryObjectScanner/Packer/WiseInstaller.cs
@@ -13,10 +13,7 @@ using WiseUnpacker.EWISE;
namespace BinaryObjectScanner.Packer
{
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class WiseInstaller : IExecutableCheck,
- IExecutableCheck,
- IExtractableExecutable,
- IExtractableExecutable
+ public class WiseInstaller : IExtractableExecutable, IExtractableExecutable
{
///
public string? CheckExecutable(string file, NewExecutable nex, bool includeDebug)
diff --git a/BinaryObjectScanner/Protection/Armadillo.cs b/BinaryObjectScanner/Protection/Armadillo.cs
index 90a65d0c..00f1f83f 100644
--- a/BinaryObjectScanner/Protection/Armadillo.cs
+++ b/BinaryObjectScanner/Protection/Armadillo.cs
@@ -18,7 +18,7 @@ namespace BinaryObjectScanner.Protection
// TODO: Add version checking, if possible
// https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt
- public class Armadillo : IExecutableCheck, IExtractableExecutable
+ public class Armadillo : IExtractableExecutable
{
///
public string? CheckExecutable(string file, PortableExecutable pex, bool includeDebug)