Module analysis
[hide private]
[frames] | no frames]

Module analysis

source code

Classes [hide private]
  ContextField
  ContextMethod
  ExternalFM
  ToString
  BreakBlock
  DVMBreakBlock
  Stack
  StackTraces
  ReturnValues
  ExternalMethod
  JVMBasicBlock
  JVMBreakBlock
  DVMBasicBlock
  Path
  TaintedVariable
  TaintedVariables
  PathI
  TaintedInteger
  TaintedIntegers
  PathP
  TaintedPackage
  TaintedPackages
  BasicBlocks
  MethodAnalysis
This class analyses in details a method of a class/dex file
  VMAnalysis
This class analyses a class file or a dex file
Functions [hide private]
 
push_objectref(_vm, ins, special, stack, res, ret_v) source code
 
push_objectref_l(_vm, ins, special, stack, res, ret_v) source code
 
push_objectref_l_i(_vm, ins, special, stack, res, ret_v) source code
 
pop_objectref(_vm, ins, special, stack, res, ret_v) source code
 
multi_pop_objectref_i(_vm, ins, special, stack, res, ret_v) source code
 
push_objectres(_vm, ins, special, stack, res, ret_v) source code
 
push_integer_i(_vm, ins, special, stack, res, ret_v) source code
 
push_integer_d(_vm, ins, special, stack, res, ret_v) source code
 
push_float_d(_vm, ins, special, stack, res, ret_v) source code
 
putfield(_vm, ins, special, stack, res, ret_v) source code
 
putstatic(_vm, ins, special, stack, res, ret_v) source code
 
getfield(_vm, ins, special, stack, res, ret_v) source code
 
getstatic(_vm, ins, special, stack, res, ret_v) source code
 
new(_vm, ins, special, stack, res, ret_v) source code
 
dup(_vm, ins, special, stack, res, ret_v) source code
 
dup2(_vm, ins, special, stack, res, ret_v) source code
 
ldc(_vm, ins, special, stack, res, ret_v) source code
 
invoke(_vm, ins, special, stack, res, ret_v) source code
 
set_arrayref(_vm, ins, special, stack, res, ret_v) source code
 
set_objectref(_vm, ins, special, stack, res, ret_v) source code
 
set_objectref_i(_vm, ins, special, stack, res, ret_v) source code
 
swap(_vm, ins, special, stack, res, ret_v) source code
 
calc_nb(info) source code
 
show_PathP(paths) source code
Variables [hide private]
  MATH_DVM_RE = [(re.compile(r'or.'), '|'), (re.compile(r'div.')...
  DVM_TOSTRING = {'G': ['.get'], 'I': ['invoke.'], 'O': ['or.', ...
  FIELDS = {'getfield': 'R', 'getstatic': 'R', 'putfield': 'W', ...
  METHODS = ['invokestatic', 'invokevirtual', 'invokespecial']
  JVM_TOSTRING = {'G': ['get.'], 'I': ['invoke.'], 'O': ['.shl',...
  BREAK_JVM_OPCODES_RE = [re.compile(r'invoke.'), re.compile(r'p...
  INSTRUCTIONS_ACTIONS = {'aaload': [{<function pop_objectref at...
  DVM_FIELDS_ACCESS = {'iget': 'R', 'iget-boolean': 'R', 'iget-b...
  TAINTED_LOCAL_VARIABLE = 0
  TAINTED_FIELD = 1
  TAINTED_STRING = 2
  TAINTED_PACKAGE_CREATE = 0
  TAINTED_PACKAGE_CALL = 1
  TAINTED_PACKAGE = {0: 'C', 1: 'M'}
  SIGNATURE_L0_0 = 'L0_0'
  SIGNATURE_L0_1 = 'L0_1'
  SIGNATURE_L0_2 = 'L0_2'
  SIGNATURE_L0_3 = 'L0_3'
  SIGNATURE_L0_4 = 'L0_4'
  SIGNATURE_L0_5 = 'L0_5'
  SIGNATURE_L0_6 = 'L0_6'
  SIGNATURE_L0_0_L1 = 'L0_0:L1'
  SIGNATURE_L0_1_L1 = 'L0_1:L1'
  SIGNATURE_L0_2_L1 = 'L0_2:L1'
  SIGNATURE_L0_3_L1 = 'L0_3:L1'
  SIGNATURE_L0_4_L1 = 'L0_4:L1'
  SIGNATURE_L0_5_L1 = 'L0_5:L1'
  SIGNATURE_L0_0_L2 = 'L0_0:L2'
  SIGNATURE_L0_0_L3 = 'L0_0:L3'
  SIGNATURES = {'L0_0': {'type': 0}, 'L0_1': {'type': 1}, 'L0_2'...
  __package__ = None
  i = 'if.'
Variables Details [hide private]

MATH_DVM_RE

Value:
[(re.compile(r'or.'), '|'),
 (re.compile(r'div.'), '/'),
 (re.compile(r'and.'), '&'),
 (re.compile(r'mul.'), '*'),
 (re.compile(r'shl.'), '<<'),
 (re.compile(r'sub.'), '-'),
 (re.compile(r'add.'), '+'),
 (re.compile(r'shr.'), '>>'),
...

DVM_TOSTRING

Value:
{'G': ['.get'],
 'I': ['invoke.'],
 'O': ['or.',
       'div.',
       'and.',
       'mul.',
       'shl.',
       'sub.',
...

FIELDS

Value:
{'getfield': 'R', 'getstatic': 'R', 'putfield': 'W', 'putstatic': 'W'}

JVM_TOSTRING

Value:
{'G': ['get.'],
 'I': ['invoke.'],
 'O': ['.shl',
       '.xor',
       '.shr',
       '.mul',
       '.div',
       '.sub',
...

BREAK_JVM_OPCODES_RE

Value:
[re.compile(r'invoke.'),
 re.compile(r'put.'),
 re.compile(r'.store'),
 re.compile(r'iinc'),
 re.compile(r'pop'),
 re.compile(r'.return'),
 re.compile(r'if.')]

INSTRUCTIONS_ACTIONS

Value:
{"aaload": [{pop_objectref: None}, {pop_objectref: None}, {push_object\
ref: 0}], "aastore": [{set_arrayref: None}], "aconst_null": [{push_obj\
ectref: "null"}], "aload": [{push_objectref_l_i: None}], "aload_0": [{\
push_objectref_l: 0}], "aload_1": [{push_objectref_l: 1}], "aload_2": \
[{push_objectref_l: 2}], "aload_3": [{push_objectref_l: 3}], "anewarra\
y": [{pop_objectref: None}, {push_objectref: [1, "ANEWARRAY"]}], "aret\
urn": [{pop_objectref: None}], "arraylength": [{pop_objectref: None}, \
{push_objectres: [1, 'LENGTH']}], "astore": [{set_objectref_i: None}],\
...

DVM_FIELDS_ACCESS

Value:
{'iget': 'R',
 'iget-boolean': 'R',
 'iget-byte': 'R',
 'iget-char': 'R',
 'iget-object': 'R',
 'iget-short': 'R',
 'iget-wide': 'R',
 'iput': 'W',
...

SIGNATURES

Value:
{'L0_0': {'type': 0},
 'L0_1': {'type': 1},
 'L0_2': {'arguments': ['Landroid'], 'type': 2},
 'L0_3': {'arguments': ['Ljava'], 'type': 2},
 'L0_4': {'arguments': ['Landroid', 'Ljava'], 'type': 2},
 'L0_5': {'arguments': ['Landroid'], 'type': 3},
 'L0_6': {'arguments': ['Ljava'], 'type': 3}}