in functions/functraceplus.py [0:0]
def hit_general_hook_func(self, bptea):
if bptea in self.break_points:
_module_name, _func_name = self.break_points[bptea].split('!')
general_hook_func_ret_addr = self.get_func_args(0)
args_number = self.get_args_number(bptea)
if args_number != None:
_debug_info = f"hook function exec: {hex(general_hook_func_ret_addr)} => {self.break_points[bptea]}("
if _module_name in functions and _func_name in functions[_module_name].total_func:
_debug_info += functions[_module_name].total_func[_func_name]()
else:
for i in range(1, args_number + 1):
_debug_info += f"{hex(self.get_func_args(i))},"
_debug_info = _debug_info[:-1] + ")"
self.break_points_ret_addr[general_hook_func_ret_addr] = \
{
"module_name":_module_name,
"func_name":_func_name,
"debug_info":_debug_info
}
idc.add_bpt(general_hook_func_ret_addr)
return True
if bptea in self.break_points_ret_addr:
_module_name = self.break_points_ret_addr[bptea]["module_name"]
_func_name = self.break_points_ret_addr[bptea]["func_name"]
_debug_info = self.break_points_ret_addr[bptea]["debug_info"]
if _debug_info != None:
if _module_name in functions and _func_name in functions[_module_name].total_func:
_debug_info += functions[_module_name].total_func[_func_name](True)
else:
_debug_info += f"={hex(idc.get_reg_value('AX'))}"
logging.debug(_debug_info)
idc.del_bpt(bptea)
self.break_points_ret_addr.pop(bptea)
return True
return False