ailment — angr Intermediate Language¶
- class ailment.Block(addr, original_size, statements=None, idx=None)[source]¶
Bases:
objectDescribes an AIL block.
- Parameters:
addr (int)
- addr¶
- original_size¶
-
statements:
list[Statement]¶
- idx¶
- class ailment.Statement(idx, **kwargs)[source]¶
Bases:
TaggedObject,ABCThe base class of all AIL statements.
- abstract replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,Self]- Parameters:
old_expr (Expression)
new_expr (Expression)
- class ailment.Assignment(idx, dst, src, **kwargs)[source]¶
Bases:
StatementAssignment statement: expr_a = expr_b
- Parameters:
idx (int | None)
dst (Atom)
src (Expression)
- __init__(idx, dst, src, **kwargs)[source]¶
- Parameters:
idx (int | None)
dst (Atom)
src (Expression)
- dst¶
- src¶
- replace(old_expr, new_expr)[source]¶
- Parameters:
old_expr (Expression)
new_expr (Expression)
- class ailment.Expression(*args, **kwargs)[source]¶
Bases:
TaggedObjectThe base class of all AIL expressions.
-
bits:
int¶
- depth¶
- replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,Self]- Parameters:
old_expr (Expression)
new_expr (Expression)
-
bits:
- class ailment.Const(idx, variable, value, bits, **kwargs)[source]¶
Bases:
Atom- Parameters:
idx (int | None)
value (int | float)
bits (int)
- __init__(idx, variable, value, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
value (int | float)
bits (int)
- value¶
- property size¶
- matches(other)¶
- property sign_bit¶
- property is_int: bool¶
- class ailment.Tmp(idx, variable, tmp_idx, bits, **kwargs)[source]¶
Bases:
Atom- Parameters:
idx (int | None)
tmp_idx (int)
bits (int)
- __init__(idx, variable, tmp_idx, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
tmp_idx (int)
- tmp_idx¶
- property size¶
- matches(other)¶
- class ailment.Register(idx, variable, reg_offset, bits, **kwargs)[source]¶
Bases:
Atom- Parameters:
idx (int | None)
reg_offset (int)
bits (int)
- __init__(idx, variable, reg_offset, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
reg_offset (int)
bits (int)
- reg_offset¶
- property size¶
- matches(other)¶
- class ailment.UnaryOp(idx, op, operand, variable=None, variable_offset=None, bits=None, **kwargs)[source]¶
Bases:
Op- Parameters:
idx (int | None)
op (str)
operand (Expression)
variable_offset (int | None)
bits (int)
- __init__(idx, op, operand, variable=None, variable_offset=None, bits=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
op (str)
operand (Expression)
variable_offset (int | None)
- operand¶
- variable¶
- variable_offset¶
- property operands¶
- property size¶
- class ailment.BinaryOp(idx, op, operands, signed=False, *, variable=None, variable_offset=None, bits=None, floating_point=False, rounding_mode=None, vector_count=None, vector_size=None, **kwargs)[source]¶
Bases:
Op- Parameters:
idx (int | None)
op (str)
operands (Sequence[Expression])
signed (bool)
bits (int)
vector_count (int | None)
vector_size (int | None)
- OPSTR_MAP = {'Add': '+', 'AddF': '+', 'AddV': '+', 'And': '&', 'Carry': 'CARRY', 'CmpEQ': '==', 'CmpF': 'CmpF', 'CmpGE': '>=', 'CmpGE (signed)': '>=s', 'CmpGT': '>', 'CmpGT (signed)': '>s', 'CmpLE': '<=', 'CmpLE (signed)': '<=s', 'CmpLT': '<', 'CmpLT (signed)': '<s', 'CmpNE': '!=', 'Concat': 'CONCAT', 'Div': '/', 'DivF': '/', 'LogicalAnd': '&&', 'LogicalOr': '||', 'Mod': '%', 'Mul': '*', 'MulF': '*', 'MulV': '*', 'Or': '|', 'Rol': 'ROL', 'Ror': 'ROR', 'SBorrow': 'SBORROW', 'SCarry': 'SCARRY', 'Sar': '>>a', 'Shl': '<<', 'Shr': '>>', 'Sub': '-', 'SubF': '-', 'Xor': '^'}¶
- COMPARISON_NEGATION = {'CmpEQ': 'CmpNE', 'CmpGE': 'CmpLT', 'CmpGT': 'CmpLE', 'CmpLE': 'CmpGT', 'CmpLT': 'CmpGE', 'CmpNE': 'CmpEQ'}¶
- __init__(idx, op, operands, signed=False, *, variable=None, variable_offset=None, bits=None, floating_point=False, rounding_mode=None, vector_count=None, vector_size=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
op (str)
operands (Sequence[Expression])
signed (bool)
vector_count (int | None)
vector_size (int | None)
- operands¶
- signed¶
- variable¶
- variable_offset¶
- floating_point¶
-
rounding_mode:
str|None¶
- vector_count¶
- vector_size¶
- replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,BinaryOp]- Parameters:
old_expr (Expression)
new_expr (Expression)
- property verbose_op¶
- property size¶
- class ailment.Manager(name=None, arch=None)[source]¶
Bases:
object- Parameters:
name (str | None)
- property ins_addr: int | None¶
- class ailment.AILBlockWalkerBase(stmt_handlers=None, expr_handlers=None)[source]¶
Bases:
objectWalks all statements and expressions of an AIL node and do nothing.
- walk_expression(expr, stmt_idx=None, stmt=None, block=None)[source]¶
- Parameters:
expr (Expression)
stmt_idx (int | None)
stmt (Statement | None)
block (Block | None)
- class ailment.AILBlockWalker(stmt_handlers=None, expr_handlers=None, update_block=True, replace_phi_stmt=False)[source]¶
Bases:
AILBlockWalkerBaseWalks all statements and expressions of an AIL node, and rebuilds expressions, statements, or blocks if needed.
If you need a pure walker without rebuilding, use AILBlockWalkerBase instead.
- Variables:
update_block – True if the block should be updated in place, False if a new block should be created and returned as the result of walk().
replace_phi_stmt – True if you want _handle_Phi be called and vvars potentially replaced; False otherwise. Default to False because in the most majority cases you do not want vvars in a Phi variable be replaced.
- Parameters:
update_block (bool)
replace_phi_stmt (bool)
- __init__(stmt_handlers=None, expr_handlers=None, update_block=True, replace_phi_stmt=False)[source]¶
- Parameters:
update_block (bool)
replace_phi_stmt (bool)
Converter¶
Expressions¶
- class ailment.expression.Expression(*args, **kwargs)[source]¶
Bases:
TaggedObjectThe base class of all AIL expressions.
-
bits:
int¶
- depth¶
- replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,Self]- Parameters:
old_expr (Expression)
new_expr (Expression)
-
bits:
- class ailment.expression.Atom(idx, variable=None, variable_offset=0, **kwargs)[source]¶
Bases:
Expression- Parameters:
idx (int | None)
- variable¶
- variable_offset¶
- class ailment.expression.Const(idx, variable, value, bits, **kwargs)[source]¶
Bases:
Atom- Parameters:
idx (int | None)
value (int | float)
bits (int)
- __init__(idx, variable, value, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
value (int | float)
bits (int)
- value¶
- property size¶
- matches(other)¶
- property sign_bit¶
- property is_int: bool¶
- class ailment.expression.Tmp(idx, variable, tmp_idx, bits, **kwargs)[source]¶
Bases:
Atom- Parameters:
idx (int | None)
tmp_idx (int)
bits (int)
- __init__(idx, variable, tmp_idx, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
tmp_idx (int)
- tmp_idx¶
- property size¶
- matches(other)¶
- class ailment.expression.Register(idx, variable, reg_offset, bits, **kwargs)[source]¶
Bases:
Atom- Parameters:
idx (int | None)
reg_offset (int)
bits (int)
- __init__(idx, variable, reg_offset, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
reg_offset (int)
bits (int)
- reg_offset¶
- property size¶
- matches(other)¶
- class ailment.expression.VirtualVariableCategory(value)[source]¶
Bases:
IntEnumAn enumeration.
- REGISTER = 0¶
- STACK = 1¶
- MEMORY = 2¶
- PARAMETER = 3¶
- TMP = 4¶
- UNKNOWN = 5¶
- class ailment.expression.VirtualVariable(idx, varid, bits, category, oident=None, **kwargs)[source]¶
Bases:
Atom- Parameters:
varid (int)
bits (int)
category (VirtualVariableCategory)
oident (int | str | tuple | None)
- __init__(idx, varid, bits, category, oident=None, **kwargs)[source]¶
- Parameters:
varid (int)
category (VirtualVariableCategory)
oident (int | str | tuple | None)
- varid¶
- category¶
- oident¶
- property size¶
- property was_reg: bool¶
- property was_stack: bool¶
- property was_parameter: bool¶
- property was_tmp: bool¶
- property reg_offset: int¶
- property stack_offset: int¶
- property tmp_idx: int | None¶
- property parameter_category: VirtualVariableCategory | None¶
- property parameter_reg_offset: int | None¶
- property parameter_stack_offset: int | None¶
- class ailment.expression.Phi(idx, bits, src_and_vvars, **kwargs)[source]¶
Bases:
Atom- Parameters:
bits (int)
src_and_vvars (list[tuple[tuple[int, int | None], VirtualVariable | None]])
- __init__(idx, bits, src_and_vvars, **kwargs)[source]¶
- Parameters:
src_and_vvars (list[tuple[tuple[int, int | None], VirtualVariable | None]])
- src_and_vvars¶
- property size: int¶
- property op: str¶
- property verbose_op: str¶
- class ailment.expression.Op(*args, **kwargs)[source]¶
Bases:
Expression- op¶
- property verbose_op¶
- class ailment.expression.UnaryOp(idx, op, operand, variable=None, variable_offset=None, bits=None, **kwargs)[source]¶
Bases:
Op- Parameters:
idx (int | None)
op (str)
operand (Expression)
variable_offset (int | None)
bits (int)
- __init__(idx, op, operand, variable=None, variable_offset=None, bits=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
op (str)
operand (Expression)
variable_offset (int | None)
- operand¶
- variable¶
- variable_offset¶
- property operands¶
- property size¶
- class ailment.expression.ConvertType(value)[source]¶
Bases:
EnumAn enumeration.
- TYPE_INT = 0¶
- TYPE_FP = 1¶
- class ailment.expression.Convert(idx, from_bits, to_bits, is_signed, operand, from_type=ConvertType.TYPE_INT, to_type=ConvertType.TYPE_INT, rounding_mode=None, **kwargs)[source]¶
Bases:
UnaryOp- Parameters:
idx (int | None)
from_bits (int)
to_bits (int)
is_signed (bool)
operand (Expression)
from_type (ConvertType)
to_type (ConvertType)
- TYPE_INT = 0¶
- TYPE_FP = 1¶
- __init__(idx, from_bits, to_bits, is_signed, operand, from_type=ConvertType.TYPE_INT, to_type=ConvertType.TYPE_INT, rounding_mode=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
from_bits (int)
to_bits (int)
is_signed (bool)
operand (Expression)
from_type (ConvertType)
to_type (ConvertType)
- from_bits¶
- to_bits¶
- is_signed¶
- from_type¶
- to_type¶
- rounding_mode¶
- class ailment.expression.Reinterpret(idx, from_bits, from_type, to_bits, to_type, operand, **kwargs)[source]¶
Bases:
UnaryOp- Parameters:
from_bits (int)
from_type (str)
to_bits (int)
to_type (str)
- __init__(idx, from_bits, from_type, to_bits, to_type, operand, **kwargs)[source]¶
- Parameters:
from_bits (int)
from_type (str)
to_bits (int)
to_type (str)
- from_bits¶
- from_type¶
- to_bits¶
- to_type¶
- class ailment.expression.BinaryOp(idx, op, operands, signed=False, *, variable=None, variable_offset=None, bits=None, floating_point=False, rounding_mode=None, vector_count=None, vector_size=None, **kwargs)[source]¶
Bases:
Op- Parameters:
idx (int | None)
op (str)
operands (Sequence[Expression])
signed (bool)
bits (int)
rounding_mode (str | None)
vector_count (int | None)
vector_size (int | None)
- OPSTR_MAP = {'Add': '+', 'AddF': '+', 'AddV': '+', 'And': '&', 'Carry': 'CARRY', 'CmpEQ': '==', 'CmpF': 'CmpF', 'CmpGE': '>=', 'CmpGE (signed)': '>=s', 'CmpGT': '>', 'CmpGT (signed)': '>s', 'CmpLE': '<=', 'CmpLE (signed)': '<=s', 'CmpLT': '<', 'CmpLT (signed)': '<s', 'CmpNE': '!=', 'Concat': 'CONCAT', 'Div': '/', 'DivF': '/', 'LogicalAnd': '&&', 'LogicalOr': '||', 'Mod': '%', 'Mul': '*', 'MulF': '*', 'MulV': '*', 'Or': '|', 'Rol': 'ROL', 'Ror': 'ROR', 'SBorrow': 'SBORROW', 'SCarry': 'SCARRY', 'Sar': '>>a', 'Shl': '<<', 'Shr': '>>', 'Sub': '-', 'SubF': '-', 'Xor': '^'}¶
- COMPARISON_NEGATION = {'CmpEQ': 'CmpNE', 'CmpGE': 'CmpLT', 'CmpGT': 'CmpLE', 'CmpLE': 'CmpGT', 'CmpLT': 'CmpGE', 'CmpNE': 'CmpEQ'}¶
- __init__(idx, op, operands, signed=False, *, variable=None, variable_offset=None, bits=None, floating_point=False, rounding_mode=None, vector_count=None, vector_size=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
op (str)
operands (Sequence[Expression])
signed (bool)
vector_count (int | None)
vector_size (int | None)
- operands¶
- signed¶
- variable¶
- variable_offset¶
- floating_point¶
-
rounding_mode:
str|None¶
- vector_count¶
- vector_size¶
- replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,BinaryOp]- Parameters:
old_expr (Expression)
new_expr (Expression)
- property verbose_op¶
- property size¶
- class ailment.expression.Load(idx, addr, size, endness, variable=None, variable_offset=None, guard=None, alt=None, **kwargs)[source]¶
Bases:
Expression- Parameters:
idx (int | None)
addr (Expression)
size (int)
endness (str)
- __init__(idx, addr, size, endness, variable=None, variable_offset=None, guard=None, alt=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
addr (Expression)
size (int)
endness (str)
- addr¶
- size¶
- endness¶
- guard¶
- alt¶
- variable¶
- variable_offset¶
- class ailment.expression.ITE(idx, cond, iffalse, iftrue, variable=None, variable_offset=None, **kwargs)[source]¶
Bases:
Expression- Parameters:
idx (int | None)
cond (Expression)
iffalse (Expression)
iftrue (Expression)
- __init__(idx, cond, iffalse, iftrue, variable=None, variable_offset=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
cond (Expression)
iffalse (Expression)
iftrue (Expression)
- cond¶
- iffalse¶
- iftrue¶
- variable¶
- variable_offset¶
- property size¶
- class ailment.expression.DirtyExpression(idx, callee, operands, *, guard=None, mfx=None, maddr=None, msize=None, bits, **kwargs)[source]¶
Bases:
Expression- Parameters:
callee (str)
operands (list[Expression])
guard (Expression | None)
mfx (str | None)
maddr (Expression | None)
msize (int | None)
bits (int)
- __init__(idx, callee, operands, *, guard=None, mfx=None, maddr=None, msize=None, bits, **kwargs)[source]¶
- Parameters:
callee (str)
operands (list[Expression])
guard (Expression | None)
mfx (str | None)
maddr (Expression | None)
msize (int | None)
bits (int)
- callee¶
- guard¶
- operands¶
- mfx¶
- maddr¶
- msize¶
- property op: str¶
- property verbose_op: str¶
- replace(old_expr, new_expr)[source]¶
- Parameters:
old_expr (Expression)
new_expr (Expression)
- property size¶
- class ailment.expression.VEXCCallExpression(idx, callee, operands, bits, **kwargs)[source]¶
Bases:
Expression- Parameters:
idx (int | None)
callee (str)
operands (tuple[Expression, ...])
bits (int)
- __init__(idx, callee, operands, bits, **kwargs)[source]¶
- Parameters:
idx (int | None)
callee (str)
operands (tuple[Expression, ...])
bits (int)
- callee¶
- operands¶
- property op: str¶
- property verbose_op: str¶
- property size¶
- class ailment.expression.MultiStatementExpression(idx, stmts, expr, **kwargs)[source]¶
Bases:
ExpressionFor representing comma-separated statements and expression in C.
- Parameters:
idx (int | None)
stmts (list[Statement])
expr (Expression)
- __init__(idx, stmts, expr, **kwargs)[source]¶
- Parameters:
idx (int | None)
stmts (list[Statement])
expr (Expression)
- stmts¶
- expr¶
- property size¶
- class ailment.expression.BasePointerOffset(idx, bits, base, offset, variable=None, variable_offset=None, **kwargs)[source]¶
Bases:
Expression- Parameters:
idx (int | None)
bits (int)
base (Expression | str)
offset (int)
- __init__(idx, bits, base, offset, variable=None, variable_offset=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
bits (int)
base (Expression | str)
offset (int)
- base¶
- offset¶
- variable¶
- variable_offset¶
- property size¶
- matches(other)¶
- class ailment.expression.StackBaseOffset(idx, bits, offset, **kwargs)[source]¶
Bases:
BasePointerOffset- Parameters:
idx (int | None)
bits (int)
offset (int)
- ailment.expression.negate(expr)[source]¶
- Return type:
- Parameters:
expr (Expression)
Statement¶
- class ailment.statement.Statement(idx, **kwargs)[source]¶
Bases:
TaggedObject,ABCThe base class of all AIL statements.
- abstract replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,Self]- Parameters:
old_expr (Expression)
new_expr (Expression)
- class ailment.statement.Assignment(idx, dst, src, **kwargs)[source]¶
Bases:
StatementAssignment statement: expr_a = expr_b
- Parameters:
idx (int | None)
dst (Atom)
src (Expression)
- __init__(idx, dst, src, **kwargs)[source]¶
- Parameters:
idx (int | None)
dst (Atom)
src (Expression)
- dst¶
- src¶
- replace(old_expr, new_expr)[source]¶
- Parameters:
old_expr (Expression)
new_expr (Expression)
- class ailment.statement.WeakAssignment(idx, dst, src, **kwargs)[source]¶
Bases:
StatementAn assignment statement that does not create a new variable at its destination; It should be seen as operator=(&dst, &src) in C++-like syntax.
- Parameters:
idx (int | None)
dst (Atom)
src (Expression)
- __init__(idx, dst, src, **kwargs)[source]¶
- Parameters:
idx (int | None)
dst (Atom)
src (Expression)
- dst¶
- src¶
- replace(old_expr, new_expr)[source]¶
- Parameters:
old_expr (Expression)
new_expr (Expression)
- class ailment.statement.Store(idx, addr, data, size, endness, guard=None, variable=None, offset=None, **kwargs)[source]¶
Bases:
StatementStore statement: *addr = data
- Parameters:
idx (int | None)
addr (Expression)
data (Expression)
size (int)
endness (str)
guard (Expression | None)
- __init__(idx, addr, data, size, endness, guard=None, variable=None, offset=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
addr (Expression)
data (Expression)
size (int)
endness (str)
guard (Expression | None)
- addr¶
- data¶
- size¶
- endness¶
- variable¶
- guard¶
- offset¶
- class ailment.statement.Jump(idx, target, target_idx=None, **kwargs)[source]¶
Bases:
StatementJump statement: goto target
- Parameters:
idx (int | None)
target (Expression)
target_idx (int | None)
- __init__(idx, target, target_idx=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
target (Expression)
target_idx (int | None)
- target¶
- target_idx¶
- property depth¶
- class ailment.statement.ConditionalJump(idx, condition, true_target, false_target, true_target_idx=None, false_target_idx=None, **kwargs)[source]¶
Bases:
Statementif (cond) {true_target} else {false_target}
- Parameters:
idx (int | None)
condition (Expression)
true_target (Expression | None)
false_target (Expression | None)
true_target_idx (int | None)
false_target_idx (int | None)
- __init__(idx, condition, true_target, false_target, true_target_idx=None, false_target_idx=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
condition (Expression)
true_target (Expression | None)
false_target (Expression | None)
true_target_idx (int | None)
false_target_idx (int | None)
- condition¶
- true_target¶
- false_target¶
- true_target_idx¶
- false_target_idx¶
- class ailment.statement.Call(idx, target, calling_convention=None, prototype=None, args=None, ret_expr=None, fp_ret_expr=None, bits=None, **kwargs)[source]¶
Bases:
Expression,StatementCall is both an expression and a statement.
When used as a statement, it will set ret_expr, fp_ret_expr, or both if both of them should hold return values. When used as an expression, both ret_expr and fp_ret_expr should be None (and should be ignored). The size of the call expression is stored in the bits attribute.
- Parameters:
idx (int | None)
target (Expression | str)
calling_convention (SimCC | None)
args (Sequence[Expression] | None)
ret_expr (Expression | None)
fp_ret_expr (Expression | None)
bits (int)
- __init__(idx, target, calling_convention=None, prototype=None, args=None, ret_expr=None, fp_ret_expr=None, bits=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
target (Expression | str)
calling_convention (SimCC | None)
args (Sequence[Expression] | None)
ret_expr (Expression | None)
fp_ret_expr (Expression | None)
bits (int | None)
- target¶
- calling_convention¶
- prototype¶
- args¶
- ret_expr¶
- fp_ret_expr¶
- property size¶
- property verbose_op¶
- property op¶
- replace(old_expr, new_expr)[source]¶
- Parameters:
old_expr (Expression)
new_expr (Expression)
- class ailment.statement.Return(idx, ret_exprs, **kwargs)[source]¶
Bases:
StatementReturn statement: (return expr_a), (return)
- Parameters:
idx (int | None)
- ret_exprs¶
- class ailment.statement.CAS(idx, addr, data_lo, data_hi, expd_lo, expd_hi, old_lo, old_hi, endness, **kwargs)[source]¶
Bases:
StatementAtomic compare-and-swap.
*_lo and *_hi are used to represent the low and high parts of a 128-bit CAS operation; *_hi is None if the CAS operation works on values that are less than or equal to 64 bits.
addr: The address to be compared and swapped. data: The value to be written if the comparison is successful. expd: The expected value to be compared against. old: The value that is currently stored at addr before compare-and-swap; it will be returned after compare-and-swap.
- Parameters:
idx (int | None)
addr (Expression)
data_lo (Expression)
data_hi (Expression | None)
expd_lo (Expression)
expd_hi (Expression | None)
old_lo (Atom)
old_hi (Atom | None)
endness (str)
- __init__(idx, addr, data_lo, data_hi, expd_lo, expd_hi, old_lo, old_hi, endness, **kwargs)[source]¶
- Parameters:
idx (int | None)
addr (Expression)
data_lo (Expression)
data_hi (Expression | None)
expd_lo (Expression)
expd_hi (Expression | None)
old_lo (Atom)
old_hi (Atom | None)
endness (str)
- addr¶
- data_lo¶
- data_hi¶
- expd_lo¶
- expd_hi¶
- old_lo¶
- old_hi¶
- endness¶
- replace(old_expr, new_expr)[source]¶
- Return type:
tuple[bool,CAS]- Parameters:
old_expr (Expression)
new_expr (Expression)
- property bits: int¶
- property size: int¶
- class ailment.statement.DirtyStatement(idx, dirty, **kwargs)[source]¶
Bases:
StatementWrapper around the original statement, which is usually not convertible (temporarily).
- Parameters:
idx (int | None)
dirty (DirtyExpression)
- __init__(idx, dirty, **kwargs)[source]¶
- Parameters:
idx (int | None)
dirty (DirtyExpression)
- dirty¶
- class ailment.statement.Label(idx, name, ins_addr, block_idx=None, **kwargs)[source]¶
Bases:
StatementA dummy statement that indicates a label with a name.
- Parameters:
idx (int | None)
name (str)
ins_addr (int)
block_idx (int | None)
- __init__(idx, name, ins_addr, block_idx=None, **kwargs)[source]¶
- Parameters:
idx (int | None)
name (str)
ins_addr (int)
block_idx (int | None)
- name¶
- ins_addr¶
- block_idx¶
Misc. Things¶
- class ailment.block.Block(addr, original_size, statements=None, idx=None)[source]¶
Bases:
objectDescribes an AIL block.
- Parameters:
addr (int)
statements (list[Statement])
- addr¶
- original_size¶
-
statements:
list[Statement]¶
- idx¶
- class ailment.manager.Manager(name=None, arch=None)[source]¶
Bases:
object- Parameters:
name (str | None)
- property ins_addr: int | None¶
- class ailment.tagged_object.TaggedObject(idx, **kwargs)[source]¶
Bases:
objectA class that takes arbitrary tags.
- idx¶
- property tags: dict¶
- ailment.utils.get_bits(expr)[source]¶
- Return type:
int- Parameters:
expr (Never | Expression)