androguard.decompiler.dad package

Submodules

androguard.decompiler.dad.ast module

This file is a simplified version of writer.py that outputs an AST instead of source code.

class androguard.decompiler.dad.ast.JSONWriter(graph, method)

Bases: object

add(val)
get_ast()
get_cond(node)
visit_cond_node(cond)
visit_ins(op)
visit_loop_node(loop)
visit_node(node)
visit_return_node(ret)
visit_statement_node(stmt)
visit_switch_node(switch)
visit_throw_node(throw)
visit_try_node(try_node)
androguard.decompiler.dad.ast.array_access(arr, ind)
androguard.decompiler.dad.ast.array_creation(tn, params, dim)
androguard.decompiler.dad.ast.array_initializer(params, tn=None)
androguard.decompiler.dad.ast.assignment(lhs, rhs, op='')
androguard.decompiler.dad.ast.binary_infix(op, left, right)
androguard.decompiler.dad.ast.cast(tn, arg)
androguard.decompiler.dad.ast.dummy(*args)
androguard.decompiler.dad.ast.expression_stmt(expr)
androguard.decompiler.dad.ast.field_access(triple, left)
androguard.decompiler.dad.ast.if_stmt(cond_expr, scopes)
androguard.decompiler.dad.ast.jump_stmt(keyword)
androguard.decompiler.dad.ast.literal(result, tt)
androguard.decompiler.dad.ast.literal_bool(b)
androguard.decompiler.dad.ast.literal_class(desc)
androguard.decompiler.dad.ast.literal_double(f)
androguard.decompiler.dad.ast.literal_float(f)
androguard.decompiler.dad.ast.literal_hex_int(b)
androguard.decompiler.dad.ast.literal_int(b)
androguard.decompiler.dad.ast.literal_long(b)
androguard.decompiler.dad.ast.literal_null()
androguard.decompiler.dad.ast.literal_string(s)
androguard.decompiler.dad.ast.local(name)
androguard.decompiler.dad.ast.local_decl_stmt(expr, decl)
androguard.decompiler.dad.ast.loop_stmt(isdo, cond_expr, body)
androguard.decompiler.dad.ast.method_invocation(triple, name, base, params)
androguard.decompiler.dad.ast.parenthesis(expr)
androguard.decompiler.dad.ast.parse_descriptor(desc)
androguard.decompiler.dad.ast.return_stmt(expr)
androguard.decompiler.dad.ast.statement_block()
androguard.decompiler.dad.ast.switch_stmt(cond_expr, ksv_pairs)
androguard.decompiler.dad.ast.throw_stmt(expr)
androguard.decompiler.dad.ast.try_stmt(tryb, pairs)
androguard.decompiler.dad.ast.typen(baset, dim)
androguard.decompiler.dad.ast.unary_postfix(left, op)
androguard.decompiler.dad.ast.unary_prefix(op, left)
androguard.decompiler.dad.ast.var_decl(typen, var)
androguard.decompiler.dad.ast.visit_arr_data(value)
androguard.decompiler.dad.ast.visit_decl(var, init_expr=None)
androguard.decompiler.dad.ast.visit_expr(op)
androguard.decompiler.dad.ast.visit_ins(op, isCtor=False)
androguard.decompiler.dad.ast.write_inplace_if_possible(lhs, rhs)

androguard.decompiler.dad.basic_blocks module

class androguard.decompiler.dad.basic_blocks.BasicBlock(name, block_ins)

Bases: androguard.decompiler.dad.node.Node

add_ins(new_ins_list)
add_variable_declaration(variable)
get_ins()
get_loc_with_ins()
number_ins(num)
remove_ins(loc, ins)
set_catch_type(_type)
class androguard.decompiler.dad.basic_blocks.CatchBlock(node)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

visit(visitor)
visit_exception(visitor)
class androguard.decompiler.dad.basic_blocks.CondBlock(name, block_ins)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

neg()
update_attribute_with(n_map)
visit(visitor)
visit_cond(visitor)
class androguard.decompiler.dad.basic_blocks.Condition(cond1, cond2, isand, isnot)

Bases: object

get_ins()
get_loc_with_ins()
neg()
visit(visitor)
class androguard.decompiler.dad.basic_blocks.LoopBlock(name, cond)

