Example #1
0
		protected Program RewriteFile(string relativePath, Address addrBase)
		{
            var services = new ServiceContainer();
            var config = new FakeDecompilerConfiguration();
            services.AddService<IConfigurationService>(config);
            ILoader ldr = new Loader(services);
            var program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(relativePath),
                new X86TextAssembler(new IntelArchitecture(ProcessorMode.Real)),
                addrBase);
            program.Platform = new DefaultPlatform(services, program.Architecture);
            var ep = new EntryPoint(program.Image.BaseAddress, program.Architecture.CreateProcessorState());
            var project = new Project { Programs = { program } };
			var scan = new Scanner(
                program,
                new Dictionary<Address, ProcedureSignature>(),
                new ImportResolver(project),
                new FakeDecompilerEventListener());
			scan.EnqueueEntryPoint(ep);
			scan.ScanImage();

			var dfa = new DataFlowAnalysis(program, new FakeDecompilerEventListener());
			dfa.AnalyzeProgram();
            return program;
		}
Example #2
0
 public void Setup()
 {
     mr = new MockRepository();
     var config = new FakeDecompilerConfiguration();
     var host = new FakeDecompilerHost();
     var sp = new ServiceContainer();
     loader = mr.StrictMock<ILoader>();
     sp.AddService(typeof(DecompilerEventListener), new FakeDecompilerEventListener());
     loader.Replay();
     decompiler = new TestDecompiler(loader, host, sp);
     loader.BackToRecord();
 }
Example #3
0
        protected void RunHexTest(string hexFile, string outputFile)
        {
            var svc = new ServiceContainer();
            var cfg = new FakeDecompilerConfiguration();
            svc.AddService<IConfigurationService>(cfg);
            ILoader ldr = new Loader(svc);
            var imgLoader = new DchexLoader(FileUnitTester.MapTestPath( hexFile), svc, null);
            var img = imgLoader.Load(null);
            var program = new Program(img.Image, img.Image.CreateImageMap(), img.Architecture, img.Platform);
            var project = new Project { Programs = { program } };
            var ep = new EntryPoint(program.Image.BaseAddress, program.Architecture.CreateProcessorState());
            var scan = new Scanner(program, new Dictionary<Address, ProcedureSignature>(), new ImportResolver(project), new FakeDecompilerEventListener());
            scan.EnqueueEntryPoint(ep);
            scan.ScanImage();

            var dfa = new DataFlowAnalysis(program, new FakeDecompilerEventListener());
            dfa.AnalyzeProgram();
            RunTest(program, outputFile);
        }
Example #4
0
 private static void Rewrite(Program prog, Assembler asm, string configFile)
 {
     var fakeDiagnosticsService = new FakeDiagnosticsService();
     var fakeConfigService = new FakeDecompilerConfiguration();
     var sc = new ServiceContainer();
     sc.AddService(typeof(IDiagnosticsService), fakeDiagnosticsService);
     sc.AddService(typeof(IConfigurationService), fakeConfigService);
     var loader = new Loader(sc);
     var project = string.IsNullOrEmpty(configFile)
         ? new Project()
         : new ProjectLoader(loader).LoadProject(FileUnitTester.MapTestPath(configFile));
     var scan = new Scanner(
         prog,
         new Dictionary<Address, ProcedureSignature>(),
         new ImportResolver(project),
         new FakeDecompilerEventListener());
     
     scan.EnqueueEntryPoint(new EntryPoint(asm.StartAddress, prog.Architecture.CreateProcessorState()));
     foreach (var f in project.Programs)
     {
         foreach (var sp in f.UserProcedures.Values)
         {
             scan.EnqueueUserProcedure(sp);
         }
     }
     scan.ScanImage();
 }