public void CmdLine_ArchOptions() { var arch = new Mock <IProcessorArchitecture>(); configSvc.Setup(c => c.GetArchitecture("test")).Returns(arch.Object); arch.Setup(a => a.LoadUserOptions( It.Is <Dictionary <string, object> >(d => (string)d["option1"] == "value1" && (string)d["option2"] == "value2"))).Verifiable(); var addr = Address.Ptr32(0x0000); arch.Setup(a => a.TryParseAddress( "0000", out addr)) .Returns(true); var cmdline = new CmdLineDriver(sc, ldr.Object, decompiler.Object, new CmdLineListener()); cmdline.Execute(new[] { "--arch", "test", "--arch-option", "option1=value1", "--arch-option", "option2=value2", "--base", "0000", "foo.bin" }); arch.VerifyAll(); }
public void CmdLine_EntryPoint() { var arch = new Mock <IProcessorArchitecture>(); var map = new SegmentMap(Address.Ptr32(0x010000)); var state = new FakeProcessorState(arch.Object); configSvc.Setup(s => s.GetArchitecture("mmix")).Returns(arch.Object); Address addr = Address.Ptr32(0x010000); arch.Setup(a => a.TryParseAddress( "010000", out addr)) .Returns(true); addr = Address.Ptr32(0x010100); arch.Setup(a => a.TryParseAddress( "010100", out addr)) .Returns(true); arch.Setup(a => a.CreateProcessorState()).Returns(state); decompiler.Setup(d => d.LoadRawImage( It.IsAny <string>(), It.IsAny <LoadDetails>())) .Returns(new Program()); var cmdline = new CmdLineDriver(sc, ldr.Object, decompiler.Object, new CmdLineListener()); cmdline.Execute(new string[] { "--arch", "mmix", "--base", "010000", "--entry", "010100", "foo.exe" }); }
public void CmdLine_EntryPoint() { var arch = mr.Stub <IProcessorArchitecture>(); var state = mr.Stub <ProcessorState>(); configSvc.Stub(s => s.GetArchitecture("mmix")).Return(arch); arch.Stub(a => a.TryParseAddress( Arg <string> .Is.Equal("010000"), out Arg <Address> .Out(Address.Ptr32(0x010000)).Dummy)) .Return(true); arch.Stub(a => a.TryParseAddress( Arg <string> .Is.Equal("010100"), out Arg <Address> .Out(Address.Ptr32(0x010100)).Dummy)) .Return(true); mr.ReplayAll(); arch.Stub(a => a.CreateProcessorState()).Return(state); decompiler.Stub(d => d.LoadRawImage(null, null)) .IgnoreArguments() .Return(new Program()); mr.ReplayAll(); var cmdline = new CmdLineDriver(sc, ldr, decompiler, null); cmdline.Execute(new string[] { "--arch", "mmix", "--base", "010000", "--entry", "010100", "foo.exe" }); mr.VerifyAll(); }
public void CmdLine_ArchOptions() { var arch = mr.Stub <IProcessorArchitecture>(); configSvc.Stub(c => c.GetArchitecture("test")).Return(arch); arch.Expect(a => a.LoadUserOptions( Arg <Dictionary <string, object> > .Matches(d => (string)d["option1"] == "value1" && (string)d["option2"] == "value2"))); arch.Stub(a => a.TryParseAddress( Arg <string> .Is.Equal("0000"), out Arg <Address> .Out(Address.Ptr32(0x0000)).Dummy)) .Return(true); mr.ReplayAll(); var cmdline = new CmdLineDriver(sc, ldr, decompiler, null); cmdline.Execute(new[] { "--arch", "test", "--arch-option", "option1=value1", "--arch-option", "option2=value2", "--base", "0000", "foo.bin" }); mr.VerifyAll(); }
/// <summary> /// Application entry point. /// </summary> /// <param name="args">The application arguments.</param> public static void Main(string[] args) { var program = new Program(); var driver = new CmdLineDriver(program, Console.Error); driver.TryProcess(args); }