From 9a4e6de5f9d8edc0317ad5d5f26044d9c0b4ac68 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 5 Nov 2022 23:52:16 -0700 Subject: [PATCH] Add MS-DOS stub to NE/LE/LX/PE builders --- BurnOutSharp.Builder/LinearExecutable.cs | 8 ++++++++ BurnOutSharp.Builder/NewExecutable.cs | 8 ++++++++ BurnOutSharp.Builder/PortableExecutable.cs | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/BurnOutSharp.Builder/LinearExecutable.cs b/BurnOutSharp.Builder/LinearExecutable.cs index caa74684..a09780c4 100644 --- a/BurnOutSharp.Builder/LinearExecutable.cs +++ b/BurnOutSharp.Builder/LinearExecutable.cs @@ -30,6 +30,14 @@ namespace BurnOutSharp.Builder // Create a new executable to fill var executable = new Executable(); + // Parse the MS-DOS stub + var stub = MSDOS.ParseExecutable(data, offset); + if (stub?.Header == null || stub.Header.NewExeHeaderAddr == 0) + return null; + + // Set the MS-DOS stub + executable.Stub = stub; + // TODO: Implement LE/LX parsing return null; } diff --git a/BurnOutSharp.Builder/NewExecutable.cs b/BurnOutSharp.Builder/NewExecutable.cs index 9b03c52c..59be7cac 100644 --- a/BurnOutSharp.Builder/NewExecutable.cs +++ b/BurnOutSharp.Builder/NewExecutable.cs @@ -30,6 +30,14 @@ namespace BurnOutSharp.Builder // Create a new executable to fill var executable = new Executable(); + // Parse the MS-DOS stub + var stub = MSDOS.ParseExecutable(data, offset); + if (stub?.Header == null || stub.Header.NewExeHeaderAddr == 0) + return null; + + // Set the MS-DOS stub + executable.Stub = stub; + // TODO: Implement NE parsing return null; } diff --git a/BurnOutSharp.Builder/PortableExecutable.cs b/BurnOutSharp.Builder/PortableExecutable.cs index ecce394b..da55fc72 100644 --- a/BurnOutSharp.Builder/PortableExecutable.cs +++ b/BurnOutSharp.Builder/PortableExecutable.cs @@ -30,6 +30,14 @@ namespace BurnOutSharp.Builder // Create a new executable to fill var executable = new Executable(); + // Parse the MS-DOS stub + var stub = MSDOS.ParseExecutable(data, offset); + if (stub?.Header == null || stub.Header.NewExeHeaderAddr == 0) + return null; + + // Set the MS-DOS stub + executable.Stub = stub; + // TODO: Implement PE parsing return null; }