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)