Example #1
0
		protected Program RewriteFile(string relativePath, Address addrBase)
		{
            var sc = new ServiceContainer();
            var config = new FakeDecompilerConfiguration();
            sc.AddService<IConfigurationService>(config);
            sc.AddService<DecompilerHost>(new FakeDecompilerHost());
            sc.AddService<DecompilerEventListener>(new FakeDecompilerEventListener());
            sc.AddService<IFileSystemService>(new FileSystemServiceImpl());
            ILoader ldr = new Loader(sc);
            var program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(relativePath),
                new X86TextAssembler(sc, new IntelArchitecture(ProcessorMode.Real)),
                addrBase);
            program.Platform = new DefaultPlatform(sc, 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),
                sc);
			scan.EnqueueEntryPoint(ep);
			scan.ScanImage();

			var dfa = new DataFlowAnalysis(program, new FakeDecompilerEventListener());
			dfa.AnalyzeProgram();
            return program;
		}
        protected Program RewriteProgramMsdos(string sourceFilename, Address addrBase)
        {
            var cfgSvc = MockRepository.GenerateStub <IConfigurationService>();
            var env    = MockRepository.GenerateStub <OperatingEnvironment>();
            var tlSvc  = MockRepository.GenerateStub <ITypeLibraryLoaderService>();

            cfgSvc.Stub(c => c.GetEnvironment("ms-dos")).Return(env);
            cfgSvc.Stub(c => c.GetSignatureFiles()).Return(new List <SignatureFile>());
            env.Stub(e => e.TypeLibraries).Return(new List <ITypeLibraryElement>());
            env.Stub(e => e.CharacteristicsLibraries).Return(new List <ITypeLibraryElement>());
            sc = new ServiceContainer();
            sc.AddService <IConfigurationService>(cfgSvc);
            sc.AddService <DecompilerHost>(new FakeDecompilerHost());
            sc.AddService <DecompilerEventListener>(new FakeDecompilerEventListener());
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            sc.AddService <ITypeLibraryLoaderService>(tlSvc);
            var ldr  = new Loader(sc);
            var arch = new X86ArchitectureReal("x86-real-16");

            program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFilename),
                new X86TextAssembler(sc, arch)
            {
                Platform = new MsdosPlatform(sc, arch)
            },
                addrBase);
            return(RewriteProgram());
        }
Example #3
0
        protected Program RewriteFile(string relativePath, Address addrBase)
        {
            var sc            = new ServiceContainer();
            var config        = new FakeDecompilerConfiguration();
            var eventListener = new FakeDecompilerEventListener();

            sc.AddService <IConfigurationService>(config);
            sc.AddService <DecompilerHost>(new FakeDecompilerHost());
            sc.AddService <DecompilerEventListener>(eventListener);
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            ILoader ldr     = new Loader(sc);
            var     program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(relativePath),
                new X86TextAssembler(sc, new X86ArchitectureReal()),
                addrBase);

            program.Platform = new DefaultPlatform(sc, program.Architecture);
            var ep      = new EntryPoint(program.ImageMap.BaseAddress, program.Architecture.CreateProcessorState());
            var project = new Project {
                Programs = { program }
            };
            var scan = new Scanner(
                program,
                new ImportResolver(project, program, eventListener),
                sc);

            scan.EnqueueEntryPoint(ep);
            scan.ScanImage();

            var importResolver = new ImportResolver(project, program, eventListener);
            var dfa            = new DataFlowAnalysis(program, importResolver, eventListener);

            dfa.AnalyzeProgram();
            return(program);
        }
