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)