angr.utils.ail_serialization

Typed protobuf pack/parse helpers for AIL-typed containers.

AIL leaves (Block / Statement / Expression) serialize through their native to_bytes() methods (postcard, implemented in Rust); the helpers here only encode the Python container structure around them using the typed messages in angr.protos.ail_types_pb2. There is no generic fallback: any value shape not covered by the schema raises TypeError.

angr.utils.ail_serialization.simvar_to_bytes_polymorphic(v)

Polymorphic SimVariable encoding: b"<ClassName>\0<proto bytes>".

Return type:

bytes

Parameters:

v (SimVariable)

angr.utils.ail_serialization.simvar_from_bytes_polymorphic(b)
Return type:

SimVariable

Parameters:

b (bytes)

class angr.utils.ail_serialization.BlockPool

Bases: object

A shared pool of Block.to_bytes() payloads for deduplicating byte-identical blocks across graphs.

__init__()
Return type:

None

payloads: list[bytes]
add(block)
Return type:

int

angr.utils.ail_serialization.pack_graph(graph, pool=None)

Encode a DiGraph of ailment Blocks. Node identity is preserved through per-graph block indices. When pool is given, block payloads are deduplicated into it and the message stores pool refs instead of inline payloads.

Return type:

AilGraph

Parameters:
angr.utils.ail_serialization.parse_graph(msg, pool_payloads=None)
Return type:

DiGraph

Parameters:

msg (AilGraph)

angr.utils.ail_serialization.pack_arg_vvars(arg_vvars)
Return type:

ArgVVars

Parameters:

arg_vvars (dict[int, tuple[Any, Any]])

angr.utils.ail_serialization.parse_arg_vvars(msg)
Return type:

dict[int, tuple[Any, Any]]

Parameters:

msg (ArgVVars)

angr.utils.ail_serialization.pack_ite_exprs(ite_exprs)
Return type:

IteExprs

Parameters:

ite_exprs (set[tuple[int, Any]])

angr.utils.ail_serialization.parse_ite_exprs(msg)
Return type:

set[tuple[int, Any]]

Parameters:

msg (IteExprs)

angr.utils.ail_serialization.pack_static_vvars(static_vvars)
Return type:

StaticVVars

Parameters:

static_vvars (dict[int, Any])

angr.utils.ail_serialization.parse_static_vvars(msg)
Return type:

dict[int, Any]

Parameters:

msg (StaticVVars)

angr.utils.ail_serialization.pack_static_buffers(static_buffers)
Return type:

StaticBuffers

Parameters:

static_buffers (dict[str, Any])

angr.utils.ail_serialization.parse_static_buffers(msg)
Return type:

dict[str, Any]

Parameters:

msg (StaticBuffers)