public void Setup() { factory = new TypeFactory(); store = new TypeStore(); eqb = new EquivalenceClassBuilder(factory, store); var platform = new DefaultPlatform(null, new FakeArchitecture()); dtb = new DataTypeBuilder(factory, store, platform); }
public void Setup() { this.m = new ExpressionEmitter(); this.store = new TypeStore(); this.factory = new TypeFactory(); var arch = new FakeArchitecture(); var platform = new DefaultPlatform(null, arch); this.exa = new ExpressionTypeAscender(platform, store, factory); }
private void Build(Procedure proc, IProcessorArchitecture arch) { var platform = new DefaultPlatform(null, arch); this.proc = proc; Aliases alias = new Aliases(proc, arch); alias.Transform(); var gr = proc.CreateBlockDominatorGraph(); SsaTransform sst = new SsaTransform(new ProgramDataFlow(), proc, gr); SsaState ssa = sst.SsaState; this.ssaIds = ssa.Identifiers; ConditionCodeEliminator cce = new ConditionCodeEliminator(ssa.Identifiers, platform); cce.Transform(); DeadCode.Eliminate(proc, ssa); ValuePropagator vp = new ValuePropagator(ssa.Identifiers, proc); vp.Transform(); Coalescer coa = new Coalescer(proc, ssa); coa.Transform(); DeadCode.Eliminate(proc, ssa); proc.Dump(true, false); //$DEBUG }
public void EIL_LoadCellLv2() { var opEl = mr.Stub<OperatingEnvironment>(); var platform = new DefaultPlatform(services, arch); dcSvc.Stub(d => d.GetEnvironment("elf-cell-lv2")).Return(opEl); opEl.Expect(o => o.Load(null, null)).IgnoreArguments().Return(platform); mr.ReplayAll(); var el = new ElfImageLoader(services, "foo", rawImg); el.CreatePlatform(0x66); // ELFOSABI_CELL_LV2; mr.VerifyAll(); }
private void DecompileRawImage(DecompilerDriver dec, Dictionary<string, object> pArgs) { var arch = config.GetArchitecture((string)pArgs["--arch"]); if (arch == null) throw new ApplicationException(string.Format("Unknown architecture {0}", pArgs["--arch"])); object sEnv; Platform platform; if (pArgs.TryGetValue("--env", out sEnv)) { var opEnv = config.GetEnvironment((string)sEnv); if (opEnv == null) throw new ApplicationException(string.Format("Unknown operating environment {0}", sEnv)); platform = opEnv.Load(services, arch); } else { platform = new DefaultPlatform(services, arch); } Address addrBase; Address addrEntry; if (!arch.TryParseAddress((string)pArgs["--base"], out addrBase)) throw new ApplicationException(string.Format("'{0}' doesn't appear to be a valid address.", pArgs["--base"])); if (pArgs.ContainsKey("--entry")) { if (!arch.TryParseAddress((string)pArgs["--base"], out addrEntry)) throw new ApplicationException(string.Format("'{0}' doesn't appear to be a valid address.", pArgs["--base"])); } else addrEntry = addrBase; var state = CreateInitialState(arch, pArgs); dec.LoadRawImage((string)pArgs["filename"], arch, platform, addrBase); dec.Project.Programs[0].EntryPoints.Add(new EntryPoint(addrEntry, state)); dec.ScanPrograms(); dec.AnalyzeDataFlow(); dec.ReconstructTypes(); dec.StructureProgram(); dec.WriteDecompilerProducts(); }
private void Build(Procedure proc, IProcessorArchitecture arch) { var platform = new DefaultPlatform(null, arch); this.proc = proc; Aliases alias = new Aliases(proc, arch); alias.Transform(); SsaTransform sst = new SsaTransform(new ProgramDataFlow(), proc, proc.CreateBlockDominatorGraph()); ssa = sst.SsaState; ConditionCodeEliminator cce = new ConditionCodeEliminator(ssa.Identifiers, platform); cce.Transform(); ValuePropagator vp = new ValuePropagator(ssa.Identifiers, proc); vp.Transform(); DeadCode.Eliminate(proc, ssa); Coalescer coa = new Coalescer(proc, ssa); coa.Transform(); DeadCode.Eliminate(proc, ssa); sla = new SsaLivenessAnalysis(proc, ssa.Identifiers); sla2 = new SsaLivenessAnalysis2(proc, ssa.Identifiers); sla2.Analyze(); }