Exemplo n.º 1
0
 private void btnLoad_Click(object sender, EventArgs e)
 {
     var image = new LoadedImage(Address.Ptr32(0x12312300),new byte[0x1000]);
     var imageMap = image.CreateImageMap();
     var arch = new Reko.Arch.X86.X86ArchitectureFlat32();
     var program = new Core.Program(image, imageMap, arch, new DefaultPlatform(null, arch));
     var project = new Project { Programs = { program } };
     pbs.Load(project);
 }
Exemplo n.º 2
0
        private void Given_X86Program()
        {
            var arch       = new Reko.Arch.X86.X86ArchitectureFlat32(new ServiceContainer(), "x86-protected-32", new Dictionary <string, object>());
            var addrBase   = Address.Ptr32(0x00100000);
            var segmentMap = new SegmentMap(addrBase);

            segmentMap.AddSegment(new ByteMemoryArea(addrBase, new byte[0xFF]), ".text", AccessMode.ReadWrite);
            this.program = new Program(segmentMap, arch, null);
        }
Exemplo n.º 3
0
        private void Given_X86Program()
        {
            var arch       = new Reko.Arch.X86.X86ArchitectureFlat32("x86-protected-32");
            var addrBase   = Address.Ptr32(0x00100000);
            var segmentMap = new SegmentMap(addrBase);

            segmentMap.AddSegment(new MemoryArea(addrBase, new byte[0xFF]), ".text", AccessMode.ReadWrite);
            this.program = new Program(segmentMap, arch, null);
        }
Exemplo n.º 4
0
        private void btnLoad_Click(object sender, EventArgs e)
        {
            var image    = new LoadedImage(Address.Ptr32(0x12312300), new byte[0x1000]);
            var imageMap = image.CreateImageMap();
            var arch     = new Reko.Arch.X86.X86ArchitectureFlat32();
            var program  = new Core.Program(image, imageMap, arch, new DefaultPlatform(null, arch));
            var project  = new Project {
                Programs = { program }
            };

            pbs.Load(project);
        }
Exemplo n.º 5
0
        private Func <long> SelectTest(byte[] buf)
        {
            var         rewriter = chkRewriter.Checked;
            Func <long> test;

            if (rdbRealDasm.Checked)
            {
                //var arch = new Reko.Arch.Arm.Arm32Architecture("arm32");
                var arch = new Reko.Arch.X86.X86ArchitectureFlat32("x86-protected-32");

                if (rewriter)
                {
                    test = () => PerformanceTest_A32Rewriter(arch, buf);
                }
                else
                {
                    test = () => PerformanceTest_A32Dasm(arch, buf);
                }
            }
            else
            {
                DecoderBuilder m;
                if (rdbInterpretedDasm.Checked)
                {
                    m = new Decoders.FormatDecoderBuilder();
                }
                else
                {
                    m = new Decoders.ThreadedDecoderBuilder();
                }
                var root = m.Mask(29, 3,
                                  m.Instr(Opcode.add, "r8,r4,r0"),
                                  m.Instr(Opcode.sub, "r8,r4,r0"),
                                  m.Instr(Opcode.mul, "r8,r4,r0"),
                                  m.Instr(Opcode.div, "r8,r4,r0"),

                                  m.Instr(Opcode.and, "r8,r4,r0"),
                                  m.Instr(Opcode.or, "r8,r4,r0"),
                                  m.Instr(Opcode.not, "r8,r4"),
                                  m.Instr(Opcode.xor, "r8,r4,r0"));

                if (rewriter)
                {
                    test = () => PerformanceTest_SimulatedRewriter(buf, root);
                }
                else
                {
                    test = () => PerformanceTest_Simulated(buf, root);
                }
            }
            return(test);
        }
        public void TrfWideThenNarrow()
        {
            var arch = new Reko.Arch.X86.X86ArchitectureFlat32(new ServiceContainer(), "x86-protected-32", new Dictionary <string, object>());

            Given_Architecture(arch);
            Expect("main", "Preserved: esp", "Trashed: ecx", "");
            builder.Add("main", m =>
            {
                var sp  = m.Frame.EnsureRegister(m.Architecture.StackRegister);
                var ecx = m.Frame.EnsureRegister(arch.GetRegister("ecx"));
                var cl  = m.Frame.EnsureRegister(arch.GetRegister("cl"));
                m.Assign(sp, m.Frame.FramePointer);
                m.Assign(ecx, m.Mem32(m.Word32(0x00123480)));
                m.Assign(cl, m.Mem8(m.Word32(0x00123400)));
                m.Return();
            });
            RunTest();
        }
Exemplo n.º 7
0
        public void TrfDpb()
        {
            var arch = new Reko.Arch.X86.X86ArchitectureFlat32("x86-protected-32");

            Given_Architecture(arch);
            Expect("main", "Preserved: esp", "Trashed: ecx", "");
            builder.Add("main", m =>
            {
                var sp  = m.Frame.EnsureRegister(m.Architecture.StackRegister);
                var ecx = m.Frame.EnsureRegister(arch.GetRegister("ecx"));
                var cl  = m.Frame.EnsureRegister(arch.GetRegister("cl"));
                m.Assign(sp, m.Frame.FramePointer);
                m.Assign(cl, m.Mem8(m.Word32(0x00123400)));
                m.Assign(ecx, m.Seq(m.Slice(ecx, 8, 24), cl));
                m.Return();
            });
            RunTest();
        }