#!/usr/bin/env python3 """Wrap a raw ARM/Thumb firmware image in a minimal ELF32 so IDA auto-detects processor (EM_ARM), load address, and Thumb entry — no CLI / no -parm needed. usage: mkelf.py [--arm] """ import struct, sys, os def mkelf(raw: bytes, base: int, thumb: bool = True) -> bytes: EHSIZE, PHENTSIZE = 52, 32 DATA_OFF = 0x1000 entry = base | (1 if thumb else 0) # bit0 set => Thumb entry eh = b'\x7fELF' # magic eh += bytes([1, 1, 1, 0, 0]) # 32-bit, LSB, ELFv1, SysV ABI eh += b'\x00' * 7 eh += struct.pack(' {os.path.basename(out_p)} " f"base={base_s} thumb={thumb} size={len(data):,}")