@@ -281,7 +281,7 @@ def debug() -> str:
281
281
_CFP = TypeVar ('_CFP' , bound = ctypes ._FuncPointer )
282
282
283
283
284
- def uccallback (functype : Type [_CFP ]):
284
+ def uccallback (uc : Uc , functype : Type [_CFP ]):
285
285
"""Unicorn callback decorator.
286
286
287
287
Wraps a Python function meant to be dispatched by Unicorn as a hook callback.
@@ -294,7 +294,7 @@ def uccallback(functype: Type[_CFP]):
294
294
def decorate (func ) -> _CFP :
295
295
296
296
@functools .wraps (func )
297
- def wrapper (uc : Uc , * args , ** kwargs ):
297
+ def wrapper (handle : Uc , * args , ** kwargs ):
298
298
try :
299
299
return func (uc , * args , ** kwargs )
300
300
except Exception as e :
@@ -754,17 +754,17 @@ def mmio_map(self, address: int, size: int,
754
754
read_cb : Optional [UC_MMIO_READ_TYPE ], user_data_read : Any ,
755
755
write_cb : Optional [UC_MMIO_WRITE_TYPE ], user_data_write : Any ) -> None :
756
756
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 :
759
759
assert read_cb is not None
760
760
761
- return read_cb (self , offset , size , user_data_read )
761
+ return read_cb (uc , offset , size , user_data_read )
762
762
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 :
765
765
assert write_cb is not None
766
766
767
- write_cb (self , offset , size , value , user_data_write )
767
+ write_cb (uc , offset , size , value , user_data_write )
768
768
769
769
read_cb_fptr = read_cb and __mmio_map_read_cb
770
770
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:
885
885
"""
886
886
887
887
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 )
891
891
892
892
return __hook_intr_cb ,
893
893
@@ -898,44 +898,44 @@ def __hook_insn():
898
898
raise UcError (uc .UC_ERR_ARG )
899
899
900
900
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 )
904
904
905
905
return __hook_code_cb ,
906
906
907
907
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 )
911
911
912
912
return __hook_mem_invalid_cb ,
913
913
914
914
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 )
918
918
919
919
return __hook_mem_access_cb ,
920
920
921
921
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 )
925
925
926
926
return __hook_insn_invalid_cb ,
927
927
928
928
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 )
932
932
933
933
return __hook_edge_gen_cb ,
934
934
935
935
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 )
939
939
940
940
opcode = ctypes .c_uint64 (aux1 )
941
941
flags = ctypes .c_uint64 (aux2 )
0 commit comments