Bases: androguard.decompiler.dad.basic_blocks.CondBlock

get_ins()
get_loc_with_ins()
neg()
update_attribute_with(n_map)
visit(visitor)
visit_cond(visitor)
class androguard.decompiler.dad.basic_blocks.ReturnBlock(name, block_ins)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

visit(visitor)
class androguard.decompiler.dad.basic_blocks.ShortCircuitBlock(name, cond)

Bases: androguard.decompiler.dad.basic_blocks.CondBlock

get_ins()
get_loc_with_ins()
neg()
visit_cond(visitor)
class androguard.decompiler.dad.basic_blocks.StatementBlock(name, block_ins)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

visit(visitor)
class androguard.decompiler.dad.basic_blocks.SwitchBlock(name, switch, block_ins)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

add_case(case)
copy_from(node)
order_cases()
update_attribute_with(n_map)
visit(visitor)
class androguard.decompiler.dad.basic_blocks.ThrowBlock(name, block_ins)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

visit(visitor)
class androguard.decompiler.dad.basic_blocks.TryBlock(node)

Bases: androguard.decompiler.dad.basic_blocks.BasicBlock

add_catch_node(node)
num
visit(visitor)
androguard.decompiler.dad.basic_blocks.build_node_from_block(block, vmap, gen_ret, exception_type=None)

androguard.decompiler.dad.control_flow module

androguard.decompiler.dad.control_flow.catch_struct(graph, idoms)
androguard.decompiler.dad.control_flow.derived_sequence(graph)

Compute the derived sequence of the graph G The intervals of G are collapsed into nodes, intervals of these nodes are built, and the process is repeated iteratively until we obtain a single node (if the graph is not irreducible)

androguard.decompiler.dad.control_flow.identify_structures(graph, idoms)
androguard.decompiler.dad.control_flow.if_struct(graph, idoms)
androguard.decompiler.dad.control_flow.intervals(graph)

Compute the intervals of the graph Returns interval_graph: a graph of the intervals of G interv_heads: a dict of (header node, interval)

androguard.decompiler.dad.control_flow.loop_follow(start, end, nodes_in_loop)
androguard.decompiler.dad.control_flow.loop_struct(graphs_list, intervals_list)
androguard.decompiler.dad.control_flow.loop_type(start, end, nodes_in_loop)
androguard.decompiler.dad.control_flow.mark_loop(graph, start, end, interval)
androguard.decompiler.dad.control_flow.mark_loop_rec(graph, node, s_num, e_num, interval, nodes_in_loop)
androguard.decompiler.dad.control_flow.short_circuit_struct(graph, idom, node_map)
androguard.decompiler.dad.control_flow.switch_struct(graph, idoms)
androguard.decompiler.dad.control_flow.update_dom(idoms, node_map)
androguard.decompiler.dad.control_flow.while_block_struct(graph, node_map)

androguard.decompiler.dad.dataflow module

class androguard.decompiler.dad.dataflow.BasicReachDef(graph, params)

Bases: object

run()
class androguard.decompiler.dad.dataflow.DummyNode(name)

Bases: androguard.decompiler.dad.node.Node

get_loc_with_ins()
androguard.decompiler.dad.dataflow.build_def_use(graph, lparams)

Builds the Def-Use and Use-Def (DU/UD) chains of the variables of the method.

androguard.decompiler.dad.dataflow.clear_path(graph, reg, loc1, loc2)

Check that the path from loc1 to loc2 is clear. We have to check that there is no side effect between the two location points. We also have to check that the variable reg is not redefined along one of the possible pathes from loc1 to loc2.

androguard.decompiler.dad.dataflow.clear_path_node(graph, reg, loc1, loc2)
androguard.decompiler.dad.dataflow.dead_code_elimination(graph, du, ud)

Run a dead code elimination pass. Instructions are checked to be dead. If it is the case, we remove them and we update the DU & UD chains of its variables to check for further dead instructions.

androguard.decompiler.dad.dataflow.group_variables(lvars, DU, UD)
androguard.decompiler.dad.dataflow.place_declarations(graph, dvars, du, ud)
androguard.decompiler.dad.dataflow.reach_def_analysis(graph, lparams)
androguard.decompiler.dad.dataflow.register_propagation(graph, du, ud)

