def test_state():
    s = SimState(arch='AMD64')
    s.registers.store('sp', 0x7ffffffffff0000)
    nose.tools.assert_equals(s.se.eval(s.registers.load('sp')), 0x7ffffffffff0000)

    s.stack_push(s.se.BVV("ABCDEFGH"))
    nose.tools.assert_equals(s.se.eval(s.registers.load('sp')), 0x7fffffffffefff8)
    s.stack_push(s.se.BVV("IJKLMNOP"))
    nose.tools.assert_equals(s.se.eval(s.registers.load('sp')), 0x7fffffffffefff0)

    a = s.stack_pop()
    nose.tools.assert_equals(s.se.eval(s.registers.load('sp')), 0x7fffffffffefff8)
    nose.tools.assert_equals(s.se.eval(a, cast_to=str), "IJKLMNOP")

    b = s.stack_pop()
    nose.tools.assert_equals(s.se.eval(s.registers.load('sp')), 0x7ffffffffff0000)
    nose.tools.assert_equals(s.se.eval(b, cast_to=str), "ABCDEFGH")
示例#2
0
    def test_state(self):
        s = SimState(arch="AMD64")
        s.registers.store("sp", 0x7FFFFFFFFFF0000)
        assert s.solver.eval(s.registers.load("sp")) == 0x7FFFFFFFFFF0000

        s.stack_push(s.solver.BVV(b"ABCDEFGH"))
        assert s.solver.eval(s.registers.load("sp")) == 0x7FFFFFFFFFEFFF8
        s.stack_push(s.solver.BVV(b"IJKLMNOP"))
        assert s.solver.eval(s.registers.load("sp")) == 0x7FFFFFFFFFEFFF0

        a = s.stack_pop()
        assert s.solver.eval(s.registers.load("sp")) == 0x7FFFFFFFFFEFFF8
        assert s.solver.eval(a, cast_to=bytes) == b"IJKLMNOP"

        b = s.stack_pop()
        assert s.solver.eval(s.registers.load("sp")) == 0x7FFFFFFFFFF0000
        assert s.solver.eval(b, cast_to=bytes) == b"ABCDEFGH"