def function_hook_parameter(oldfunc, parameter_index, parameter_name, parameter_value):
"""
?????????????IP?????????????????????????
????wrapper?????oldfunc????parameter_index??parameter_name?????????parameter_value; ??????????????????
??? ??? = function_hook_parameter(???, ?1????????????, ???????, ?????????)
??? ????socket.create_connection?????????????
create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, source_address=None)
?????3???source_address???value???????
socket.create_connection = function_hook_parameter(socket.create_connection, 3, "source_address", value)
"""
real_func = oldfunc
def newfunc(*args, **kwargs): # args?????list?kwargs?????keyword???dict
newargs = list(args)
if len(args) >= parameter_index: # ???????????????????????????????args?????????????
newargs[parameter_index - 1] = parameter_value # ?3????list????2
else: # ?????????????kwargs? ???????????????????kwargs??
kwargs[parameter_name] = parameter_value
return real_func(*newargs, **kwargs)
return newfunc
评论列表
文章目录