Added support for DOS MZ executables.

This commit is contained in:
2017-10-03 13:26:49 +01:00
commit e84cf3cb41
6 changed files with 229 additions and 0 deletions

42
exeinfo/Program.cs Normal file
View File

@@ -0,0 +1,42 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace exeinfo
{
class MainClass
{
static MZ.Header mzHdr;
public static void Main(string[] args)
{
if(args.Length != 1)
{
Console.WriteLine("exeinfo version 0.1 © 2017 Natalia Portillo");
Console.WriteLine("Usage: exeinfo file.exe");
return;
}
FileStream exeFs = File.Open(args[0], FileMode.Open, FileAccess.Read);
bool recognized = false;
byte[] buffer = new byte[Marshal.SizeOf(typeof(MZ.Header))];
exeFs.Read(buffer, 0, buffer.Length);
IntPtr hdrPtr = Marshal.AllocHGlobal(buffer.Length);
Marshal.Copy(buffer, 0, hdrPtr, buffer.Length);
mzHdr = (MZ.Header)Marshal.PtrToStructure(hdrPtr, typeof(MZ.Header));
Marshal.FreeHGlobal(hdrPtr);
if(mzHdr.signature == MZ.Signature)
{
recognized = true;
MZ.PrintInfo(mzHdr);
}
if (!recognized)
Console.WriteLine("Executalbe format not recognized");
}
}
}