Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 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>();
 }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
 public void Setup()
 {
     arch = new FakeArchitecture();
     m = new ProcedureBuilder();
     state = arch.CreateProcessorState();
     expSimp = new ExpressionSimplifier(arch.CreateProcessorState());
     host = new BackwalkerHost(arch);
 }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
 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();
 }