Propagate the temporary registers between instructions and remove them if necessary. We process the nodes of the graph in reverse post order. For each instruction in the node, we look at the variables that it uses. For each of these variables we look where it is defined and if we can replace it with its definition. We have to be careful to the side effects some instructions may have. To do the propagation, we use the computed DU and UD chains.

androguard.decompiler.dad.dataflow.split_variables(graph, lvars, DU, UD)
androguard.decompiler.dad.dataflow.update_chain(graph, loc, du, ud)

Updates the DU chain of the instruction located at loc such that there is no more reference to it so that we can remove it. When an instruction is found to be dead (i.e it has no side effect, and the register defined is not used) we have to update the DU chain of all the variables that may me used by the dead instruction.

androguard.decompiler.dad.decompile module

class androguard.decompiler.dad.decompile.DvClass(dvclass, vma)

Bases: object

get_ast()
get_methods()
get_source()
get_source_ext()
process(doAST=False)
process_method(num, doAST=False)
show_source()
class androguard.decompiler.dad.decompile.DvMachine(name)

Bases: object

get_class(class_name)
get_classes()
process()
process_and_show()
show_source()
class androguard.decompiler.dad.decompile.DvMethod(methanalysis)

Bases: object

get_ast()
get_source()
get_source_ext()
process(doAST=False)
show_source()
androguard.decompiler.dad.decompile.auto_vm(filename)
androguard.decompiler.dad.decompile.get_field_ast(field)
androguard.decompiler.dad.decompile.main()

androguard.decompiler.dad.graph module

class androguard.decompiler.dad.graph.GenInvokeRetName

Bases: object

last()
new()
set_to(ret)
class androguard.decompiler.dad.graph.Graph

Bases: object

add_catch_edge(e1, e2)
add_edge(e1, e2)
add_node(node)
all_preds(node)
all_sucs(node)
compute_rpo()

Number the nodes in reverse post order. An RPO traversal visit as many predecessors of a node as possible before visiting the node itself.

draw(name, dname, draw_branches=True)
get_ins_from_loc(loc)
get_node_from_loc(loc)
immediate_dominators()
number_ins()
post_order()

Return the nodes of the graph in post-order i.e we visit all the children of a node before visiting the node itself.

preds(node)
remove_ins(loc)
remove_node(node)
sucs(node)
androguard.decompiler.dad.graph.bfs(start)
androguard.decompiler.dad.graph.construct(start_block, vmap, exceptions)
androguard.decompiler.dad.graph.dom_lt(graph)

Dominator algorithm from Lengaeur-Tarjan

androguard.decompiler.dad.graph.make_node(graph, block, block_to_node, vmap, gen_ret)
androguard.decompiler.dad.graph.simplify(graph)

Simplify the CFG by merging/deleting statement nodes when possible: If statement B follows statement A and if B has no other predecessor besides A, then we can merge A and B into a new statement node. We also remove nodes which do nothing except redirecting the control flow (nodes which only contains a goto).

androguard.decompiler.dad.graph.split_if_nodes(graph)

Split IfNodes in two nodes, the first node is the header node, the second one is only composed of the jump condition.

androguard.decompiler.dad.instruction module

class androguard.decompiler.dad.instruction.ArrayExpression

Bases: androguard.decompiler.dad.instruction.IRForm

class androguard.decompiler.dad.instruction.ArrayLengthExpression(array)

Bases: androguard.decompiler.dad.instruction.ArrayExpression

get_type()
get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.ArrayLoadExpression(arg, index, _type)

Bases: androguard.decompiler.dad.instruction.ArrayExpression

get_type()
get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.ArrayStoreInstruction(rhs, array, index, _type)

Bases: androguard.decompiler.dad.instruction.IRForm