Example #4
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 #5
0
		protected Program RewriteFile(string relativePath, Address addrBase)
		{
            sc = new ServiceContainer();
            var config = new FakeDecompilerConfiguration();
            var eventListener = new FakeDecompilerEventListener();
            sc.AddService<IConfigurationService>(config);
            sc.AddService<DecompilerHost>(new FakeDecompilerHost());
            sc.AddService<DecompilerEventListener>(eventListener);
            sc.AddService<IFileSystemService>(new FileSystemServiceImpl());
            ILoader ldr = new Loader(sc);
            var program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(relativePath),
                new X86TextAssembler(sc, new X86ArchitectureReal()),
                addrBase);
            program.Platform = new DefaultPlatform(sc, program.Architecture);
            var ep = new ImageSymbol(program.SegmentMap.BaseAddress);
            var project = new Project { Programs = { program } };
            var scan = new Scanner(
                program,
                new ImportResolver(project, program, eventListener),
                sc);
			scan.EnqueueImageSymbol(ep, true);
			scan.ScanImage();

            var importResolver = new ImportResolver(project, program, eventListener);
            var dfa = new DataFlowAnalysis(program, importResolver, eventListener);
			dfa.AnalyzeProgram();
            return program;
		}
Example #6
0
        protected Program RewriteProgramMsdos(string sourceFilename, Address addrBase)
        {
            var cfgSvc = new Mock <IConfigurationService>();
            var env    = new Mock <PlatformDefinition>();
            var tlSvc  = new Mock <ITypeLibraryLoaderService>();

            cfgSvc.Setup(c => c.GetEnvironment("ms-dos")).Returns(env.Object);
            cfgSvc.Setup(c => c.GetSignatureFiles()).Returns(new List <SignatureFileDefinition>());
            env.Setup(e => e.TypeLibraries).Returns(new List <TypeLibraryDefinition>());
            env.Setup(e => e.CharacteristicsLibraries).Returns(new List <TypeLibraryDefinition>());
            sc = new ServiceContainer();
            sc.AddService <IConfigurationService>(cfgSvc.Object);
            sc.AddService <IDecompiledFileService>(new FakeDecompiledFileService());
            sc.AddService <DecompilerEventListener>(new FakeDecompilerEventListener());
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            sc.AddService <ITypeLibraryLoaderService>(tlSvc.Object);
            var ldr  = new Loader(sc);
            var arch = new X86ArchitectureReal(sc, "x86-real-16", new Dictionary <string, object>());

            program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFilename),
                new X86TextAssembler(arch),
                new MsdosPlatform(sc, arch),
                addrBase);
            return(RewriteProgram());
        }
Example #7
0
 protected Program RewriteProgram32(string sourceFilename, Address addrBase)
 {
     var sc = new ServiceContainer();
     sc.AddService<IConfigurationService>(new FakeDecompilerConfiguration());
     var ldr = new Loader(sc);
     var arch = new X86ArchitectureFlat32();
     program = ldr.AssembleExecutable(
         FileUnitTester.MapTestPath(sourceFilename),
         new X86TextAssembler(arch) { Platform = new DefaultPlatform(null, arch) },
         addrBase);
     return RewriteProgram();
 }
Example #8
0
        protected Program RewriteProgramMsdos(string sourceFilename, Address addrBase)
        {
            sc = new ServiceContainer();
            sc.AddService<IConfigurationService>(new FakeDecompilerConfiguration());
            sc.AddService<DecompilerHost>(new FakeDecompilerHost());
            sc.AddService<DecompilerEventListener>(new FakeDecompilerEventListener());
            var ldr = new Loader(sc);
            var arch = new X86ArchitectureReal();

            program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFilename),
                new X86TextAssembler(arch) { Platform = new MsdosPlatform(null, arch) },
                addrBase);
            return RewriteProgram();
        }
