diff --git a/BinaryObjectScanner/FileType/Executable.cs b/BinaryObjectScanner/FileType/Executable.cs
index 64b112fd..b3cb1dd8 100644
--- a/BinaryObjectScanner/FileType/Executable.cs
+++ b/BinaryObjectScanner/FileType/Executable.cs
@@ -11,25 +11,12 @@ namespace BinaryObjectScanner.FileType
///
/// Executable or library
///
- public abstract class Executable : DetectableBase, IExtractable
+ public abstract class Executable : DetectableBase
where T : WrapperBase
{
///
public Executable(T? wrapper) : base(wrapper) { }
- ///
- public bool Extract(string file, string outDir, bool includeDebug)
- {
- if (!File.Exists(file))
- return false;
-
- using var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
- return Extract(fs, file, outDir, includeDebug);
- }
-
- ///
- public abstract bool Extract(Stream? stream, string file, string outDir, bool includeDebug);
-
#region Check Runners
///
diff --git a/BinaryObjectScanner/FileType/LinearExecutable.cs b/BinaryObjectScanner/FileType/LinearExecutable.cs
index 6f36bde8..7bb2f860 100644
--- a/BinaryObjectScanner/FileType/LinearExecutable.cs
+++ b/BinaryObjectScanner/FileType/LinearExecutable.cs
@@ -43,8 +43,5 @@ namespace BinaryObjectScanner.FileType
return string.Join(";", [.. protectionList]);
}
-
- ///
- public override bool Extract(Stream? stream, string file, string outDir, bool includeDebug) => false;
}
}
diff --git a/BinaryObjectScanner/FileType/MSDOS.cs b/BinaryObjectScanner/FileType/MSDOS.cs
index a33254c7..56983a06 100644
--- a/BinaryObjectScanner/FileType/MSDOS.cs
+++ b/BinaryObjectScanner/FileType/MSDOS.cs
@@ -43,8 +43,5 @@ namespace BinaryObjectScanner.FileType
return string.Join(";", [.. protectionList]);
}
-
- ///
- public override bool Extract(Stream? stream, string file, string outDir, bool includeDebug) => false;
}
}
diff --git a/BinaryObjectScanner/FileType/NewExecutable.cs b/BinaryObjectScanner/FileType/NewExecutable.cs
index 940a4e1b..11c36182 100644
--- a/BinaryObjectScanner/FileType/NewExecutable.cs
+++ b/BinaryObjectScanner/FileType/NewExecutable.cs
@@ -1,7 +1,7 @@
-using System;
using System.Collections.Generic;
using System.IO;
using BinaryObjectScanner.Data;
+using BinaryObjectScanner.Interfaces;
using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.FileType
@@ -9,7 +9,7 @@ namespace BinaryObjectScanner.FileType
///
/// New executable (NE)
///
- public class NewExecutable : Executable
+ public class NewExecutable : Executable, IExtractable
{
///
public NewExecutable(SabreTools.Serialization.Wrappers.NewExecutable? wrapper) : base(wrapper) { }
@@ -47,7 +47,17 @@ namespace BinaryObjectScanner.FileType
}
///
- public override bool Extract(Stream? stream, string file, string outDir, bool includeDebug)
+ public bool Extract(string file, string outDir, bool includeDebug)
+ {
+ if (!File.Exists(file))
+ return false;
+
+ using var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
+ return Extract(fs, file, outDir, includeDebug);
+ }
+
+ ///
+ public bool Extract(Stream? stream, string file, string outDir, bool includeDebug)
{
// Create the wrapper
var wrapper = WrapperFactory.CreateExecutableWrapper(stream);
diff --git a/BinaryObjectScanner/FileType/PortableExecutable.cs b/BinaryObjectScanner/FileType/PortableExecutable.cs
index 79e6650b..f0f72dce 100644
--- a/BinaryObjectScanner/FileType/PortableExecutable.cs
+++ b/BinaryObjectScanner/FileType/PortableExecutable.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.IO;
using BinaryObjectScanner.Data;
+using BinaryObjectScanner.Interfaces;
using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.FileType
@@ -8,7 +9,7 @@ namespace BinaryObjectScanner.FileType
///
/// Portable executable (PE)
///
- public class PortableExecutable : Executable
+ public class PortableExecutable : Executable, IExtractable
{
///
public PortableExecutable(SabreTools.Serialization.Wrappers.PortableExecutable? wrapper) : base(wrapper) { }
@@ -46,7 +47,17 @@ namespace BinaryObjectScanner.FileType
}
///
- public override bool Extract(Stream? stream, string file, string outDir, bool includeDebug)
+ public bool Extract(string file, string outDir, bool includeDebug)
+ {
+ if (!File.Exists(file))
+ return false;
+
+ using var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
+ return Extract(fs, file, outDir, includeDebug);
+ }
+
+ ///
+ public bool Extract(Stream? stream, string file, string outDir, bool includeDebug)
{
// Create the wrapper
var wrapper = WrapperFactory.CreateExecutableWrapper(stream);