public static WindowsAssembly RebuildNetAssembly(WindowsAssembly assembly, string tempPath) { using (var outputStream = File.Create(tempPath)) { var writer = new BinaryStreamWriter(outputStream); assembly.Write(new BuildingParameters(writer)); } var inputStream = new MemoryStreamReader(File.ReadAllBytes(tempPath)); return WindowsAssembly.FromReader(inputStream, new ReadingParameters()); }
private static void TestDisassembler(byte[] code, string source) { var reader = new MemoryStreamReader(code); var disassembler = new X86Disassembler(reader); var sourceLines = NormalizeSource(source).Split('\n'); var currentLine = 0; while (reader.Position < reader.Length) { var instruction = disassembler.ReadNextInstruction(); var formattedInstruction = _formatter.FormatInstruction(instruction); Assert.AreEqual(sourceLines[currentLine], formattedInstruction); currentLine++; } }
private static void TestSizeComputation(byte[] opcodes) { var reader = new MemoryStreamReader(opcodes); var disassembler = new X86Disassembler(reader); while (reader.Position < reader.Length) { var instruction = disassembler.ReadNextInstruction(); var expectedSize = reader.Position - instruction.Offset; var computeSize = instruction.ComputeSize(); if (expectedSize != computeSize) Assert.Fail("The instruction {0} has size {1}, but {2} was computed.", instruction, expectedSize, computeSize); } }
private static void ValidateCode(IReadOnlyList<X86Instruction> originalBody, byte[] assemblerOutput) { var formatter = new FasmX86Formatter(); var reader = new MemoryStreamReader(assemblerOutput); var disassembler = new X86Disassembler(reader); for (int i = 0; i < originalBody.Count; i++) { var newInstruction = disassembler.ReadNextInstruction(); Assert.AreEqual(formatter.FormatInstruction(originalBody[i]), formatter.FormatInstruction(newInstruction)); } }
public void Read(MemoryStreamReader br, int size) { AID = br.ReadUInt(); Ranking = br.ReadInt(); Total = br.ReadInt(); }
public void Read(MemoryStreamReader br, int size) { status = (EntityStatus)br.ReadUInt(); value = br.ReadInt(); plusValue = br.ReadInt(); }
public object InterpretData(ElementType elementType) { var reader = new MemoryStreamReader(Data); return(ReadElement(reader, elementType)); }
public void Read(MemoryStreamReader br, int size) { Range = br.ReadShort(); }