1import nose 2import angr 3 4import logging 5l = logging.getLogger("angr_tests") 6 7import os 8test_location = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', 'binaries', 'tests') 9 10def test_nx(): 11 nx_amd64 = angr.Project(os.path.join(test_location, 'x86_64', 'memmove')) 12 es = nx_amd64.factory.entry_state() 13 14 # .text should be PROT_READ|PROT_EXEC 15 nose.tools.assert_equal(es.solver.eval(es.memory.permissions(nx_amd64.entry)), 5) 16 17 # load stack to initialize page 18 es.memory.load(es.regs.sp, 4) 19 20 # stack should be PROT_READ|PROT_WRITE 21 nose.tools.assert_equal(es.solver.eval(es.memory.permissions(es.regs.sp)), 3) 22 23if __name__ == "__main__": 24 test_nx() 25