Пример #1
0
        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();
        }
Пример #2
0
        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"
            });
        }
Пример #3
0
        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();
        }
Пример #4
0
        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();
        }
Пример #5
0
 /// <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);
 }