#!/usr/bin/env python3 """sbl_adr.py — поиск ADR (ADD/SUB pc) ссылок на интересные строки SBL1. Использование: ./tools/sbl_adr.py fw/sbl/img0.elf """ import struct import sys d = open(sys.argv[1], "rb").read() STRINGS = [b"SBL1, Start", b"SBL1, End", b"SBL1, Delta", b"Sahara: Hello pkt sent", b"bl_power_on", b"sbl1_main"] svas = {} for s in STRINGS: i = d.find(s) if i < 0: continue # find which segment contains it phoff = struct.unpack("> 7 imm = ((imm >> rot) | (imm << (32 - rot))) & 0xFFFFFFFF if rot else imm tgt = (v + j + 8 + (imm if (x & 0x400000) else -imm)) & 0xFFFFFFFF if abs(tgt - va) < 0x100: print(" ", hex(v + j), "->", hex(tgt)) n += 1 if n > 6: break