public static void Main(string[] args) { var services = new ServiceContainer(); var listener = new CmdLineListener { Quiet = Console.IsOutputRedirected }; var config = RekoConfigurationService.Load(services); var diagnosticSvc = new CmdLineDiagnosticsService(Console.Out); var fsSvc = new FileSystemServiceImpl(); var dcSvc = new DecompilerService(); services.AddService <IDecompilerService>(dcSvc); services.AddService <DecompilerEventListener>(listener); services.AddService <IConfigurationService>(config); services.AddService <ITypeLibraryLoaderService>(new TypeLibraryLoaderServiceImpl(services)); services.AddService <IDiagnosticsService>(diagnosticSvc); services.AddService <IFileSystemService>(fsSvc); services.AddService <IDecompiledFileService>(new DecompiledFileService(fsSvc)); services.AddService <ITestGenerationService>(new TestGenerationService(services)); var ldr = new Loader(services); var decompiler = new Decompiler(ldr, services); dcSvc.Decompiler = decompiler; var driver = new CmdLineDriver(services, ldr, decompiler, listener); driver.Execute(args); }
private void RunFileTestx86_32(string relativePath, string outputFile) { Program program; var sc = new ServiceContainer(); var fsSvc = new FileSystemServiceImpl(); var el = new FakeDecompilerEventListener(); sc.AddService <IFileSystemService>(fsSvc); sc.AddService <DecompilerEventListener>(el); var arch = new X86ArchitectureFlat32(sc, "x86-protected-32", new Dictionary <string, object>()); var asm = new X86TextAssembler(arch); using (var rdr = new StreamReader(FileUnitTester.MapTestPath(relativePath))) { var platform = new DefaultPlatform(sc, arch); program = asm.Assemble(Address.Ptr32(0x10000000), rdr); program.Platform = platform; } var scanner = new Scanner(program, null, sc); scanner.EnqueueImageSymbol(ImageSymbol.Procedure(arch, program.ImageMap.BaseAddress), true); scanner.ScanImage(); using (var fut = new FileUnitTester(outputFile)) { foreach (var proc in program.Procedures.Values) { proc.Write(false, fut.TextWriter); } fut.AssertFilesEqual(); } }
public void Setup() { mr = new MockRepository(); this.services = mr.Stub <IServiceProvider>(); var tlSvc = new TypeLibraryLoaderServiceImpl(services); var configSvc = mr.StrictMock <IConfigurationService>(); var fsSvc = new FileSystemServiceImpl(); var win32env = new OperatingEnvironmentElement { TypeLibraries = { new TypeLibraryElement { Name = "msvcrt.xml" }, new TypeLibraryElement { Name = "windows32.xml" }, } }; configSvc.Stub(c => c.GetEnvironment("win32")).Return(win32env); configSvc.Stub(c => c.GetInstallationRelativePath(null)).IgnoreArguments() .Do(new Func <string, string>(s => s)); services.Stub(s => s.GetService(typeof(ITypeLibraryLoaderService))).Return(tlSvc); services.Stub(s => s.GetService(typeof(IConfigurationService))).Return(configSvc); services.Stub(s => s.GetService(typeof(DecompilerEventListener))).Return(new FakeDecompilerEventListener()); services.Stub(s => s.GetService(typeof(CancellationTokenSource))).Return(null); services.Stub(s => s.GetService(typeof(IFileSystemService))).Return(new FileSystemServiceImpl()); services.Stub(s => s.GetService(typeof(IDiagnosticsService))).Return(new FakeDiagnosticsService()); services.Replay(); configSvc.Replay(); arch = new X86ArchitectureFlat32(); win32 = new Reko.Environments.Windows.Win32Platform(services, arch); }
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 void symbolSourcesToolStripMenuItem_Click(object sender, EventArgs e) { var sc = new ServiceContainer(); var cfgSvc = new FakeConfigurationService(); var fsSvc = new FileSystemServiceImpl(); var uiSvc = new FakeDecompilerShellUiService(this); sc.AddService <IConfigurationService>(cfgSvc); sc.AddService <IFileSystemService>(fsSvc); sc.AddService <IDecompilerShellUiService>(uiSvc); var dlg = new SymbolSourceDialog(); dlg.Services = sc; dlg.ShowDialog(this); }
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)); }
public void FS_MakeRelative_1() { fs = new FileSystemServiceImpl('/'); Assert.AreEqual("ax", fs.MakeRelativePath("/home/ox", "/home/ax")); }