#!/usr/bin/env python3 """For each ROM string matching a regex, find 32-bit bit-address refs. Usage: scan_str.py IMAGE REGEX """ import re import struct import sys ROM_BASE = 0x07E40000 def main(): image = open(sys.argv[1], "rb").read() pat = re.compile(sys.argv[2]) # enumerate strings strings = [] for m in re.finditer(rb"[\x20-\x7e]{4,}", image): s = m.group().decode("latin1") if pat.search(s): strings.append((m.start(), s)) for off, s in strings: val = (ROM_BASE + off) << 3 p = struct.pack("