def hit_general_hook_func()

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