public Backwalker(IBackWalkHost <TBlock, TInstr> host, RtlTransfer xfer, ExpressionSimplifier eval) { this.host = host; this.eval = eval; var target = xfer.Target; if (xfer.Target is MkSequence seq && seq.Expressions.Length == 2) { target = seq.Expressions[1]; } if (target is MemoryAccess mem) { Index = DetermineIndexRegister(mem); } else { Index = RegisterOf(target as Identifier); } Operations = new List <BackwalkOperation>(); JumpSize = target.DataType.Size; }
public Backwalker(IBackWalkHost host, RtlTransfer xfer, ExpressionSimplifier eval) { this.host = host; this.eval = eval; var target = xfer.Target; var seq = xfer.Target as MkSequence; if (seq != null) { target = seq.Tail; } var mem = target as MemoryAccess; if (mem == null) { Index = RegisterOf(target as Identifier); } else { Index = DetermineIndexRegister(mem); } Operations = new List<BackwalkOperation>(); }
public Backwalker(IBackWalkHost host, RtlTransfer xfer, ExpressionSimplifier eval) { this.host = host; this.eval = eval; var target = xfer.Target; var seq = xfer.Target as MkSequence; if (seq != null) { target = seq.Tail; } var mem = target as MemoryAccess; if (mem == null) { Index = RegisterOf(target as Identifier); } else { Index = DetermineIndexRegister(mem); } Operations = new List <BackwalkOperation>(); JumpSize = target.DataType.Size; }
public void Setup() { arch = new FakeArchitecture(); m = new ProcedureBuilder(); state = arch.CreateProcessorState(); expSimp = new ExpressionSimplifier(arch.CreateProcessorState()); host = new BackwalkerHost(arch); }
public void Setup() { arch = new X86ArchitectureFlat32(); m = new ProcedureBuilder(); state = arch.CreateProcessorState(); expSimp = new ExpressionSimplifier(arch.CreateProcessorState()); SCZO = m.Frame.EnsureFlagGroup(Registers.eflags, (uint)(FlagM.SF | FlagM.CF | FlagM.ZF | FlagM.OF), "SCZO", PrimitiveType.Byte); host = new BackwalkerHost(arch); }
public void Setup() { arch = new IntelArchitecture(ProcessorMode.Protected32); m = new ProcedureBuilder(); state = arch.CreateProcessorState(); expSimp = new ExpressionSimplifier(arch.CreateProcessorState()); SCZO = m.Frame.EnsureFlagGroup((uint)(FlagM.SF | FlagM.CF | FlagM.ZF | FlagM.OF), "SCZO", PrimitiveType.Byte); host = new BackwalkerHost(); }