Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Classes | Functions | Variables
miasm2.arch.arm.disasm Namespace Reference

Classes

class  dis_armb
 
class  dis_arml
 
class  dis_armtb
 
class  dis_armtl
 

Functions

def cb_arm_fix_call
 
def cb_arm_disasm
 

Variables

list cb_arm_funcs = [cb_arm_fix_call]
 

Function Documentation

def miasm2.arch.arm.disasm.cb_arm_disasm (   mn,
  attrib,
  pool_bin,
  cur_bloc,
  offsets_to_dis,
  symbol_pool 
)

Definition at line 34 of file disasm.py.

34 
35 def cb_arm_disasm(mn, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool):
36  for func in cb_arm_funcs:
37  func(mn, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool)
38 
def miasm2.arch.arm.disasm.cb_arm_fix_call (   mn,
  attrib,
  pool_bin,
  cur_bloc,
  offsets_to_dis,
  symbol_pool 
)
for arm:
MOV        LR, PC
LDR        PC, [R5, 0x14]
* is a subcall *

Definition at line 6 of file disasm.py.

6 
7  mn, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool):
8  """
9  for arm:
10  MOV LR, PC
11  LDR PC, [R5, 0x14]
12  * is a subcall *
13 
14  """
15  if len(cur_bloc.lines) < 2:
16  return
17  l1 = cur_bloc.lines[-1]
18  l2 = cur_bloc.lines[-2]
19  if l1.name != "LDR":
20  return
21  if l2.name != "MOV":
22  return
23  # print cur_bloc
24  # print l1
25  if not l1.args[0] in mn.pc.values():
26  return
27  if not l2.args[1] in mn.pc.values():
28  return
29  cur_bloc.add_cst(l1.offset + 4, asm_constraint.c_next, symbol_pool)
30  offsets_to_dis.add(l1.offset + 4)

Variable Documentation

list miasm2.arch.arm.disasm.cb_arm_funcs = [cb_arm_fix_call]

Definition at line 31 of file disasm.py.