get_used_vars()
has_side_effect()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.AssignExpression(lhs, rhs)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_rhs()
get_used_vars()
has_side_effect()
is_call()
is_propagable()
remove_defined_var()
replace(old, new)
replace_lhs(new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.BaseClass(name, descriptor=None)

Bases: androguard.decompiler.dad.instruction.IRForm

is_const()
visit(visitor)
class androguard.decompiler.dad.instruction.BinaryCompExpression(op, arg1, arg2, _type)

Bases: androguard.decompiler.dad.instruction.BinaryExpression

visit(visitor)
class androguard.decompiler.dad.instruction.BinaryExpression(op, arg1, arg2, _type)

Bases: androguard.decompiler.dad.instruction.IRForm

get_used_vars()
has_side_effect()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.BinaryExpression2Addr(op, dest, arg, _type)

Bases: androguard.decompiler.dad.instruction.BinaryExpression

class androguard.decompiler.dad.instruction.BinaryExpressionLit(op, arg1, arg2)

Bases: androguard.decompiler.dad.instruction.BinaryExpression

class androguard.decompiler.dad.instruction.CastExpression(op, atype, arg)

Bases: androguard.decompiler.dad.instruction.UnaryExpression

get_type()
get_used_vars()
is_const()
visit(visitor)
class androguard.decompiler.dad.instruction.CheckCastExpression(arg, _type, descriptor=None)

Bases: androguard.decompiler.dad.instruction.IRForm

get_used_vars()
is_const()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.ConditionalExpression(op, arg1, arg2)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_used_vars()
is_cond()
neg()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.ConditionalZExpression(op, arg)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_used_vars()
is_cond()
neg()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.Constant(value, atype, int_value=None, descriptor=None)

Bases: androguard.decompiler.dad.instruction.IRForm

get_int_value()
get_type()
get_used_vars()
is_const()
visit(visitor)
class androguard.decompiler.dad.instruction.FillArrayExpression(reg, value)

Bases: androguard.decompiler.dad.instruction.ArrayExpression

get_rhs()
get_used_vars()
is_propagable()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.FilledArrayExpression(asize, atype, args)

Bases: androguard.decompiler.dad.instruction.ArrayExpression

get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.IRForm

Bases: object

get_lhs()
get_rhs()
get_type()
get_used_vars()
has_side_effect()
is_call()
is_cond()
is_const()
is_ident()
is_propagable()
remove_defined_var()
replace(old, new)
replace_lhs(new)
replace_var(old, new)
set_type(_type)
visit(visitor)
class androguard.decompiler.dad.instruction.InstanceExpression(arg, klass, ftype, name)

Bases: androguard.decompiler.dad.instruction.IRForm

get_type()
get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.InstanceInstruction(rhs, lhs, klass, atype, name)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_used_vars()
has_side_effect()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.InvokeDirectInstruction(clsname, name, base, rtype, ptype, args, triple)

Bases: androguard.decompiler.dad.instruction.InvokeInstruction

class androguard.decompiler.dad.instruction.InvokeInstruction(clsname, name, base, rtype, ptype, args, triple)

Bases: androguard.decompiler.dad.instruction.IRForm

get_type()
get_used_vars()
has_side_effect()
is_call()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.InvokeRangeInstruction(clsname, name, rtype, ptype, args, triple)

Bases: androguard.decompiler.dad.instruction.InvokeInstruction

class androguard.decompiler.dad.instruction.InvokeStaticInstruction(clsname, name, base, rtype, ptype, args, triple)

Bases: androguard.decompiler.dad.instruction.InvokeInstruction

get_used_vars()
class androguard.decompiler.dad.instruction.MonitorEnterExpression(ref)

Bases: androguard.decompiler.dad.instruction.RefExpression

visit(visitor)
class androguard.decompiler.dad.instruction.MonitorExitExpression(ref)

Bases: androguard.decompiler.dad.instruction.RefExpression

visit(visitor)
class androguard.decompiler.dad.instruction.MoveExceptionExpression(ref, _type)

Bases: androguard.decompiler.dad.instruction.RefExpression

get_lhs()
get_used_vars()
has_side_effect()
replace_lhs(new)
visit(visitor)
class androguard.decompiler.dad.instruction.MoveExpression(lhs, rhs)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_rhs()
get_used_vars()
has_side_effect()
is_call()
replace(old, new)
replace_lhs(new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.MoveResultExpression(lhs, rhs)

Bases: androguard.decompiler.dad.instruction.MoveExpression

has_side_effect()
is_propagable()
visit(visitor)
class androguard.decompiler.dad.instruction.NewArrayExpression(asize, atype)

Bases: androguard.decompiler.dad.instruction.ArrayExpression

get_used_vars()
is_propagable()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.NewInstance(ins_type)

Bases: androguard.decompiler.dad.instruction.IRForm

get_type()
get_used_vars()
replace(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.NopExpression

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_used_vars()
visit(visitor)
class androguard.decompiler.dad.instruction.Param(value, atype)

Bases: androguard.decompiler.dad.instruction.Variable

is_const()
visit(visitor)
class androguard.decompiler.dad.instruction.RefExpression(ref)

Bases: androguard.decompiler.dad.instruction.IRForm

get_used_vars()
is_propagable()
replace(old, new)
replace_var(old, new)
class androguard.decompiler.dad.instruction.ReturnInstruction(arg)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.StaticExpression(cls_name, field_type, field_name)

Bases: androguard.decompiler.dad.instruction.IRForm

get_type()
replace(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.StaticInstruction(rhs, klass, ftype, name)

Bases: androguard.decompiler.dad.instruction.IRForm

get_lhs()
get_used_vars()
has_side_effect()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.SwitchExpression(src, branch)

Bases: androguard.decompiler.dad.instruction.IRForm

get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.ThisParam(value, atype)

Bases: androguard.decompiler.dad.instruction.Param

visit(visitor)
class androguard.decompiler.dad.instruction.ThrowExpression(ref)

Bases: androguard.decompiler.dad.instruction.RefExpression

visit(visitor)
class androguard.decompiler.dad.instruction.UnaryExpression(op, arg, _type)

Bases: androguard.decompiler.dad.instruction.IRForm

get_type()
get_used_vars()
replace(old, new)
replace_var(old, new)
visit(visitor)
class androguard.decompiler.dad.instruction.Variable(value)

Bases: androguard.decompiler.dad.instruction.IRForm

get_used_vars()
is_ident()
value()
visit(visitor)
visit_decl(visitor)

androguard.decompiler.dad.node module

class androguard.decompiler.dad.node.Interval(head)

Bases: object

add_node(node)
compute_end(graph)
get_end()
get_head()
class androguard.decompiler.dad.node.LoopType

Bases: object

copy()
is_endless
is_posttest
is_pretest
class androguard.decompiler.dad.node.MakeProperties(name, bases, dct)

Bases: type

class androguard.decompiler.dad.node.Node(name)

Bases: object

copy_from(node)
get_end()
get_head()
update_attribute_with(n_map)
class androguard.decompiler.dad.node.NodeType

Bases: object

copy()
is_cond
is_return
is_stmt
is_switch
is_throw

androguard.decompiler.dad.opcode_ins module

class androguard.decompiler.dad.opcode_ins.Op

Bases: object

ADD = '+'
AND = '&'
CMP = 'cmp'
DIV = '/'
EQUAL = '=='
GEQUAL = '>='
GREATER = '>'
INTSHL = '<<'
INTSHR = '>>'
LEQUAL = '<='
LONGSHL = '<<'
LONGSHR = '>>'
LOWER = '<'
MOD = '%'
MUL = '*'
NEG = '-'
NEQUAL = '!='
NOT = '~'
OR = '|'
SUB = '-'
XOR = '^'
androguard.decompiler.dad.opcode_ins.adddouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.adddouble2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.addfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.addfloat2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.addint(ins, vmap)
androguard.decompiler.dad.opcode_ins.addint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.addintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.addintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.addlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.addlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.aget(ins, vmap)
androguard.decompiler.dad.opcode_ins.agetboolean(ins, vmap)
androguard.decompiler.dad.opcode_ins.agetbyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.agetchar(ins, vmap)
androguard.decompiler.dad.opcode_ins.agetobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.agetshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.agetwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.andint(ins, vmap)
androguard.decompiler.dad.opcode_ins.andint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.andintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.andintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.andlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.andlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.aput(ins, vmap)
androguard.decompiler.dad.opcode_ins.aputboolean(ins, vmap)
androguard.decompiler.dad.opcode_ins.aputbyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.aputchar(ins, vmap)
androguard.decompiler.dad.opcode_ins.aputobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.aputshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.aputwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.arraylength(ins, vmap)
androguard.decompiler.dad.opcode_ins.assign_binary_2addr_exp(ins, val_op, op_type, vmap)
androguard.decompiler.dad.opcode_ins.assign_binary_exp(ins, val_op, op_type, vmap)
androguard.decompiler.dad.opcode_ins.assign_cast_exp(val_a, val_b, val_op, op_type, vmap)
androguard.decompiler.dad.opcode_ins.assign_cmp(val_a, val_b, val_c, cmp_type, vmap)
androguard.decompiler.dad.opcode_ins.assign_const(dest_reg, cst, vmap)
androguard.decompiler.dad.opcode_ins.assign_lit(op_type, val_cst, val_a, val_b, vmap)
androguard.decompiler.dad.opcode_ins.checkcast(ins, vmap)
androguard.decompiler.dad.opcode_ins.cmpgdouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.cmpgfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.cmpldouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.cmplfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.cmplong(ins, vmap)
androguard.decompiler.dad.opcode_ins.const(ins, vmap)
androguard.decompiler.dad.opcode_ins.const16(ins, vmap)
androguard.decompiler.dad.opcode_ins.const4(ins, vmap)
androguard.decompiler.dad.opcode_ins.constclass(ins, vmap)
androguard.decompiler.dad.opcode_ins.consthigh16(ins, vmap)
androguard.decompiler.dad.opcode_ins.conststring(ins, vmap)
androguard.decompiler.dad.opcode_ins.conststringjumbo(ins, vmap)
androguard.decompiler.dad.opcode_ins.constwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.constwide16(ins, vmap)
androguard.decompiler.dad.opcode_ins.constwide32(ins, vmap)
androguard.decompiler.dad.opcode_ins.constwidehigh16(ins, vmap)
androguard.decompiler.dad.opcode_ins.divdouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.divdouble2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.divfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.divfloat2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.divint(ins, vmap)
androguard.decompiler.dad.opcode_ins.divint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.divintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.divintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.divlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.divlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.doubletofloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.doubletoint(ins, vmap)
androguard.decompiler.dad.opcode_ins.doubletolong(ins, vmap)
androguard.decompiler.dad.opcode_ins.fillarraydata(ins, vmap, value)
androguard.decompiler.dad.opcode_ins.fillarraydatapayload(ins, vmap)
androguard.decompiler.dad.opcode_ins.fillednewarray(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.fillednewarrayrange(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.floattodouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.floattoint(ins, vmap)
androguard.decompiler.dad.opcode_ins.floattolong(ins, vmap)
androguard.decompiler.dad.opcode_ins.get_args(vmap, param_type, largs)
androguard.decompiler.dad.opcode_ins.get_variables(vmap, *variables)
androguard.decompiler.dad.opcode_ins.goto(ins, vmap)
androguard.decompiler.dad.opcode_ins.goto16(ins, vmap)
androguard.decompiler.dad.opcode_ins.goto32(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifeq(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifeqz(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifge(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifgez(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifgt(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifgtz(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifle(ins, vmap)
androguard.decompiler.dad.opcode_ins.iflez(ins, vmap)
androguard.decompiler.dad.opcode_ins.iflt(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifltz(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifne(ins, vmap)
androguard.decompiler.dad.opcode_ins.ifnez(ins, vmap)
androguard.decompiler.dad.opcode_ins.iget(ins, vmap)
androguard.decompiler.dad.opcode_ins.igetboolean(ins, vmap)
androguard.decompiler.dad.opcode_ins.igetbyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.igetchar(ins, vmap)
androguard.decompiler.dad.opcode_ins.igetobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.igetshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.igetwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.instanceof(ins, vmap)
androguard.decompiler.dad.opcode_ins.inttobyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.inttochar(ins, vmap)
androguard.decompiler.dad.opcode_ins.inttodouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.inttofloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.inttolong(ins, vmap)
androguard.decompiler.dad.opcode_ins.inttoshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.invokedirect(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokedirectrange(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokeinterface(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokeinterfacerange(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokestatic(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokestaticrange(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokesuper(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokesuperrange(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokevirtual(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.invokevirtualrange(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.iput(ins, vmap)
androguard.decompiler.dad.opcode_ins.iputboolean(ins, vmap)
androguard.decompiler.dad.opcode_ins.iputbyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.iputchar(ins, vmap)
androguard.decompiler.dad.opcode_ins.iputobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.iputshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.iputwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.load_array_exp(val_a, val_b, val_c, ar_type, vmap)
androguard.decompiler.dad.opcode_ins.longtodouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.longtofloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.longtoint(ins, vmap)
androguard.decompiler.dad.opcode_ins.monitorenter(ins, vmap)
androguard.decompiler.dad.opcode_ins.monitorexit(ins, vmap)
androguard.decompiler.dad.opcode_ins.move(ins, vmap)
androguard.decompiler.dad.opcode_ins.move16(ins, vmap)
androguard.decompiler.dad.opcode_ins.moveexception(ins, vmap, _type)
androguard.decompiler.dad.opcode_ins.movefrom16(ins, vmap)
androguard.decompiler.dad.opcode_ins.moveobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.moveobject16(ins, vmap)
androguard.decompiler.dad.opcode_ins.moveobjectfrom16(ins, vmap)
androguard.decompiler.dad.opcode_ins.moveresult(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.moveresultobject(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.moveresultwide(ins, vmap, ret)
androguard.decompiler.dad.opcode_ins.movewide(ins, vmap)
androguard.decompiler.dad.opcode_ins.movewide16(ins, vmap)
androguard.decompiler.dad.opcode_ins.movewidefrom16(ins, vmap)
androguard.decompiler.dad.opcode_ins.muldouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.muldouble2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.mulfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.mulfloat2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.mulint(ins, vmap)
androguard.decompiler.dad.opcode_ins.mulint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.mulintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.mulintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.mullong(ins, vmap)
androguard.decompiler.dad.opcode_ins.mullong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.negdouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.negfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.negint(ins, vmap)
androguard.decompiler.dad.opcode_ins.neglong(ins, vmap)
androguard.decompiler.dad.opcode_ins.newarray(ins, vmap)
androguard.decompiler.dad.opcode_ins.newinstance(ins, vmap)
androguard.decompiler.dad.opcode_ins.nop(ins, vmap)
androguard.decompiler.dad.opcode_ins.notint(ins, vmap)
androguard.decompiler.dad.opcode_ins.notlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.orint(ins, vmap)
androguard.decompiler.dad.opcode_ins.orint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.orintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.orintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.orlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.orlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.packedswitch(ins, vmap)
androguard.decompiler.dad.opcode_ins.remdouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.remdouble2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.remfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.remfloat2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.remint(ins, vmap)
androguard.decompiler.dad.opcode_ins.remint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.remintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.remintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.remlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.remlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.return_reg(ins, vmap)
androguard.decompiler.dad.opcode_ins.returnobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.returnvoid(ins, vmap)
androguard.decompiler.dad.opcode_ins.returnwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.rsubint(ins, vmap)
androguard.decompiler.dad.opcode_ins.rsubintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.sget(ins, vmap)
androguard.decompiler.dad.opcode_ins.sgetboolean(ins, vmap)
androguard.decompiler.dad.opcode_ins.sgetbyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.sgetchar(ins, vmap)
androguard.decompiler.dad.opcode_ins.sgetobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.sgetshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.sgetwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.shlint(ins, vmap)
androguard.decompiler.dad.opcode_ins.shlint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.shlintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.shllong(ins, vmap)
androguard.decompiler.dad.opcode_ins.shllong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.shrint(ins, vmap)
androguard.decompiler.dad.opcode_ins.shrint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.shrintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.shrlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.shrlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.sparseswitch(ins, vmap)
androguard.decompiler.dad.opcode_ins.sput(ins, vmap)
androguard.decompiler.dad.opcode_ins.sputboolean(ins, vmap)
androguard.decompiler.dad.opcode_ins.sputbyte(ins, vmap)
androguard.decompiler.dad.opcode_ins.sputchar(ins, vmap)
androguard.decompiler.dad.opcode_ins.sputobject(ins, vmap)
androguard.decompiler.dad.opcode_ins.sputshort(ins, vmap)
androguard.decompiler.dad.opcode_ins.sputwide(ins, vmap)
androguard.decompiler.dad.opcode_ins.store_array_inst(val_a, val_b, val_c, ar_type, vmap)
androguard.decompiler.dad.opcode_ins.subdouble(ins, vmap)
androguard.decompiler.dad.opcode_ins.subdouble2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.subfloat(ins, vmap)
androguard.decompiler.dad.opcode_ins.subfloat2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.subint(ins, vmap)
androguard.decompiler.dad.opcode_ins.subint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.sublong(ins, vmap)
androguard.decompiler.dad.opcode_ins.sublong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.throw(ins, vmap)
androguard.decompiler.dad.opcode_ins.ushrint(ins, vmap)
androguard.decompiler.dad.opcode_ins.ushrint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.ushrintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.ushrlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.ushrlong2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.xorint(ins, vmap)
androguard.decompiler.dad.opcode_ins.xorint2addr(ins, vmap)
androguard.decompiler.dad.opcode_ins.xorintlit16(ins, vmap)
androguard.decompiler.dad.opcode_ins.xorintlit8(ins, vmap)
androguard.decompiler.dad.opcode_ins.xorlong(ins, vmap)
androguard.decompiler.dad.opcode_ins.xorlong2addr(ins, vmap)

androguard.decompiler.dad.util module

androguard.decompiler.dad.util.build_path(graph, node1, node2, path=None)

Build the path from node1 to node2. The path is composed of all the nodes between node1 and node2, node1 excluded. Although if there is a loop starting from node1, it will be included in the path.

androguard.decompiler.dad.util.common_dom(idom, cur, pred)
androguard.decompiler.dad.util.create_png(cls_name, meth_name, graph, dir_name='graphs2')
androguard.decompiler.dad.util.get_access_class(access)
androguard.decompiler.dad.util.get_access_field(access)
androguard.decompiler.dad.util.get_access_method(access)
androguard.decompiler.dad.util.get_params_type(descriptor)

Return the parameters type of a descriptor (e.g (IC)V)

androguard.decompiler.dad.util.get_type(atype, size=None)

Retrieve the java type of a descriptor (e.g : I)

androguard.decompiler.dad.util.get_type_size(param)

Return the number of register needed by the type @param

androguard.decompiler.dad.util.merge_inner(clsdict)

Merge the inner class(es) of a class: e.g class A { … } class A$foo{ … } class A$bar{ … } ==> class A { class foo{…} class bar{…} … }

androguard.decompiler.dad.writer module

class androguard.decompiler.dad.writer.Writer(graph, method)

Bases: object

dec_ind(i=1)
end_ins()
inc_ind(i=1)
space()
str_ext()
visit_alength(array)
visit_aload(array, index)
visit_assign(lhs, rhs)
visit_astore(array, index, rhs, data=None)
visit_base_class(cls, data=None)
visit_binary_expression(op, arg1, arg2)
visit_cast(op, arg)
visit_catch_node(catch_node)
visit_check_cast(arg, atype)
visit_cond_expression(op, arg1, arg2)
visit_cond_node(cond)
visit_condz_expression(op, arg)
visit_constant(cst)
visit_decl(var)
visit_fill_array(array, value)
visit_filled_new_array(atype, size, args)
visit_get_instance(arg, name, data=None)
visit_get_static(cls, name)
visit_ins(ins)
visit_invoke(name, base, ptype, rtype, args, invokeInstr)
visit_loop_node(loop)
visit_monitor_enter(ref)
visit_monitor_exit(ref)
visit_move(lhs, rhs)
visit_move_exception(var, data=None)
visit_move_result(lhs, rhs)
visit_new(atype, data=None)
visit_new_array(atype, size)
visit_node(node)
visit_nop()
visit_param(param, data=None)
visit_put_instance(lhs, name, rhs, data=None)
visit_put_static(cls, name, rhs)
visit_return(arg)
visit_return_node(ret)
visit_return_void()
visit_short_circuit_condition(nnot, aand, cond1, cond2)
visit_statement_node(stmt)
visit_super()
visit_switch(arg)
visit_switch_node(switch)
visit_this()
visit_throw(ref)
visit_throw_node(throw)
visit_try_node(try_node)
visit_unary_expression(op, arg)
visit_variable(var)
write(s, data=None)
write_ext(t)
write_ind()
write_ind_visit_end(lhs, s, rhs=None, data=None)
write_ind_visit_end_ext(lhs, before, s, after, rhs=None, data=None, subsection='UNKNOWN_SUBSECTION')
write_inplace_if_possible(lhs, rhs)
write_method()
androguard.decompiler.dad.writer.string(s)

Convert a string to a escaped ASCII representation including quotation marks :param s: a string :return: ASCII escaped string

Module contents