Example #9
0
        protected Program RewriteProgram32(string sourceFilename, Address addrBase)
        {
            sc = new ServiceContainer();
            sc.AddService <IConfigurationService>(new FakeDecompilerConfiguration());
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            sc.AddService <DecompilerEventListener>(new FakeDecompilerEventListener());
            var ldr  = new Loader(sc);
            var arch = new X86ArchitectureFlat32(sc, "x86-protected-32", new Dictionary <string, object>());

            program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFilename),
                new X86TextAssembler(arch),
                new DefaultPlatform(sc, arch),
                addrBase);
            return(RewriteProgram());
        }
		private Program AssembleFile(string sourceFile, Address addr)
		{
            var ldr = new Loader(new ServiceContainer());
            var arch = new X86ArchitectureReal();
            Program program = ldr.AssembleExecutable(
                 FileUnitTester.MapTestPath(sourceFile),
                 new X86TextAssembler(sc, arch),
                addr);
            var project = new Project { Programs = { program } };
			var scan = new Scanner(program, new Dictionary<Address, ProcedureSignature>(), new ImportResolver(project), null);
			foreach (EntryPoint ep in program.EntryPoints)
			{
				scan.EnqueueEntryPoint(ep);
			}
			scan.ScanImage();
			return program;
		}
Example #11
0
        protected Program RewriteProgram32(string sourceFilename, Address addrBase)
        {
            var sc = new ServiceContainer();

            sc.AddService <IConfigurationService>(new FakeDecompilerConfiguration());
            var ldr  = new Loader(sc);
            var arch = new X86ArchitectureFlat32();

            program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFilename),
                new X86TextAssembler(arch)
            {
                Platform = new DefaultPlatform(null, arch)
            },
                addrBase);
            return(RewriteProgram());
        }
		private Program AssembleFile(string sourceFile, Address addr)
		{
            var ldr = new Loader(new ServiceContainer());
            var arch = new X86ArchitectureReal();
            Program program = ldr.AssembleExecutable(
                 FileUnitTester.MapTestPath(sourceFile),
                 new X86TextAssembler(sc, arch),
                addr);
            var project = new Project { Programs = { program } };
			var scan = new Scanner(
                program, 
                new ImportResolver(project, program, null), null);
			foreach (ImageSymbol ep in program.EntryPoints.Values)
			{
				scan.EnqueueImageSymbol(ep, true);
			}
			scan.ScanImage();
			return program;
		}
Example #13
0
        private Program AssembleFile(string sourceFile, Address addr)
        {
            var     ldr     = new Loader(new ServiceContainer());
            var     arch    = new X86ArchitectureReal();
            Program program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFile),
                new X86TextAssembler(arch),
                addr);
            var project = new Project {
                Programs = { program }
            };
            var scan = new Scanner(program, new Dictionary <Address, ProcedureSignature>(), new ImportResolver(project), null);

            foreach (EntryPoint ep in program.EntryPoints)
            {
                scan.EnqueueEntryPoint(ep);
            }
            scan.ScanImage();
            return(program);
        }
Example #14
0
        protected Program RewriteFile(
            string relativePath,
            Address addrBase,
            Func <IServiceProvider, IProcessorArchitecture, IPlatform> mkPlatform)
        {
            sc = new ServiceContainer();
            var config        = new FakeDecompilerConfiguration();
            var eventListener = new FakeDecompilerEventListener();

            sc.AddService <IConfigurationService>(config);
            sc.AddService <IDecompiledFileService>(new FakeDecompiledFileService());
            sc.AddService <DecompilerEventListener>(eventListener);
            sc.AddService <IFileSystemService>(new FileSystemServiceImpl());
            var     arch    = new X86ArchitectureReal(sc, "x86-real-16");
            ILoader ldr     = new Loader(sc);
            var     program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(relativePath),
                new X86TextAssembler(arch),
                null,
                addrBase);

            program.Platform = mkPlatform(sc, program.Architecture);

            var ep      = ImageSymbol.Procedure(arch, program.SegmentMap.BaseAddress);
            var project = new Project {
                Programs = { program }
            };
            var scan = new Scanner(
                program,
                new DynamicLinker(project, program, eventListener),
                sc);

            scan.EnqueueImageSymbol(ep, true);
            scan.ScanImage();

            var dynamicLinker = new DynamicLinker(project, program, eventListener);
            var dfa           = new DataFlowAnalysis(program, dynamicLinker, eventListener);

            dfa.AnalyzeProgram();
            return(program);
        }
        private Program AssembleFile(string sourceFile, Address addr)
        {
            var     ldr     = new Loader(new ServiceContainer());
            var     arch    = new X86ArchitectureReal("x86-real-16");
            Program program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFile),
                new X86TextAssembler(sc, arch),
                addr);
            var project = new Project {
                Programs = { program }
            };
            var scan = new Scanner(
                program,
                new ImportResolver(project, program, null), null);

            foreach (ImageSymbol ep in program.EntryPoints.Values)
            {
                scan.EnqueueImageSymbol(ep, true);
            }
            scan.ScanImage();
            return(program);
        }
