예제 #1
0
        public async Task Zot()
        {
            var sc    = new ServiceContainer();
            var plSvc = new PluginLoaderService();

            sc.AddService <IPluginLoaderService>(plSvc);
            var fsSvc = new FileSystemServiceImpl();

            sc.AddService <IFileSystemService>(fsSvc);
            var cfgSvc = RekoConfigurationService.Load(sc, @"D:\dev\uxmal\reko\extras\parallel\UnitTests\bin\Debug\net5.0\reko\reko.config");

            sc.AddService <IConfigurationService>(cfgSvc);
            var listener = new NullDecompilerEventListener();

            sc.AddService <DecompilerEventListener>(listener);
            var dechost = new Reko.DecompiledFileService(sc, fsSvc, listener);

            sc.AddService <IDecompiledFileService>(dechost);
            var tlSvc = new TypeLibraryLoaderServiceImpl(sc);

            sc.AddService <ITypeLibraryLoaderService>(tlSvc);
            var loader  = new Reko.Loading.Loader(sc);
            var program = (Program)loader.Load(ImageLocation.FromUri(@"D:\dev\uxmal\reko\users\smx-zoo\RELEASE_MIPS\RELEASE"));
            var project = Project.FromSingleProgram(program);
            var reko    = new Reko.Decompiler(project, sc);

            TryFindSegment(program, ".text", out var seg);
            var scanner = new Scanner(seg.MemoryArea);
            var result  = await scanner.ScanAsync(program.EntryPoints.Values);

            Console.Write(result.B.Count);
        }
        private Reko.Decompiler CreateRekoInstance(CefV8Context context)
        {
            var fsSvc    = new FileSystemServiceImpl();
            var listener = new ListenerService(context, eventListeners);
            var dfSvc    = new DecompiledFileService(fsSvc, listener);

            services.AddService(typeof(IFileSystemService), fsSvc);
            services.AddService(typeof(DecompilerEventListener), listener);
            var configSvc = RekoConfigurationService.Load(services, "reko/reko.config");

            services.AddService(typeof(IConfigurationService), configSvc);
            services.AddService(typeof(IDecompiledFileService), dfSvc);
            services.AddService(typeof(ITypeLibraryLoaderService), new TypeLibraryLoaderServiceImpl(services));
            services.AddService(typeof(IPluginLoaderService), new PluginLoaderService());
            var loader = new Reko.Loading.Loader(services);

            return(new Reko.Decompiler(loader, services));
        }