-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathfunction.py
32 lines (24 loc) · 1.14 KB
/
function.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from . import base
from .. import collectors
import idautils
class EmptyFunctionInstance(base.BaseInstance):
type = 'empty_function'
def __init__(self, *args, **kwargs):
super(EmptyFunctionInstance, self).__init__(*args, **kwargs)
self.annotations |= {collectors.annotations.PrototypeAnnotation}
class FunctionInstance(EmptyFunctionInstance):
type = 'function'
def __init__(self, *args, **kwargs):
super(FunctionInstance, self).__init__(*args, **kwargs)
self.vectors |= {collectors.vectors.InstructionHashVector,
collectors.vectors.IdentityHashVector,
collectors.vectors.AssemblyHashVector,
collectors.vectors.MnemonicHashVector,
collectors.vectors.MnemonicHistVector,
collectors.vectors.BasicBlockSizeHistVector,
collectors.vectors.BasicBlockGraphVector}
self.annotations |= {collectors.annotations.AssemblyAnnotation}
def size(self):
"""return the overall size of function by adding sizes of all indevidual
chunks"""
return sum([chunk[1] - chunk[0] for chunk in idautils.Chunks(self.offset)])