Example #16
0
        private Program AssembleFile(string sourceFile, Address addr)
        {
            var     ldr     = new Loader(sc);
            var     arch    = new X86ArchitectureReal(sc, "x86-real-16", new Dictionary <string, object>());
            Program program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFile),
                new X86TextAssembler(arch),
                new DefaultPlatform(sc, arch),
                addr);
            var project = new Project {
                Programs = { program }
            };
            var scan = new Scanner(
                program,
                new DynamicLinker(project, program, null), null);

            foreach (ImageSymbol ep in program.EntryPoints.Values)
            {
                scan.EnqueueImageSymbol(ep, true);
            }
            scan.ScanImage();
            return(program);
        }
Example #17
0
        protected Program RewriteFile(
            string relativePath,
            Address addrBase,
            Func <IServiceProvider, IProcessorArchitecture, IPlatform> mkPlatform)
        {
            var sc = new ServiceContainer();

            PopulateServiceContainer(sc);
            var     arch    = new X86ArchitectureReal(sc, "x86-real-16", new Dictionary <string, object>());
            ILoader ldr     = new Loader(sc);
            var     program = ldr.AssembleExecutable(
                ImageLocation.FromUri(FileUnitTester.MapTestPath(relativePath)),
                new X86TextAssembler(arch),
                null,
                addrBase);

            program.Platform = mkPlatform(sc, program.Architecture);

            var ep      = ImageSymbol.Procedure(arch, program.SegmentMap.BaseAddress);
            var project = new Project {
                Programs = { program }
            };
            var scan = new Scanner(
                program,
                project.LoadedMetadata,
                new DynamicLinker(project, program, eventListener),
                sc);

            scan.EnqueueImageSymbol(ep, true);
            scan.ScanImage();

            var dynamicLinker = new DynamicLinker(project, program, eventListener);
            var dfa           = new DataFlowAnalysis(program, dynamicLinker, sc);

            dfa.AnalyzeProgram();
            return(program);
        }
Example #18
0
        protected Program RewriteProgramMsdos(string sourceFilename, Address addrBase)
		{
            var cfgSvc = MockRepository.GenerateStub<IConfigurationService>();
            var env = MockRepository.GenerateStub<OperatingEnvironment>();
            var tlSvc = MockRepository.GenerateStub<ITypeLibraryLoaderService>();
            cfgSvc.Stub(c => c.GetEnvironment("ms-dos")).Return(env);
            cfgSvc.Stub(c => c.GetSignatureFiles()).Return(new List<SignatureFile>());
            env.Stub(e => e.TypeLibraries).Return(new List<ITypeLibraryElement>());
            env.Stub(e => e.CharacteristicsLibraries).Return(new List<ITypeLibraryElement>());
            sc = new ServiceContainer();
            sc.AddService<IConfigurationService>(cfgSvc);
            sc.AddService<DecompilerHost>(new FakeDecompilerHost());
            sc.AddService<DecompilerEventListener>(new FakeDecompilerEventListener());
            sc.AddService<IFileSystemService>(new FileSystemServiceImpl());
            sc.AddService<ITypeLibraryLoaderService>(tlSvc);
            var ldr = new Loader(sc);
            var arch = new X86ArchitectureReal();

            program = ldr.AssembleExecutable(
                FileUnitTester.MapTestPath(sourceFilename),
                new X86TextAssembler(sc, arch) { Platform = new MsdosPlatform(sc, arch) },
                addrBase);
            return RewriteProgram();
		}