public void Setup() { mr = new MockRepository(); program = new Program(); proc = new Procedure(program.Architecture, "testProc", new Frame(PrimitiveType.Word32)); block = proc.AddBlock("l00100000"); trace = new RtlTrace(0x00100000); r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32)); r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32)); r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32)); sp = new Identifier("sp", PrimitiveType.Word32, new RegisterStorage("sp", 15, 0, PrimitiveType.Word32)); grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte); var sc = new ServiceContainer(); var listener = mr.Stub <DecompilerEventListener>(); scanner = mr.StrictMock <IScanner>(); arch = mr.Stub <IProcessorArchitecture>(); program.Architecture = arch; program.SegmentMap = new SegmentMap( Address.Ptr32(0x00100000), new ImageSegment( ".text", new MemoryArea(Address.Ptr32(0x00100000), new byte[0x20000]), AccessMode.ReadExecute)); arch.Replay(); program.Platform = new DefaultPlatform(null, arch); arch.BackToRecord(); arch.StackRegister = (RegisterStorage)sp.Storage; arch.Stub(s => s.PointerType).Return(PrimitiveType.Ptr32); scanner.Stub(s => s.Services).Return(sc); sc.AddService <DecompilerEventListener>(listener); }
private void Given_Architecture() { arch = mr.Stub <IProcessorArchitecture>(); var dasm = mr.Stub <IEnumerable <MachineInstruction> >(); var e = mr.Stub <IEnumerator <MachineInstruction> >(); arch.Stub(a => a.InstructionBitSize).Return(8); arch.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32); arch.Stub(a => a.CreateRegisterBitset()).Return(new BitSet(32)); arch.Stub(a => a.CreateImageReader(null, null)) .IgnoreArguments() .Do(new Func <LoadedImage, Address, ImageReader>((i, a) => new LeImageReader(i, a))); arch.Stub(a => a.CreateDisassembler( Arg <ImageReader> .Is.NotNull)).Return(dasm); Address dummy; arch.Stub(a => a.TryParseAddress(null, out dummy)).IgnoreArguments().WhenCalled(m => { Address addr; bool ret = Address.TryParse32((string)m.Arguments[0], out addr); m.Arguments[1] = addr; m.ReturnValue = ret; }).Return(false); dasm.Stub(d => d.GetEnumerator()).Return(e); arch.Replay(); dasm.Replay(); e.Replay(); }
public void Setup() { mr = new MockRepository(); arch = mr.Stub <IProcessorArchitecture>(); arch.Stub(a => a.CreateImageReader(null, 0u)).IgnoreArguments().Do(new Func <MemoryArea, ulong, EndianImageReader>((i, o) => i.CreateLeReader(o))); arch.Replay(); globalStruct = new StructureType { }; var globals_t = new TypeVariable("globals_t", 1) { DataType = globalStruct }; var globals = new Identifier("globals", PrimitiveType.Ptr32, null); eqLink = new EquivalenceClass(new TypeVariable(2)); StructureType str = new StructureType { Fields = { { 0, new Pointer(eqLink, 32) }, { 4, PrimitiveType.Int32 } } }; eqLink.DataType = str; }
public void Setup() { mr = new MockRepository(); program = new Program(); proc = new Procedure("testProc", new Frame(PrimitiveType.Word32)); block = proc.AddBlock("l00100000"); trace = new RtlTrace(0x00100000); r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32)); r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32)); r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32)); sp = new Identifier("sp", PrimitiveType.Word32, new RegisterStorage("sp", 15, 0, PrimitiveType.Word32)); grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte); var sc = new ServiceContainer(); var listener = mr.Stub<DecompilerEventListener>(); scanner = mr.StrictMock<IScanner>(); arch = mr.Stub<IProcessorArchitecture>(); program.Architecture = arch; program.SegmentMap = new SegmentMap( Address.Ptr32(0x00100000), new ImageSegment( ".text", new MemoryArea(Address.Ptr32(0x00100000), new byte[0x20000]), AccessMode.ReadExecute)); arch.Replay(); program.Platform = new DefaultPlatform(null, arch); arch.BackToRecord(); arch.Stub(s => s.StackRegister).Return((RegisterStorage)sp.Storage); arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32); scanner.Stub(s => s.Services).Return(sc); sc.AddService<DecompilerEventListener>(listener); }
public void Setup() { sb = new StringWriter(); map = new Dictionary <Address, Procedure>(); hcf = new HtmlCodeFormatter(sb, map); arch = MockRepository.GenerateStub <IProcessorArchitecture>(); arch.Replay(); }
private void Given_i386_Architecture() { this.arch_386 = mr.StrictMock <IProcessorArchitecture>(); arch_386.Stub(a => a.CreateFrame()).Return(new Frame(PrimitiveType.Pointer32)); arch_386.Stub(a => a.WordWidth).Return(PrimitiveType.Word32); arch_386.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32); var state = mr.Stub <ProcessorState>(); arch_386.Stub(a => a.CreateProcessorState()).Return(state); arch_386.Replay(); }
private void Given_i386_Architecture() { this.arch_386 = mr.StrictMock <IProcessorArchitecture>(); arch_386.Stub(a => a.CreateFrame()).Return(new Frame(PrimitiveType.Ptr32)); arch_386.Stub(a => a.WordWidth).Return(PrimitiveType.Word32); arch_386.Stub(a => a.PointerType).Return(PrimitiveType.Ptr32); var map = new SegmentMap(addrLoad); var state = new Mocks.FakeProcessorState(this.arch_386); arch_386.Stub(a => a.CreateProcessorState()).Return(state); arch_386.Replay(); }
public void SetUp() { sw = new StringWriter(); var tf = new TextFormatter(sw) { Indentation = 0 }; tyfo = new TypeFormatter(tf); tf = new TextFormatter(sw) { Indentation = 0 }; tyreffo = new TypeReferenceFormatter(tf); arch = MockRepository.GenerateStub <IProcessorArchitecture>(); arch.Replay(); }
public void Setup() { mr = new MockRepository(); program = new Program(); proc = new Procedure("testProc", new Frame(PrimitiveType.Word32)); block = proc.AddBlock("l00100000"); trace = new RtlTrace(0x00100000); r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32)); r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32)); r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32)); grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte); scanner = mr.StrictMock<IScanner>(); arch = mr.DynamicMock<IProcessorArchitecture>(); arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32); program.Architecture = arch; arch.Replay(); program.Platform = new DefaultPlatform(null, arch); arch.BackToRecord(); }
public void Setup() { mr = new MockRepository(); program = new Program(); proc = new Procedure("testProc", new Frame(PrimitiveType.Word32)); block = proc.AddBlock("l00100000"); trace = new RtlTrace(0x00100000); r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32)); r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32)); r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32)); grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte); scanner = mr.StrictMock <IScanner>(); arch = mr.DynamicMock <IProcessorArchitecture>(); arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32); program.Architecture = arch; arch.Replay(); program.Platform = new DefaultPlatform(null, arch); arch.BackToRecord(); }
private void Given_32bit_Program(int size = 32) { this.arch = mr.Stub <IProcessorArchitecture>(); this.arch.Stub(a => a.FramePointerType).Return(PrimitiveType.Ptr32); this.arch.Stub(a => a.InstructionBitSize).Return(8); this.platform = mr.Stub <IPlatform>(); this.program = new Program( new SegmentMap( Address.Ptr32(0x00010000), new ImageSegment( ".text", new MemoryArea( Address.Ptr32(0x00010000), Enumerable.Range(0, size) .Select(i => (byte)i) .ToArray()), AccessMode.ReadWrite)), arch, platform); arch.Stub(a => a.CreateFrame()).Do( new Func <Frame>( () => new Frame(PrimitiveType.Ptr32))); arch.Stub(a => a.CreateImageReader(null, null)).IgnoreArguments() .Do(new Func <MemoryArea, Address, EndianImageReader>( (m, a) => new LeImageReader(m, a))); arch.Stub(a => a.CreateDisassembler(null)).IgnoreArguments() .Return(new[] { Operation.Add, Operation.Mul, Operation.Add, Operation.Ret }.Select((m, i) => new FakeInstruction(m) { Address = Address.Ptr32(0x00010010 + 2 * (uint)i), Length = 2, })); arch.Replay(); }
public void Setup() { mr = new MockRepository(); arch = mr.Stub<IProcessorArchitecture>(); arch.Stub(a => a.CreateImageReader(null, 0u)).IgnoreArguments().Do(new Func<LoadedImage, ulong, ImageReader>((i, o) => i.CreateLeReader(o))); arch.Replay(); globalStruct = new StructureType { }; globals_t = new TypeVariable("globals_t", 1) { DataType = globalStruct }; globals = new Identifier("globals", PrimitiveType.Pointer32, null); eqLink = new EquivalenceClass(new TypeVariable(2)); StructureType str = new StructureType { Fields = { { 0, new Pointer(eqLink, 4)}, { 4, PrimitiveType.Int32 } } }; eqLink.DataType = str; }
private void Given_i386_Architecture() { this.arch_386 = mr.StrictMock<IProcessorArchitecture>(); arch_386.Stub(a => a.CreateFrame()).Return(new Frame(PrimitiveType.Pointer32)); arch_386.Stub(a => a.WordWidth).Return(PrimitiveType.Word32); arch_386.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32); var state = mr.Stub<ProcessorState>(); arch_386.Stub(a => a.CreateProcessorState()).Return(state); arch_386.Replay(); }
public ProcedureTests() { mr = new MockRepository(); arch = mr.Stub <IProcessorArchitecture>(); arch.Replay(); }
private void Given_Architecture() { arch = mr.Stub<IProcessorArchitecture>(); var dasm = mr.Stub<IEnumerable<MachineInstruction>>(); var e = mr.Stub<IEnumerator<MachineInstruction>>(); arch.Stub(a => a.InstructionBitSize).Return(8); arch.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32); arch.Stub(a => a.CreateRegisterBitset()).Return(new BitSet(32)); arch.Stub(a => a.CreateImageReader(null, null)) .IgnoreArguments() .Do(new Func<LoadedImage, Address, ImageReader>((i, a) => new LeImageReader(i, a))); arch.Stub(a => a.CreateDisassembler( Arg<ImageReader>.Is.NotNull)).Return(dasm); Address dummy; arch.Stub(a => a.TryParseAddress(null, out dummy)).IgnoreArguments().WhenCalled(m => { Address addr; bool ret = Address.TryParse32((string)m.Arguments[0], out addr); m.Arguments[1] = addr; m.ReturnValue = ret; }).Return(false); dasm.Stub(d => d.GetEnumerator()).Return(e); arch.Replay(); dasm.Replay(); e.Replay(); }
private void Given_32bit_Program() { this.arch = mr.Stub<IProcessorArchitecture>(); this.arch.Stub(a => a.FramePointerType).Return(PrimitiveType.Pointer32); this.platform = mr.Stub<IPlatform>(); this.program = new Program( new SegmentMap( Address.Ptr32(0x00010000), new ImageSegment( ".text", new MemoryArea( Address.Ptr32(0x00010000), Enumerable.Range(0, 32) .Select(i => (byte)i) .ToArray()), AccessMode.ReadWrite)), arch, platform); arch.Stub(a => a.CreateFrame()).Do( new Func<Frame>( () => new Frame(PrimitiveType.Pointer32))); arch.Stub(a => a.CreateImageReader(null, null)).IgnoreArguments() .Do(new Func<MemoryArea, Address, ImageReader>( (m, a) => new LeImageReader(m, a))); arch.Stub(a => a.CreateDisassembler(null)).IgnoreArguments() .Return(new[] { Operation.Add, Operation.Mul, Operation.Add, Operation.Ret }.Select((m, i) => new FakeInstruction(m) { Address = Address.Ptr32(0x00010010 + 2 * (uint)i) })); arch.Replay(); }