Skip to content

Commit 78cb4af

Browse files
committed
Fix uccallback
1 parent d877913 commit 78cb4af

File tree

3 files changed

+44
-44
lines changed

3 files changed

+44
-44
lines changed

bindings/python/unicorn/unicorn_py3/arch/arm64.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ def hook_add(self, htype: int, callback: Callable, user_data: Any = None, begin:
5151
insn = ctypes.c_int(aux1)
5252

5353
def __hook_insn_sys():
54-
@uccallback(HOOK_INSN_SYS_CFUNC)
55-
def __hook_insn_sys_cb(handle: int, reg: int, pcp_reg: Any, key: int) -> int:
54+
@uccallback(self, HOOK_INSN_SYS_CFUNC)
55+
def __hook_insn_sys_cb(uc: Uc, reg: int, pcp_reg: Any, key: int) -> int:
5656
cp_reg = ctypes.cast(pcp_reg, ctypes.POINTER(UcRegCP64)).contents
5757

5858
class CpReg(NamedTuple):
@@ -65,7 +65,7 @@ class CpReg(NamedTuple):
6565

6666
cp_reg = CpReg(cp_reg.crn, cp_reg.crm, cp_reg.op0, cp_reg.op1, cp_reg.op2, cp_reg.val)
6767

68-
return callback(self, reg, cp_reg, user_data)
68+
return callback(uc, reg, cp_reg, user_data)
6969

7070
return __hook_insn_sys_cb
7171

bindings/python/unicorn/unicorn_py3/arch/intel.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -83,30 +83,30 @@ def hook_add(self, htype: int, callback: Callable, user_data: Any = None, begin:
8383
insn = ctypes.c_int(aux1)
8484

8585
def __hook_insn_in():
86-
@uccallback(HOOK_INSN_IN_CFUNC)
87-
def __hook_insn_in_cb(handle: int, port: int, size: int, key: int) -> int:
88-
return callback(self, port, size, user_data)
86+
@uccallback(self, HOOK_INSN_IN_CFUNC)
87+
def __hook_insn_in_cb(uc: Uc, port: int, size: int, key: int) -> int:
88+
return callback(uc, port, size, user_data)
8989

9090
return __hook_insn_in_cb
9191

9292
def __hook_insn_out():
93-
@uccallback(HOOK_INSN_OUT_CFUNC)
94-
def __hook_insn_out_cb(handle: int, port: int, size: int, value: int, key: int):
95-
callback(self, port, size, value, user_data)
93+
@uccallback(self, HOOK_INSN_OUT_CFUNC)
94+
def __hook_insn_out_cb(uc: Uc, port: int, size: int, value: int, key: int):
95+
callback(uc, port, size, value, user_data)
9696

9797
return __hook_insn_out_cb
9898

9999
def __hook_insn_syscall():
100-
@uccallback(HOOK_INSN_SYSCALL_CFUNC)
101-
def __hook_insn_syscall_cb(handle: int, key: int):
102-
callback(self, user_data)
100+
@uccallback(self, HOOK_INSN_SYSCALL_CFUNC)
101+
def __hook_insn_syscall_cb(uc: Uc, key: int):
102+
callback(uc, user_data)
103103

104104
return __hook_insn_syscall_cb
105105

106106
def __hook_insn_cpuid():
107-
@uccallback(HOOK_INSN_CPUID_CFUNC)
108-
def __hook_insn_cpuid_cb(handle: int, key: int) -> int:
109-
return callback(self, user_data)
107+
@uccallback(self, HOOK_INSN_CPUID_CFUNC)
108+
def __hook_insn_cpuid_cb(uc: Uc, key: int) -> int:
109+
return callback(uc, user_data)
110110

111111
return __hook_insn_cpuid_cb
112112

bindings/python/unicorn/unicorn_py3/unicorn.py

+29-29
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ def debug() -> str:
281281
_CFP = TypeVar('_CFP', bound=ctypes._FuncPointer)
282282

283283

284-
def uccallback(functype: Type[_CFP]):
284+
def uccallback(uc: Uc, functype: Type[_CFP]):
285285
"""Unicorn callback decorator.
286286
287287
Wraps a Python function meant to be dispatched by Unicorn as a hook callback.
@@ -294,7 +294,7 @@ def uccallback(functype: Type[_CFP]):
294294
def decorate(func) -> _CFP:
295295

296296
@functools.wraps(func)
297-
def wrapper(uc: Uc, *args, **kwargs):
297+
def wrapper(handle: Uc, *args, **kwargs):
298298
try:
299299
return func(uc, *args, **kwargs)
300300
except Exception as e:
@@ -754,17 +754,17 @@ def mmio_map(self, address: int, size: int,
754754
read_cb: Optional[UC_MMIO_READ_TYPE], user_data_read: Any,
755755
write_cb: Optional[UC_MMIO_WRITE_TYPE], user_data_write: Any) -> None:
756756

757-
@uccallback(MMIO_READ_CFUNC)
758-
def __mmio_map_read_cb(handle: int, offset: int, size: int, key: int) -> int:
757+
@uccallback(self, MMIO_READ_CFUNC)
758+
def __mmio_map_read_cb(uc: Uc, offset: int, size: int, key: int) -> int:
759759
assert read_cb is not None
760760

761-
return read_cb(self, offset, size, user_data_read)
761+
return read_cb(uc, offset, size, user_data_read)
762762

763-
@uccallback(MMIO_WRITE_CFUNC)
764-
def __mmio_map_write_cb(handle: int, offset: int, size: int, value: int, key: int) -> None:
763+
@uccallback(self, MMIO_WRITE_CFUNC)
764+
def __mmio_map_write_cb(uc: Uc, offset: int, size: int, value: int, key: int) -> None:
765765
assert write_cb is not None
766766

767-
write_cb(self, offset, size, value, user_data_write)
767+
write_cb(uc, offset, size, value, user_data_write)
768768

769769
read_cb_fptr = read_cb and __mmio_map_read_cb
770770
write_cb_fptr = write_cb and __mmio_map_write_cb
@@ -885,9 +885,9 @@ def hook_add(self, htype: int, callback: Callable, user_data: Any = None, begin:
885885
"""
886886

887887
def __hook_intr():
888-
@uccallback(HOOK_INTR_CFUNC)
889-
def __hook_intr_cb(handle: int, intno: int, key: int):
890-
callback(self, intno, user_data)
888+
@uccallback(self, HOOK_INTR_CFUNC)
889+
def __hook_intr_cb(uc: Uc, intno: int, key: int):
890+
callback(uc, intno, user_data)
891891

892892
return __hook_intr_cb,
893893

@@ -898,44 +898,44 @@ def __hook_insn():
898898
raise UcError(uc.UC_ERR_ARG)
899899

900900
def __hook_code():
901-
@uccallback(HOOK_CODE_CFUNC)
902-
def __hook_code_cb(handle: int, address: int, size: int, key: int):
903-
callback(self, address, size, user_data)
901+
@uccallback(self, HOOK_CODE_CFUNC)
902+
def __hook_code_cb(uc: Uc, address: int, size: int, key: int):
903+
callback(uc, address, size, user_data)
904904

905905
return __hook_code_cb,
906906

907907
def __hook_invalid_mem():
908-
@uccallback(HOOK_MEM_INVALID_CFUNC)
909-
def __hook_mem_invalid_cb(handle: int, access: int, address: int, size: int, value: int, key: int) -> bool:
910-
return callback(self, access, address, size, value, user_data)
908+
@uccallback(self, HOOK_MEM_INVALID_CFUNC)
909+
def __hook_mem_invalid_cb(uc: Uc, access: int, address: int, size: int, value: int, key: int) -> bool:
910+
return callback(uc, access, address, size, value, user_data)
911911

912912
return __hook_mem_invalid_cb,
913913

914914
def __hook_mem():
915-
@uccallback(HOOK_MEM_ACCESS_CFUNC)
916-
def __hook_mem_access_cb(handle: int, access: int, address: int, size: int, value: int, key: int) -> None:
917-
callback(self, access, address, size, value, user_data)
915+
@uccallback(self, HOOK_MEM_ACCESS_CFUNC)
916+
def __hook_mem_access_cb(uc: Uc, access: int, address: int, size: int, value: int, key: int) -> None:
917+
callback(uc, access, address, size, value, user_data)
918918

919919
return __hook_mem_access_cb,
920920

921921
def __hook_invalid_insn():
922-
@uccallback(HOOK_INSN_INVALID_CFUNC)
923-
def __hook_insn_invalid_cb(handle: int, key: int) -> bool:
924-
return callback(self, user_data)
922+
@uccallback(self, HOOK_INSN_INVALID_CFUNC)
923+
def __hook_insn_invalid_cb(uc: Uc, key: int) -> bool:
924+
return callback(uc, user_data)
925925

926926
return __hook_insn_invalid_cb,
927927

928928
def __hook_edge_gen():
929-
@uccallback(HOOK_EDGE_GEN_CFUNC)
930-
def __hook_edge_gen_cb(handle: int, cur: ctypes._Pointer[uc_tb], prev: ctypes._Pointer[uc_tb], key: int):
931-
callback(self, cur.contents, prev.contents, user_data)
929+
@uccallback(self, HOOK_EDGE_GEN_CFUNC)
930+
def __hook_edge_gen_cb(uc: Uc, cur: ctypes._Pointer[uc_tb], prev: ctypes._Pointer[uc_tb], key: int):
931+
callback(uc, cur.contents, prev.contents, user_data)
932932

933933
return __hook_edge_gen_cb,
934934

935935
def __hook_tcg_opcode():
936-
@uccallback(HOOK_TCG_OPCODE_CFUNC)
937-
def __hook_tcg_op_cb(handle: int, address: int, arg1: int, arg2: int, size: int, key: int):
938-
callback(self, address, arg1, arg2, size, user_data)
936+
@uccallback(self, HOOK_TCG_OPCODE_CFUNC)
937+
def __hook_tcg_op_cb(uc: Uc, address: int, arg1: int, arg2: int, size: int, key: int):
938+
callback(uc, address, arg1, arg2, size, user_data)
939939

940940
opcode = ctypes.c_uint64(aux1)
941941
flags = ctypes.c_uint64(aux2)

0 commit comments

Comments
 (0)