Address some NE parsing issues

This commit is contained in:
Matt Nadareski
2022-11-08 11:52:24 -08:00
parent 10de4ac78e
commit a3c0eca063
2 changed files with 9 additions and 5 deletions

View File

@@ -47,6 +47,7 @@ namespace BurnOutSharp.Builder
#region Executable Header
// Try to parse the executable header
offset = (int)(initialOffset + stub.Header.NewExeHeaderAddr);
var executableHeader = ParseExecutableHeader(data, offset);
if (executableHeader == null)
return null;
@@ -203,10 +204,10 @@ namespace BurnOutSharp.Builder
// TODO: Use marshalling here instead of building
var header = new ExecutableHeader();
header.Magic = new char[2];
header.Magic = new byte[2];
for (int i = 0; i < header.Magic.Length; i++)
{
header.Magic[i] = data.ReadChar(ref offset);
header.Magic[i] = data.ReadByte(ref offset);
}
if (header.Magic[0] != 'N' || header.Magic[1] != 'E')
return null;
@@ -320,6 +321,7 @@ namespace BurnOutSharp.Builder
.ToList();
// Populate the type and name string dictionary
resourceTable.TypeAndNameStrings = new Dictionary<ushort, ResourceTypeAndNameString>();
for (int i = 0; i < stringOffsets.Count; i++)
{
int stringOffset = stringOffsets[i] + initialOffset;
@@ -506,6 +508,7 @@ namespace BurnOutSharp.Builder
#region Executable Header
// Try to parse the executable header
data.Seek(initialOffset + stub.Header.NewExeHeaderAddr, SeekOrigin.Begin);
var executableHeader = ParseExecutableHeader(data);
if (executableHeader == null)
return null;
@@ -668,10 +671,10 @@ namespace BurnOutSharp.Builder
// TODO: Use marshalling here instead of building
var header = new ExecutableHeader();
header.Magic = new char[2];
header.Magic = new byte[2];
for (int i = 0; i < header.Magic.Length; i++)
{
header.Magic[i] = data.ReadChar();
header.Magic[i] = data.ReadByteValue();
}
if (header.Magic[0] != 'N' || header.Magic[1] != 'E')
return null;
@@ -783,6 +786,7 @@ namespace BurnOutSharp.Builder
.ToList();
// Populate the type and name string dictionary
resourceTable.TypeAndNameStrings = new Dictionary<ushort, ResourceTypeAndNameString>();
for (int i = 0; i < stringOffsets.Count; i++)
{
int stringOffset = (int)(stringOffsets[i] + initialOffset);

View File

@@ -17,7 +17,7 @@ namespace BurnOutSharp.Models.NewExecutable
/// "E" is high-order byte.
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public char[] Magic;
public byte[] Magic;
/// <summary>
/// Version number of the linker.