def hook_funcs_action()

in functions/functraceplus.py [0:0]


    def hook_funcs_action(self):
        def hook(module_name, hook_func):
            if module_name not in self.module_funcs: #
                return
            for idx, func in enumerate(self.module_funcs[module_name]):
                if hook_func["name"] == func["name"]:
                    target_func_addr = self.get_ptr_from_addr(func["ea"])
                    module_func_s = "%s!%s" % (module_name, hook_func["name"])
                    self.module_funcs[module_name][idx]["va"] = target_func_addr
                    self.break_points[target_func_addr] = module_func_s
                    logging.debug("hook:%s!%s => %s" % (module_name, hook_func["name"], hex(target_func_addr)))
                    idc.add_bpt(target_func_addr)
        
        for module_name in self.to_hook_func:
            hook_funcs = self.to_hook_func[module_name]
            for hook_func in hook_funcs:
                hook(module_name, hook_func)
        
        if "kernel32!GetProcAddress" not in self.break_points:
            #self.getproc_func_addr = self.get_ptr_from_addr(idc.get_name_ea_simple("GetProcAddress"))
            for func in self.module_funcs["kernel32"]:
                if func["name"] == "GetProcAddress":
                    self.getproc_func_ea = func["ea"]
                    break
            self.getproc_func_addr = self.get_ptr_from_addr(self.getproc_func_ea)
            # self.break_points[self.getproc_func_addr] = "kernel32!GetProcAddress"
            logging.debug(f"hook:kernel32!GetProcAddress => {hex(self.getproc_func_addr)}")
            idc.add_bpt(self.getproc_func_addr)