From 94012558fb2b7985e03cb8a6943ce5bdccfd765e Mon Sep 17 00:00:00 2001 From: Tim Blazytko Date: Wed, 28 Oct 2015 05:26:09 +0100 Subject: [PATCH] python bindings: added mem_protect --- bindings/python/unicorn/unicorn.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bindings/python/unicorn/unicorn.py b/bindings/python/unicorn/unicorn.py index 80dcde37..8255b9dc 100644 --- a/bindings/python/unicorn/unicorn.py +++ b/bindings/python/unicorn/unicorn.py @@ -105,6 +105,7 @@ _setup_prototype(_uc, "uc_emu_stop", ucerr, uc_engine) _setup_prototype(_uc, "uc_hook_del", ucerr, uc_engine, uc_hook_h) _setup_prototype(_uc, "uc_mem_map", ucerr, uc_engine, ctypes.c_uint64, ctypes.c_size_t, ctypes.c_uint32) _setup_prototype(_uc, "uc_mem_unmap", ucerr, uc_engine, ctypes.c_uint64, ctypes.c_size_t) +_setup_prototype(_uc, "uc_mem_protect", ucerr, uc_engine, ctypes.c_uint64, ctypes.c_size_t, ctypes.c_uint32) # uc_hook_add is special due to variable number of arguments _uc.uc_hook_add = getattr(_uc, "uc_hook_add") @@ -247,6 +248,13 @@ class Uc(object): raise UcError(status) + # protect a range of memory + def mem_protect(self, address, size, perms=UC_PROT_ALL): + status = _uc.uc_mem_protect(self._uch, address, size, perms) + if status != UC_ERR_OK: + raise UcError(status) + + def _hookcode_cb(self, handle, address, size, user_data): # call user's callback with self object (cb, data) = self._callbacks[user_data]