MCPcopy Create free account
hub / github.com/HexHive/NASS / do_invoke

Method do_invoke

tools/gef.py:8042–8071  ·  view source on GitHub ↗
(self, _: List[str], **kwargs: Any)

Source from the content-addressed store, hash-verified

8040 @only_if_gdb_running
8041 @parse_arguments({"location": "", "values": ["", ]}, {})
8042 def do_invoke(self, _: List[str], **kwargs: Any) -> None:
8043 args : argparse.Namespace = kwargs["arguments"]
8044 if not self.format or self.format not in self.SUPPORTED_SIZES:
8045 self.usage()
8046 return
8047
8048 if not args.location or not args.values:
8049 self.usage()
8050 return
8051
8052 addr = align_address(parse_address(args.location))
8053 size, fcode = self.SUPPORTED_SIZES[self.format]
8054 values = args.values
8055
8056 if size == 1:
8057 if values[0].startswith("$_gef"):
8058 var_name = values[0]
8059 try:
8060 values = str(gdb.parse_and_eval(var_name)).lstrip("{").rstrip("}").replace(",","").split(" ")
8061 except:
8062 gef_print(f"Bad variable specified, check value with command: p {var_name}")
8063 return
8064
8065 d = str(gef.arch.endianness)
8066 for value in values:
8067 value = parse_address(value) & ((1 << size * 8) - 1)
8068 vstr = struct.pack(d + fcode, value)
8069 gef.memory.write(addr, vstr, length=size)
8070 addr += size
8071 return
8072
8073
8074@register

Callers

nothing calls this directly

Calls 5

align_addressFunction · 0.85
parse_addressFunction · 0.85
gef_printFunction · 0.85
usageMethod · 0.80
writeMethod · 0.45

Tested by

no test coverage detected