angr.angrdb.serializers.loader

class angr.angrdb.serializers.loader.LoadArgsJSONEncoder

Bases: JSONEncoder

A JSON encoder that supports serializing bytes.

class angr.angrdb.serializers.loader.LoadArgsJSONDecoder

Bases: JSONDecoder

A JSON decoder that supports unserializing into bytes.

class angr.angrdb.serializers.loader.LoaderSerializer

Bases: object

Serialize/unserialize a CLE Loader object into/from an angr DB.

Corner cases:

  • For certain backends (e.g., CART), we do not store the data of the main object. angr will unpack the CART file again after loading the database.

NO_MAINBIN_BACKENDS = [<class 'cle.backends.cartfile.CARTFile'>]
LOAD_ARG_BLACKLIST = {'is_main_bin', 'loader'}
backend2name = {<class 'cle.backends.blob.Blob'>: 'blob', <class 'cle.backends.cartfile.CARTFile'>: 'cart', <class 'cle.backends.cgc.backedcgc.BackedCGC'>: 'backedcgc', <class 'cle.backends.cgc.cgc.CGC'>: 'cgc', <class 'cle.backends.coff.Coff'>: 'COFF', <class 'cle.backends.elf.elf.ELF'>: 'elf', <class 'cle.backends.elf.elfcore.ELFCore'>: 'elfcore', <class 'cle.backends.ihex.Hex'>: 'hex', <class 'cle.backends.java.apk.Apk'>: 'apk', <class 'cle.backends.java.jar.Jar'>: 'jar', <class 'cle.backends.macho.macho.MachO'>: 'mach-o', <class 'cle.backends.minidump.Minidump'>: 'minidump', <class 'cle.backends.named_region.NamedRegion'>: 'named_region', <class 'cle.backends.pe.pe.PE'>: 'pe', <class 'cle.backends.srec.SRec'>: 'srec', <class 'cle.backends.static_archive.StaticArchive'>: 'AR', <class 'cle.backends.te.TE'>: 'te', <class 'cle.backends.uefi_firmware.UefiFirmware'>: 'uefi', <class 'cle.backends.universal2.Universal2'>: 'Universal2', <class 'cle.backends.xbe.XBE'>: 'xbe'}
static json_serialize_load_args(load_args)
Return type:

str

Parameters:

load_args (dict[str, Any])

static should_skip_main_binary(loader)
Return type:

tuple[bool, Backend | None]

static dump(session, loader)
static load(session)