(self, argv: List[str])
| 5817 | |
| 5818 | @only_if_gdb_running |
| 5819 | def do_invoke(self, argv: List[str]) -> None: |
| 5820 | argc = len(argv) |
| 5821 | if argc < 1: |
| 5822 | self.usage() |
| 5823 | return |
| 5824 | |
| 5825 | if argc > 3 and argv[0].startswith("--regex"): |
| 5826 | pattern = ' '.join(argv[3:]) |
| 5827 | pattern = ast.literal_eval("b'" + pattern + "'") |
| 5828 | |
| 5829 | addr_start = parse_address(argv[1]) |
| 5830 | addr_end = parse_address(argv[2]) |
| 5831 | |
| 5832 | for loc in self.search_binpattern_by_address(pattern, addr_start, addr_end): |
| 5833 | self.print_loc(loc) |
| 5834 | |
| 5835 | return |
| 5836 | |
| 5837 | pattern = argv[0] |
| 5838 | endian = gef.arch.endianness |
| 5839 | |
| 5840 | if argc >= 2: |
| 5841 | if argv[1].lower() == "big": endian = Endianness.BIG_ENDIAN |
| 5842 | elif argv[1].lower() == "little": endian = Endianness.LITTLE_ENDIAN |
| 5843 | |
| 5844 | if is_hex(pattern): |
| 5845 | if endian == Endianness.BIG_ENDIAN: |
| 5846 | pattern = "".join(["\\x" + pattern[i:i + 2] for i in range(2, len(pattern), 2)]) |
| 5847 | else: |
| 5848 | pattern = "".join(["\\x" + pattern[i:i + 2] for i in range(len(pattern) - 2, 0, -2)]) |
| 5849 | |
| 5850 | if argc == 3: |
| 5851 | info(f"Searching '{Color.yellowify(pattern)}' in {argv[2]}") |
| 5852 | |
| 5853 | if "0x" in argv[2]: |
| 5854 | start, end = parse_string_range(argv[2]) |
| 5855 | |
| 5856 | loc = lookup_address(start) |
| 5857 | if loc.valid: |
| 5858 | self.print_section(loc.section) |
| 5859 | |
| 5860 | for loc in self.search_pattern_by_address(pattern, start, end): |
| 5861 | self.print_loc(loc) |
| 5862 | else: |
| 5863 | section_name = argv[2] |
| 5864 | if section_name == "binary": |
| 5865 | section_name = get_filepath() or "" |
| 5866 | |
| 5867 | self.search_pattern(pattern, section_name) |
| 5868 | else: |
| 5869 | info(f"Searching '{Color.yellowify(pattern)}' in memory") |
| 5870 | self.search_pattern(pattern, "") |
| 5871 | return |
| 5872 | |
| 5873 | |
| 5874 | @register |
nothing calls this directly
no test coverage detected