Ejemplo n.º 1
0
    def loop(self, console):
        def __print_addr(ad):
            if console.db.mem.is_code(ad):
                fid = console.db.mem.get_func_id(ad)
                if fid != -1:
                    func_ad = console.db.func_id[fid]
                    name = console.api.get_symbol(func_ad)
                    print(color_symbol(name), end="")
                    return
            s = console.gctx.dis.binary.get_section(ad)
            print(color_section(s.name), end=".")
            print(color_addr_normal(ad, False), end="")

        if sys.stdin.isatty():
            prompt = bold(color("plasma> ", 11))
        else:
            prompt = ""

        while 1:
            if SHOULD_EXIT:
                break
            try:
                for i, widgets in enumerate(console.visual_last_widgets):
                    # the visual %0 can be None if we moved it
                    # see save_visual_0
                    if widgets is None:
                        continue

                    if i == console.visual_previous_idx:
                        print(bold(color("%%%d" % i, 201)), end="  ")
                    else:
                        print(color("%%%d" % i, 118), end="  ")

                    n = 0
                    for w in widgets:
                        if isinstance(w, Disasmbox):
                            if n > 0:
                                print(", ", end="")
                            n += 1
                            __print_addr(w.get_current_addr())
                    print()

                line = input(prompt)
                if line:
                    self.con.exec_command(line)

            except KeyboardInterrupt:
                print()
                pass

            except EOFError:
                if sys.stdin.isatty():
                    print()
                break
Ejemplo n.º 2
0
 def __exec_help(self, args):
     for name in COMMANDS_ALPHA:
         cmd = self.COMMANDS[name]
         if cmd.callback_exec is not None:
             print_no_end(color(name, 2))
             print_no_end(" ")
             for i, line in enumerate(cmd.desc):
                 if i > 0:
                     print_no_end(self.TAB)
                 print(line)
Ejemplo n.º 3
0
 def print(self):
     for l in self.token_lines:
         for (string, col, is_bold) in l:
             if self.gctx.color:
                 if col != 0:
                     string = color(string, col)
                 if is_bold:
                     string = bold(string)
             print_no_end(string)
         print()
Ejemplo n.º 4
0
 def __exec_help(self, args):
     for name in COMMANDS_ALPHA:
         cmd = self.COMMANDS[name]
         if cmd.callback_exec is not None:
             print_no_end(color(name, 2))
             print_no_end(" ")
             for i, line in enumerate(cmd.desc):
                 if i > 0:
                     print_no_end(self.TAB)
                 print(line)
Ejemplo n.º 5
0
 def print(self):
     for l in self.token_lines:
         for (string, col, is_bold) in l:
             if self.gctx.color:
                 if col != 0:
                     string = color(string, col)
                 if is_bold:
                     string = bold(string)
             print_no_end(string)
         print()
Ejemplo n.º 6
0
    def loop(self):
        while 1:
            if SHOULD_EXIT:
                break
            try:
                line = input(bold(color("plasma> ", 11)))
                if line:
                    self.con.exec_command(line)

            except KeyboardInterrupt:
                print()
                pass

            except EOFError:
                print()
                break
Ejemplo n.º 7
0
    def loop(self):
        if sys.stdin.isatty():
            prompt = bold(color("plasma> ", 11))
        else:
            prompt = ""

        while 1:
            if SHOULD_EXIT:
                break
            try:
                line = input(prompt)
                if line:
                    self.con.exec_command(line)

            except KeyboardInterrupt:
                print()
                pass

            except EOFError:
                if sys.stdin.isatty():
                    print()
                break
Ejemplo n.º 8
0
    def loop(self):
        if sys.stdin.isatty():
            prompt = bold(color("plasma> ", 11))
        else:
            prompt = ""

        while 1:
            if SHOULD_EXIT:
                break
            try:
                line = input(prompt)
                if line:
                    self.con.exec_command(line)

            except KeyboardInterrupt:
                print()
                pass

            except EOFError:
                if sys.stdin.isatty():
                    print()
                break