Пример #1
0
        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());
        }
Пример #2
0
        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++;
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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));
            }
        }
Пример #5
0
 public void Read(MemoryStreamReader br, int size)
 {
     AID     = br.ReadUInt();
     Ranking = br.ReadInt();
     Total   = br.ReadInt();
 }
Пример #6
0
 public void Read(MemoryStreamReader br, int size)
 {
     status    = (EntityStatus)br.ReadUInt();
     value     = br.ReadInt();
     plusValue = br.ReadInt();
 }
Пример #7
0
        public object InterpretData(ElementType elementType)
        {
            var reader = new MemoryStreamReader(Data);

            return(ReadElement(reader, elementType));
        }
Пример #8
0
 public void Read(MemoryStreamReader br, int size)
 {
     Range = br.ReadShort();
 }