Skip to content

Commit ae1e45b

Browse files
committed
Connect BasicBlock to collectors
1 parent f5a3478 commit ae1e45b

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

idaplugin/rematch/collectors/vectors/__init__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from .assembly_hash import AssemblyHashVector
66
from .mnemonic_hash import MnemonicHashVector
77
from .mnemonic_hist import MnemonicHistVector
8+
from .basicblock import BasicBlockVector
89

910

1011
__all__ = ["Vector", "InstructionHashVector", "IdentityHashVector",
1112
"NameHashVector", "AssemblyHashVector", "MnemonicHashVector",
12-
"MnemonicHistVector"]
13+
"MnemonicHistVector", "BasicBlockVector"]

idaplugin/rematch/collectors/vectors/basicblocks.py idaplugin/rematch/collectors/vectors/basicblock.py

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
import ida_gdl
22
import ida_funcs
33

4+
from . import vector
45

5-
class BasicBlocks(object):
6-
def __init__(self, offset):
7-
self.func = ida_funcs.get_func(offset)
6+
7+
class BasicBlockVector(vector.Vector):
8+
type = "basicblock"
9+
type_version = 0
10+
11+
def __init__(self, *args, **kwargs):
12+
super(BasicBlockVector, self).__init__(*args, **kwargs)
13+
14+
self.func = ida_funcs.get_func(self.offset)
815

916
self.nodes = filter(self.node_contained, ida_gdl.FlowChart(self.func))
1017
self.node_ids = map(lambda n: n.id, self.nodes)
1118

1219
self.seen_nodes = set()
1320

21+
def data(self, offset):
22+
del offset
23+
1424
# Assuming node #0 is the root node
15-
print(self.add_node(self.nodes[0]))
25+
serialized_bbs = self.add_node(self.nodes[0])
26+
print(serialized_bbs)
27+
return serialized_bbs
1628

1729
def add_node(self, node):
1830
if node.id in self.seen_nodes:

idaplugin/rematch/instances/function.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def __init__(self, *args, **kwargs):
2121
collectors.vectors.IdentityHashVector,
2222
collectors.vectors.AssemblyHashVector,
2323
collectors.vectors.MnemonicHashVector,
24-
collectors.vectors.MnemonicHistVector}
24+
collectors.vectors.MnemonicHistVector,
25+
collectors.vectors.BasicBlockVector}
2526
self.annotations |= {collectors.annotations.AssemblyAnnotation}
2627

2728
def size(self):

0 commit comments

Comments
 (0)