Пример #1
0
        private static void Rewrite(Program program, Assembler asm, string configFile)
        {
            var fakeDiagnosticsService = new FakeDiagnosticsService();
            var fakeConfigService      = new FakeDecompilerConfiguration();
            var eventListener          = new FakeDecompilerEventListener();
            var sc = new ServiceContainer();

            sc.AddService(typeof(IDiagnosticsService), fakeDiagnosticsService);
            sc.AddService(typeof(IConfigurationService), fakeConfigService);
            sc.AddService <DecompilerEventListener>(eventListener);
            sc.AddService <DecompilerHost>(new FakeDecompilerHost());
            var loader  = new Loader(sc);
            var project = string.IsNullOrEmpty(configFile)
                ? new Project()
                : new ProjectLoader(sc, loader, eventListener).LoadProject(FileUnitTester.MapTestPath(configFile));
            var scan = new Scanner(
                program,
                new ImportResolver(project, program, eventListener),
                sc);

            scan.EnqueueImageSymbol(new ImageSymbol(asm.StartAddress), true);
            foreach (var f in project.Programs)
            {
                foreach (var sp in f.User.Procedures.Values)
                {
                    scan.EnqueueUserProcedure(sp);
                }
            }
            scan.ScanImage();
        }
Пример #2
0
        private static void Rewrite(Program program, IAssembler asm, Action <Program> postLoad)
        {
            var fakeDiagnosticsService = new FakeDiagnosticsService();
            var fakeConfigService      = new FakeDecompilerConfiguration();
            var eventListener          = new FakeDecompilerEventListener();
            var sc = new ServiceContainer();

            sc.AddService <IDiagnosticsService>(fakeDiagnosticsService);
            sc.AddService <IConfigurationService>(fakeConfigService);
            sc.AddService <DecompilerEventListener>(eventListener);
            //sc.AddService<IDecompiledFileService>(new FakeDecompilerHost());
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            var loader  = new Loader(sc);
            var project = new Project
            {
                Programs = { program }
            };

            postLoad(program);
            var scan = new Scanner(
                program,
                new DynamicLinker(project, program, eventListener),
                sc);

            scan.EnqueueImageSymbol(ImageSymbol.Location(program.Architecture, asm.StartAddress), true);
            foreach (var f in project.Programs)
            {
                foreach (var sp in f.User.Procedures.Values)
                {
                    scan.EnqueueUserProcedure(program.Architecture, sp);
                }
            }
            scan.ScanImage();
        }
Пример #3
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(sc, 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();
        }
Пример #4
0
        private static void Rewrite(Program program, IAssembler asm, string configFile)
        {
            var fakeDiagnosticsService = new FakeDiagnosticsService();
            var fakeConfigService      = new FakeDecompilerConfiguration();
            var eventListener          = new FakeDecompilerEventListener();
            var sc = new ServiceContainer();

            sc.AddService <IDiagnosticsService>(fakeDiagnosticsService);
            sc.AddService <IConfigurationService>(fakeConfigService);
            sc.AddService <DecompilerEventListener>(eventListener);
            sc.AddService <IDecompiledFileService>(new FakeDecompiledFileService());
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            var loader  = new Loader(sc);
            var project = string.IsNullOrEmpty(configFile)
                ? new Project()
                : new ProjectLoader(sc, loader, eventListener).LoadProject(FileUnitTester.MapTestPath(configFile));
            var scan = new Scanner(
                program,
                new DynamicLinker(project, program, eventListener),
                sc);

            scan.EnqueueImageSymbol(ImageSymbol.Procedure(program.Architecture, asm.StartAddress), true);
            foreach (var f in project.Programs)
            {
                foreach (var sp in f.User.Procedures.Values)
                {
                    scan.EnqueueUserProcedure(program.Architecture, sp);
                }
            }
            scan.ScanImage();
        }