public static Program LoadEXE(string filename) { Program program = new Program(); using (FileStream exe = new FileStream(filename, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte [4]; exe.Position = 0x10; exe.Read(buffer, 0, 4); int entrypoint = BitConv.FromInt32(buffer, 0); exe.Position = 0x18; exe.Read(buffer, 0, 4); int address = BitConv.FromInt32(buffer, 0); exe.Position = 0x800; while (exe.Read(buffer, 0, 4) == 4) { program.SetWord(address, BitConv.FromInt32(buffer, 0)); address += 4; } program[entrypoint].IsMethod = true; program[entrypoint].Label = "Main"; program.MarkBranch(entrypoint); } return(program); }
public static Program LoadEXE(string filename) { Program program = new Program(); using (FileStream exe = new FileStream(filename,FileMode.Open,FileAccess.Read)) { byte[] buffer = new byte [4]; exe.Position = 0x10; exe.Read(buffer,0,4); int entrypoint = BitConv.FromInt32(buffer,0); exe.Position = 0x18; exe.Read(buffer,0,4); int address = BitConv.FromInt32(buffer,0); exe.Position = 0x800; while (exe.Read(buffer,0,4) == 4) { program.SetWord(address,BitConv.FromInt32(buffer,0)); address += 4; } program[entrypoint].IsMethod = true; program[entrypoint].Label = "Main"; program.MarkBranch(entrypoint); } return program; }