Python源码示例:gdb.string_to_argv()
示例1
def invoke(self,args,from_tty):
self.dont_repeat()
# Don't eval expression in PwngdbCmd commands
#expressions = gdb.string_to_argv(args)
#arg = self.eval_argv(expressions)
arg = args.split()
if len(arg) > 0 :
cmd = arg[0]
if cmd in pwncmd.commands :
func = getattr(pwncmd,cmd)
func(*arg[1:])
else :
print("Unknown command")
else :
print("Unknown command")
return
示例2
def invoke(self,args,from_tty):
global angelheap_cmd
self.dont_repeat()
expressions = gdb.string_to_argv(args)
arg = self.eval_argv(expressions)
if len(arg) > 0 :
cmd = arg[0]
if cmd in angelheap_cmd.commands :
func = getattr(angelheap_cmd,cmd)
func(*arg[1:])
else :
print("Unknown command")
else :
print("Unknow command")
return
示例3
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
result = []
if len(argv) != 1:
raise gdb.GdbError('vmmap -f takes 1 arg')
try:
mapping = Strongdb.run_cmd('info proc mapping')
mapping = mapping[mapping.find('0x'):].split('\n')
for item in mapping:
item_list = item.split(None)
if len(item_list) == 5 and item_list[4].find(argv[0]) != -1:
result.append('\t\t'.join(item_list))
Strongdb.display('\n'.join(result) + '\n\n')
except Exception, e:
print e
return
示例4
def invoke(self, arg, from_tty):
global _ctx
self.dont_repeat()
argv = gdb.string_to_argv(_prepare_args(arg))
if len(argv) == 0:
raise AngrGDBError("angrdbg find: at least a parameter is needed")
_ctx.find = []
for a in argv:
addr = _to_int(a)
if addr is None:
raise AngrGDBError(
"angrdbg find: failed to convert '%s' to int" %
a)
_ctx.find.append(addr)
示例5
def invoke(self, arg, from_tty):
global _ctx
self.dont_repeat()
argv = gdb.string_to_argv(_prepare_args(arg))
if len(argv) == 0:
raise AngrGDBError("angrdbg avoid: at least a parameter is needed")
_ctx.avoid = []
for a in argv:
addr = _to_int(a)
if addr is None:
raise AngrGDBError(
"angrdbg avoid: failed to convert '%s' to int" %
a)
_ctx.avoid.append(addr)
示例6
def invoke(self, arg, from_tty):
argv = gdb.string_to_argv(arg)
CastTypeStr = None
if ( len(argv) > 0):
symbolArg = argv[0]
if ( len(argv) > 1 ):
CastTypeStr = argv[1]
listVal = ListInspector(symbolArg)
elems = listVal.GetElements( CastTypeStr )
for elem in elems :
print("Elem: %s" % str(elem))
示例7
def invoke(self, args, isatty):
if not self.repeat:
self.dont_repeat()
self.parser.set_defaults(isatty=isatty)
# Not sure we trust gdb to split the line as we want it, but
# until there are problems we'll let him give it a shot.
args = gdb.string_to_argv(args)
try:
args = self.parser.parse_args(args)
self.run(args)
except KeyboardInterrupt as e:
pass
except SystemExit as e:
if isinstance(e.code, int):
raise gdb.GdbError("command exited with status %s." % e.code)
elif e.code:
raise gdb.GdbError(str(e))
except gdb.GdbError:
# This type of error can be used to report failure to gdb.
# We let is pass through so that applications can print errors.
# Still, the prefered way for an extension to do this
# would be to simply use exit().
raise
except BaseException as e:
# This is a bug or unexpected circumstance.
if getattr(args, "isatty", True):
gxf.errors.show_error(e)
else:
raise
示例8
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color border takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.border_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color reg-name subcmd
示例9
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color reg-name takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.reg_name_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color reg-value subcmd
示例10
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color reg-value takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.reg_value_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color reg-value-highlight subcmd
示例11
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color reg-value-highlight takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.reg_value_highlight_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color address subcmd
示例12
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color stack-data takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.stack_data_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color code subcmd
示例13
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color code takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.code_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color code highlight subcmd
示例14
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('color code-highlight takes 1 arg')
try:
Colors.COLORS[argv[0]]
Colors.code_highlight_color = argv[0]
except KeyError:
raise gdb.GdbError('invalid argument, see "color list"')
# color list subcmd
示例15
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('set jnienv takes 1 arg')
if not argv[0].isdigit():
raise gdb.GdbError('invalid argument')
Strongdb.run_cmd('set $sgdb_jnienv = ' + argv[0])
示例16
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 1:
raise gdb.GdbError('solib takes 1 arg')
Strongdb.run_cmd('set solib-search-path %s' % (argv[0]))
示例17
def invoke(self, arg, from_tty):
global _ctx
self.dont_repeat()
argv = gdb.string_to_argv(_prepare_args(arg))
if len(argv) == 0:
raise AngrGDBError("angrdbg sim: at least a parameter is needed")
elif len(argv) == 1:
_ctx.symbolics[self._process_argv0(argv[0])] = None
else:
siz = _to_int(argv[1])
if siz is None:
raise AngrGDBError(
"angrdbg sim: the second parameter (length) must be a number")
_ctx.symbolics[self._process_argv0(argv[0])] = siz
示例18
def invoke(self, arg, from_tty):
argv = gdb.string_to_argv(arg)
qTypes = []
if( len(argv) > 0 ):
for a in argv:
try:
qType = QueueMode.Map[a]
qTypes.append(qType)
except KeyError:
print("Arg %s does not map to a Queue Type!" % a)
reg = HandleRegistry()
qToShow = []
if ( len(qTypes) > 0 ):
# We will only print info about queues
for qType in qTypes:
qObjs = reg.FilterBy(qType)
qToShow.extend(qObjs)
else:
qToShow = reg.FilterBy(None)
print("Num Queues: %d" % len(qToShow))
print("%20s %4s %16s %16s" % ("NAME", "CNT", "SEND", "RECEIVE") )
for q in qToShow:
self.PrintQueueInfo(q)
示例19
def invoke(self, arg, from_tty):
argv = gdb.string_to_argv(arg)
if ( len(argv) != 1 ):
print("Invalid Argument: Requires one handle arg")
handle = int( argv[0], 0)
reg = HandleRegistry()
name = reg.GetName(handle)
print("Handle 0x%08x: %s" % (handle, name))
示例20
def invoke(self, arg, from_tty):
def parse_global(a):
pargs = self.parser.parse_args(a)
for c in self.cmds:
if hasattr(pargs, c) and (getattr(pargs, c) is True):
getattr(self, c)(pargs)
return True
return False
argv = gdb.string_to_argv(arg)
parser_name = argv[0]
argv = argv[1:]
if parser_name == self.name:
if parse_global(argv):
return
else:
if parser_name in self.subcommand_parsers.iterkeys():
sub = self.subcommand_parsers[parser_name]
if argv[0] in sub.cmds:
pargs = sub.parser.parse_args(argv)
for subc in sub.cmds:
if hasattr(pargs, subc) and (getattr(pargs, subc) is True):
getattr(sub.plugin, subc)(pargs)
return
if parse_global(argv):
return
self.gdb_print("unknown command %s\n" % arg)
示例21
def invoke(self, args, from_tty):
argv = gdb.string_to_argv(args)
if len(argv) != 2:
raise gdb.GdbError('输入参数数目不对,help mv以获得用法')
gdb.execute('delete ' + argv[0])
gdb.execute('break ' + argv[1])
示例22
def parse_printer_regexps(arg):
"""Internal utility to parse a pretty-printer command argv.
Arguments:
arg: The arguments to the command. The format is:
[object-regexp [name-regexp]].
Individual printers in a collection are named as
printer-name;subprinter-name.
Returns:
The result is a 3-tuple of compiled regular expressions, except that
the resulting compiled subprinter regexp is None if not provided.
Raises:
SyntaxError: an error processing ARG
"""
argv = gdb.string_to_argv(arg);
argc = len(argv)
object_regexp = "" # match everything
name_regexp = "" # match everything
subname_regexp = None
if argc > 3:
raise SyntaxError("too many arguments")
if argc >= 1:
object_regexp = argv[0]
if argc >= 2:
name_subname = argv[1].split(";", 1)
name_regexp = name_subname[0]
if len(name_subname) == 2:
subname_regexp = name_subname[1]
# That re.compile raises SyntaxError was determined empirically.
# We catch it and reraise it to provide a slightly more useful
# error message for the user.
try:
object_re = re.compile(object_regexp)
except SyntaxError:
raise SyntaxError("invalid object regexp: %s" % object_regexp)
try:
name_re = re.compile (name_regexp)
except SyntaxError:
raise SyntaxError("invalid name regexp: %s" % name_regexp)
if subname_regexp is not None:
try:
subname_re = re.compile(subname_regexp)
except SyntaxError:
raise SyntaxError("invalid subname regexp: %s" % subname_regexp)
else:
subname_re = None
return(object_re, name_re, subname_re)