Genius 二进制文件函数特征提取的复现

0.原文

Scalable graph-based bug search for firmware images

https://github.com/qian-feng/Gencoding

1.Raw-feature-extractor 模块复现

1.1 生成 二进制文件的acfg。存储到.ida文件

The feature extraction is built on top of IDA-pro. We wrote the scripts based on ida-python and extract the attributed control flow graph. ``preprocessing_ida.py'' is the main program to extract the ACFG.

功能主要包括获取存储生成的ACFG路径、读取ida分析的文件等等。通过调用Get_func_cfgs_c这个函数获取二进制文件的ACFG集合,保存到 path/文件名.ida

# -*- coding: UTF-8 -*-
# preprocessing_ida.py


import sys from func import * from raw_graphs import * from idc import * import os import argparse import raw_graphs def print_obj(obj): "打印对象的所有属性" print(obj.__dict__) def parse_command(): parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument("--path", type=str, help="The directory where to store the generated .ida file") args = parser.parse_args() return args if __name__ == '__main__': #print str(sys.argv) #['raw-feature-extractor/preprocessing_ida.py'] #print str(idc.ARGV) #['raw-feature-extractor/preprocessing_ida.py', '--path', 'C:\\Program1\\pycharmproject\\Genius3\\new'] #print idc.ARGV[2] #print type(idc.ARGV[2]) args = parse_command() #path = args.path path = idc.ARGV[2] analysis_flags = idc.GetShortPrm(idc.INF_START_AF) analysis_flags &= ~idc.AF_IMMOFF # turn off "automatically make offset" heuristic idc.SetShortPrm(idc.INF_START_AF, analysis_flags) idaapi.autoWait() cfgs = get_func_cfgs_c(FirstSeg()) binary_name = idc.GetInputFile() + '.ida' print path print binary_name fullpath = os.path.join(path, binary_name) pickle.dump(cfgs, open(fullpath,'w')) #print binary_name fr = open(fullpath,'r') data1 = pickle.load(fr) #print_obj(data1) print "end" #idc.Exit(0)

 

Get_func_cfgs_c定义在func.py。这里只截取一部分代码。

for funcea in Functions(SegStart(ea)): 这句代码功能是从起始位置,遍历所有的函数。(https://blog.csdn.net/weixin_39683163/article/details/110910148

 

def get_func_cfgs_c(ea):
    # type: (object) -> object
    binary_name = idc.GetInputFile()
    raw_cfgs = raw_graphs(binary_name)
    externs_eas, ea_externs = processpltSegs()
    i = 0
    for funcea in Functions(SegStart(ea)):
        funcname = get_unified_funcname(funcea)
        func = get_func(funcea)
        print i
        i += 1
        icfg = cfg.getCfg(func, externs_eas, ea_externs)
        func_f = get_discoverRe_feature(func, icfg[0])
        raw_g = raw_graph(funcname, icfg, func_f) #生成一个rawcfg。raw_graph是一个python class,定义在 raw_graph.py
        raw_cfgs.append(raw_g) # raw_graphs 是另一个python class,存储raw_graph的list。定义在 raw_graph.py
        print_obj(raw_g)
        #print(raw_g) 由于raw_graph、raw_graphs都是class,直接print只会打印<raw_graphs.raw_graphs instance at 0x09888FD0>,不能打印对象的属性。    #https://blog.51cto.com/steed/2046408 print_obj、    print(obj.__dict__)
    return raw_cfgs

 

通过添加打印信息,可知每一个函数的acfg的格式: <raw_graphs.raw_graph instance at 0x09958B48> 。即存在raw_graphs 这个class中的,raw_graph class instance。直接printinstance,看不到实例中的属性具体的值

  

 raw_graph和raw_graphs的定义在raw_graph.py。这里只截取一部分。

class raw_graph:
    def __init__(self, funcname, g, func_f):
        #print "create"
        self.funcname = funcname
        self.old_g = g[0]
        self.g = nx.DiGraph()
        self.entry = g[1]
        self.fun_features = func_f
        self.attributing()
class raw_graphs: #创建空的list,然后存储raw_graphs类的instance
    def __init__(self, binary_name):
        self.binary_name = binary_name
        self.raw_graph_list = []

    def append(self, raw_g):
        self.raw_graph_list.append(raw_g)

    def __len__(self):
        return len(self.raw_graph_list)

 

 1.2 读取保存的Ida文件内容

代码中,通过pickle.dump存储得到的raw_graphs,存储到.ida文件。首先尝试直接pickle.load读取内容

    fr = open(fullpath,'rb')
    data1 = pickle.load(fr)
    print(data1)
报错
  File "raw-feature-extractor/preprocessing_ida.py", line 40, in <module>
    data1 = pickle.load(fr)  #ImportError: No module named   raw_graphs
ImportError: No module named raw_graphs

解决:

dump和load时应该采用同样的格式。如w对应r,wb对应rb。同时pickle存储时会把class的信息也存到文件中,所以load时需要再import  对应的class,或者在同一目录下load

 

pickle.load,直接print,格式为 <raw_graphs.raw_graph instance at 0x09958B48>,还是看不到实例中的属性具体的值

尝试直接肉眼读pickle存储的.ida文件,很难看懂。参考 https://docs.python.org/3/library/pickle.html   https://www.cnblogs.com/tkqasn/p/6005025.html pickle和json的区别    json人类可读,而pickle不是人类可读的。

 

 由于pickle无法直接肉眼读取,尝试打印raw_class 的instance的属性值。print无法打印具体的class instance的值,只能打印<raw_graphs.raw_graph instance at 0x09958B48> 这种格式的信息,没有办法读

这里参考 https://blog.51cto.com/steed/2046408,使用dict读取class instance的值

 可以看到成功的打印了人类可以读懂的内容。包括acfg的具体值。

def print_obj(obj): 
  "打印对象的所有属性" print(obj.__dict__)
print_obj(raw_graphs)
{'raw_graph_list': [<raw_graphs.raw_graph instance at 0x097005A8>, <raw_graphs.raw_graph instance at 0x09872918>, <raw_graphs.raw_graph instance at 0x0A202760>, <raw_graphs.raw_graph instance at 0x0A202558>, <raw_graphs.raw_graph instance at 0x0A202B20>, <raw_graphs.raw_graph instance at 0x0A2023F0>, <raw_graphs.raw_graph instance at 0x0A2024E0>, <raw_graphs.raw_graph instance at 0x0A202AD0>, <raw_graphs.raw_graph instance at 0x0A127328>, <raw_graphs.raw_graph instance at 0x0A127D78>, <raw_graphs.raw_graph instance at 0x0A127968>,
<raw_graphs.raw_graph instance at 0x0A127300>, <raw_graphs.raw_graph instance at 0x0A127C38>, <raw_graphs.raw_graph instance at 0x0A127080>, <raw_graphs.raw_graph instance at 0x0A1AE260>, <raw_graphs.raw_graph instance at 0x0A1AEFD0>, <raw_graphs.raw_graph instance at 0x0A1AEDF0>, <raw_graphs.raw_graph instance at 0x0A1AE670>, <raw_graphs.raw_graph instance at 0x0A1AE0F8>, <raw_graphs.raw_graph instance at 0x0A1AE8F0>, <raw_graphs.raw_graph instance at 0x0A1AE2B0>, <raw_graphs.raw_graph instance at 0x0A251C10>, <raw_graphs.raw_graph instance at 0x0A251EB8>,
<raw_graphs.raw_graph instance at 0x0A251738>, <raw_graphs.raw_graph instance at 0x0A251850>, <raw_graphs.raw_graph instance at 0x0A2514E0>, <raw_graphs.raw_graph instance at 0x0A2519B8>, <raw_graphs.raw_graph instance at 0x0A251648>, <raw_graphs.raw_graph instance at 0x0A1424B8>, <raw_graphs.raw_graph instance at 0x0A142968>, <raw_graphs.raw_graph instance at 0x0A1425F8>, <raw_graphs.raw_graph instance at 0x0A142198>, <raw_graphs.raw_graph instance at 0x0A142300>, <raw_graphs.raw_graph instance at 0x0A142A08>, <raw_graphs.raw_graph instance at 0x0A11C328>,
<raw_graphs.raw_graph instance at 0x0A11CFD0>, <raw_graphs.raw_graph instance at 0x0A11C968>, <raw_graphs.raw_graph instance at 0x0A11C8A0>, <raw_graphs.raw_graph instance at 0x0A11C530>, <raw_graphs.raw_graph instance at 0x0A11C440>, <raw_graphs.raw_graph instance at 0x0A11CE18>, <raw_graphs.raw_graph instance at 0x0A126148>, <raw_graphs.raw_graph instance at 0x0A126BC0>, <raw_graphs.raw_graph instance at 0x0A126F80>, <raw_graphs.raw_graph instance at 0x0A126940>, <raw_graphs.raw_graph instance at 0x0A126080>, <raw_graphs.raw_graph instance at 0x0A1260D


print_obj(raw_g)
{'entry': 0, 'fun_features': [0, 0, 0, 0, 2, 1, 8, 3, 0.0, [], [42948, 102400]], 'old_g': <networkx.classes.digraph.DiGraph object at 0x085E8AD0>, 'g': <networkx.classes.digraph.DiGraph object at 0x0860DD70>, 'funcname': 'open'}

 

{'entry': 0, 'fun_features': [0, 0, 0, 0, 2, 1, 8, 3, 0.0, [], [42948, 102400]], 'old_g': <networkx.classes.digraph.DiGraph object at 0x085E8AD0>, 'g': <networkx.classes.digraph.DiGraph object at 0x0860DD70>, 'funcname': 'open'}
和raw_graph class定义一一对应: funcname、old_g、gentry、fun_feature(即论文Table one 定义的ACFG的属性)
class raw_graph:
def __init__(self, funcname, g, func_f):
#print "create"
self.funcname = funcname
self.old_g = g[0]
self.g = nx.DiGraph()
self.entry = g[1]
self.fun_features = func_f
self.attributing()

我们主要关心fun_features中的各个值的含义。通过discovRe.py中的函数实现。在ptycharm中按ctrl,可以跳转到对应的统计函数

def get_discoverRe_feature(func, icfg):
    start = func.startEA
    end = func.endEA
    features = []
    FunctionCalls = getFuncCalls(func)
    #1
    features.append(FunctionCalls)
    LogicInstr = getLogicInsts(func)
    #2
    features.append(LogicInstr)
    Transfer = getTransferInsts(func)
    #3
    features.append(Transfer)
    Locals = getLocalVariables(func)
    #4
    features.append(Locals)
    BB = getBasicBlocks(func)
    #5
    features.append(BB)
    Edges = len(icfg.edges())
    #6
    features.append(Edges)
    Incoming = getIncommingCalls(func)
    #7
    features.append(Incoming)
    #8
    Instrs = getIntrs(func)
    features.append(Instrs)
    between = retrieveGP(icfg)
    #9
    features.append(between)

    strings, consts = getfunc_consts(func)
    features.append(strings)
    features.append(consts)
    return features

 按顺序为 

#1 function calls(本函数的函数调用指令(call jal jalr)数量)。。注意arm中没有这些指令

#2 logic instructions ,本函数的逻辑运算指令数量。如and、or的数量

#3 TransferIns 转移指令(如jmp arm中为mov)数量

#4 LocalVariables 局部变量数量

#5 BB basicblocks数量

#6 Edges icfg edges数量。icfg是另一篇论文dicovRe中的特征,这里暂时不管

#7 IncommingCalls,调用本函数的指令数量

#8 Intrs 指令数量

#9 between 结构特征中的betweeness。

nx.betweenness_centrality(G) 可以计算出每个node的betweeness

 

#10 strings 字符串

#11 consts  常量

问题是,这些特征是函数界别的。且betweeness应该是每个节点的betness,nx.betweenness_centrality(G) 返回值是list,为啥现在只显示是一个小数?

去看了源代码,在def betweeness(g):中计算确实是list,但是返回前做了计算转换为float,将基本块级别的betweeness转化为函数级别的betweeness。暂时就这样,以后有需求再改

def betweeness(g):
    #pdb.set_trace()
    betweenness = nx.betweenness_centrality(g)
    #print betweenness
    return betweenness
def retrieveGP(g):
bf = betweeness(g)
#close = closeness_centrality(g)
#bf_sim =
#close_sim =
x = sorted(bf.values())
value = sum(x)/len(x)
return round(value,5)

 

通过读源码发现,基本块级别的信息存在ACFG-g。

 

1.3 输出ACFG

1.3.1 概述

又看了代码。'old_g': <networkx.classes.digraph.DiGraph object at 0x085E8AD0>, 'g': <networkx.classes.digraph.DiGraph object at 0x0860DD70>

g是raw_graph中通过attributing()函数绘制的,也就是说其实论文中用到的特征并不是fun_features,而是 'g'。即g才是acfg,fun_features只是一个统计量,可以用于了解函数,但是没有其他用处

'g': <networkx.classes.digraph.DiGraph object at 0x0860DD70>   G = nx.DiGraph()          # 无多重边有向图

 

下一步工作是打印acfg,以及获取acfg中的信息。

需要明白,怎么访问python class  直接用 " . "

https://www.cnblogs.com/huangqihui/p/9355308.html

    testpath="C:\Program1\pycharmproject\Genius3/acfgs/hpcenter.ida"
    fr = open(fullpath,'r')
    data1 = pickle.load(fr)
    print(type(data1)) #<type 'instance'>
    print(data1.raw_graph_list[0])

<type 'instance'>

<raw_graphs.raw_graph instance at 0x0902F7D8>

这样可以直接读取pickle dump保存的ida文件,不用每次都打开ida((实际上暂时有些问题,先不管

 

    print(data1.raw_graph_list[0].g)
这样打印不出来networkx的digraph。

 

先选择一个函数,选sub_166c4。

393

{'entry': 0, 'fun_features': [0, 0, 0, 0, 35, 53, 0, 183, 0.0601, [], [12, 1, 1, 0, 223, 76, 1, 48, 9, 0, 4294967295L, 4294967295L, 1, 1, 1, 1, 0, 0, 4294967294L, 0, 1, 0, 10, 3, 12]], 'old_g': <networkx.classes.digraph.DiGraph object at 0x08DA7AB0>, 'g': <networkx.classes.digraph.DiGraph object at 0x08DA7A30>, 'funcname': 'sub_166C4'}

    testpath="C:\Program1\pycharmproject\Genius3/acfgs/hpcenter.ida"
    fr = open(fullpath,'r')
    data1 = pickle.load(fr)
    print(type(data1)) #<type 'instance'>
    print(data1.raw_graph_list[393].__dict__)
    print(data1.raw_graph_list[393].g)
    print(data1.raw_graph_list[393].g.nodes())
    #print_obj(data1)
    #print cfgs.raw_graph_list[0]
    #idc.Exit(0)

输出:
<type 'instance'>
{'entry': 0, 'fun_features': [0, 0, 0, 0, 35, 53, 0, 183, 0.0601, [], [12, 1, 1, 0, 223, 76, 1, 48, 9, 0, 4294967295L, 4294967295L, 1, 1, 1, 1, 0, 0, 4294967294L, 0, 1, 0, 10, 3, 12]], 'old_g': <networkx.classes.digraph.DiGraph object at 0x0A01D730>, 'g': <networkx.classes.digraph.DiGraph object at 0x0A024E50>, 'funcname': 'sub_166C4'}

[0, 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, 33, 34]

ida中CFG

 

1.3.2 直接读取.ida文件

接下来要做到是怎样直接读pickle dump的.ida文件,不用每次都打开ida

 

写一个read_ida脚本,注意放在相同路径下(或通过其他方式导入相关module)

 

 

# -*- coding: UTF-8 -*-
import sys

def print_obj(obj):
"打印对象的所有属性"
print(obj.__dict__)

import pickle

if __name__ == '__main__':
testpath = "C:\Program1\pycharmproject\Genius3/acfgs/hpcenter.ida"
fr = open(testpath, 'r')
data1 = pickle.load(fr)
print(type(data1))
print_obj(data1)
print data1.raw_graph_list[0]

运行报错

  File "C:\Program1\pycharmproject\Genius3\raw-feature-extractor\raw_graphs.py", line 5, in <module>
    import networkx as nx
ImportError: No module named networkx

查看https://raw_graphs.py/   。推测报错原因是,在有ida启动时,会自动选择系统的python2.7路径,导入该路径下的networkx包,而不经过ida,直接运行时没有导入,所以需要sys.path.insert

import sys

#sys.path.insert(0, '/usr/local/lib/python2.7/dist-packages/')


import networkx as nx

参考:

https://www.cnblogs.com/bigband/p/13745067.html

https://www.cnblogs.com/gdut-gordon/p/9336067.html

由于我这里换了windos运行,修改

#sys.path.insert(0, '/usr/local/lib/python2.7/dist-packages/')

增加 本地环境

sys.path.insert(1, 'C:/Python27/Lib/site-packages')

 然后运行,就没问题了。可以直接读取之前pickle dump的ida文件

 

1.3.3 输出acfg信息

raw_graph.py中可以看出,acfg g实在discovRe的old_g的基础上构建的。

class raw_graph:
    def __init__(self, funcname, g, func_f):
        #print "create"
        self.funcname = funcname
        self.old_g = g[0]
        self.g = nx.DiGraph()
        self.entry = g[1]
        self.fun_features = func_f
        self.attributing()

    def __len__(self):
        return len(self.g)

    def attributing(self):
        self.obtainOffsprings(self.old_g)
        for node in self.old_g:
            fvector = self.retrieveVec(node, self.old_g)
            self.g.add_node(node)
            self.g.node[node]['v'] = fvector

 

可以看到g的节点的属性,有8个

    def retrieveVec(self, id_, g):
        feature_vec = []
        #numC0
        numc = g.node[id_]['consts']
        feature_vec.append(numc)
        #nums1
        nums = g.node[id_]['strings']
        feature_vec.append(nums)
        #offsprings2
        offs = g.node[id_]['offs']
        feature_vec.append(offs)
        #numAs3
        numAs = g.node[id_]['numAs']
        feature_vec.append(numAs)
        # of calls4
        calls = g.node[id_]['numCalls']
        feature_vec.append(calls)
        # of insts5
        insts = g.node[id_]['numIns']
        feature_vec.append(insts)
        # of LIs6
        insts = g.node[id_]['numLIs']
        feature_vec.append(insts)
        # of TIs7
        insts = g.node[id_]['numTIs']
        feature_vec.append(insts)    
        return feature_vec

 

 

 

 应该是一一对应的////或者old_G本身包含了一些信息,加上这些append的信息,构成上表

 然而没找到betweeness。通过看源码发现betweeness在调用retrieveGP函数时实现,包含在 fun_feature内。

 

最后写下测试的脚本

# -*- coding: UTF-8 -*-
import sys
import sys
from matplotlib import pyplot as plt
sys.path.insert(0, '/usr/local/lib/python2.7/dist-packages/')
sys.path.insert(1, 'C:/Python27/Lib/site-packages')
import networkx as nx
def print_obj(obj):
    "打印对象的所有属性"
    print(obj.__dict__)

import pickle

#sub_10F20 308  反编译代码有字符串,但是这个特征提取里没有字符串 constant,可能是间接引用的,不识别。看了下所有函数的特征,几乎都没有字符串常量,可能都是写在别的地方然后引用的。
#sub_166C4 393
if __name__ == '__main__':


    testpath = "C:\Program1\pycharmproject\Genius3/acfgs/hpcenter.ida"
    fr = open(testpath, 'r')
    data1 = pickle.load(fr) #一个二进制文件的acfgs
    #print(type(data1))
    #print_obj(data1)
    #print data1.raw_graph_list[393]
    #print_obj(data1.raw_graph_list[393])
    #nx.draw(data1.raw_graph_list[393].g,with_labels=True)
    #plt.show()

    print "一个二进制文件的所有函数的原始特征,list。"
    print_obj(data1) #acfg list
    print "\n"

    print "一个函数的原始特征,由old_g(discovRe方法的ACFG),g(Genius方法的ACFG),fun_feature(表示函数级别的特征的向量)三部分构成"
    print_obj(data1.raw_graph_list[393]) #一个函数的acfg
    print "\n"
    feature=data1.raw_graph_list[393].fun_features
    print "函数级别特征: # 1 function calls # 2 logic instructions # 3 TransferIns # 4 LocalVariables # 5 BB basicblocks# 6 Edges # 7 IncommingCalls# 8 Intrs# 9 between # 10 strings # 11 consts"
    print feature
    print "\n"


    # G=data1.raw_graph_list[393].old_g
    # print G.node[0] # G.node[i]是dict
    # for key, value in G.node[0].items():
    #     print('{key}:{value}'.format(key=key, value=value))

    # 一个基本块的特征 #1'consts' 数字常量 #2'strings'字符串常量 #3'offs' offspring 字节点数量? #4'numAs' 算数指令如INC  #5'numCalls' 调用指令 #6'numIns' 指令数量 #7'numLIs' LogicInstructions 如AND #8'numTIs' 转移指令数量
    G=data1.raw_graph_list[393].g
    print "# 一个基本块的特征 #1'consts' 数字常量 #2'strings'字符串常量 #3'offs' offspring 字节点数量? #4'numAs' 算数指令如INC  #5'numCalls' 调用指令 #6'numIns' 指令数量 #7'numLIs' LogicInstructions 如AND #8'numTIs' 转移指令数量"
    print G.node[0]
    print "\n"
    # for key, value in G.node[0].items():
    #     print('{key}:{value}'.format(key=key, value=value))



    #oldg就是读取IDA的CFG,所以数量、方向等都一样;g根据old_g生成,也一样
    #old g
    G = data1.raw_graph_list[393].old_g
    nx.draw(G,with_labels=True)
    #plt.title('old_g')
    plt.show()


    # g
    G = data1.raw_graph_list[393].g
    nx.draw(G,with_labels=True)
    #plt.title('Genius_g')
    plt.show()

    # draw graph with labels
    pos = nx.spring_layout(G)
    nx.draw(G, pos)
    node_labels = nx.get_node_attributes(G, 'v')  #networkx的node,由属性。g的属性为'v',意为原始特征的vector。old_g的属性见cfg_constructor.py
    nx.draw_networkx_labels(G, pos, labels=node_labels)
    #plt.title('Genius_g with raw feature vector')
    plt.show()


输出:

一个二进制文件的所有函数的原始特征,list。
{'raw_graph_list': [<raw_graphs.raw_graph instance at 0x15DBA7B0>, <raw_graphs.raw_graph instance at 0x15DBA968>, <raw_graphs.raw_graph instance at 0x15DBA9E0>, <raw_graphs.raw_graph instance at 0x15DBAA80>, <raw_graphs.raw_graph instance at 0x15DBAAF8>, <raw_graphs.raw_graph instance at 0x15DBAB98>, <raw_graphs.raw_graph instance at 0x15DBAC38>, <raw_graphs.raw_graph instance at 0x15DBAE18>, <raw_graphs.raw_graph instance at 0x15DD10A8>, <raw_graphs.raw_graph instance at 0x15DD1350>, <raw_graphs.raw_graph instance at 0x15DD15D0>, <raw_graphs.raw_graph instance at 0x15DD1878>, <raw_graphs.raw_graph instance at 0x15DD1AD0>, <raw_graphs.raw_graph instance at 0x15DD1D28>, <raw_graphs.raw_graph instance at 0x15DD1FD0>, <raw_graphs.raw_graph instance at 0x15DDB288>, <raw_graphs.raw_graph instance at 0x15DDB4B8>, <raw_graphs.raw_graph instance at 0x15DDB710>, <raw_graphs.raw_graph instance at 0x15DDB968>, <raw_graphs.raw_graph instance at 0x15DDBBC0>, <raw_graphs.raw_graph instance at 0x15DDBDF0>, <raw_graphs.raw_graph instance at 0x15DE60A8>, <raw_graphs.raw_graph instance at 0x15DE6328>, <raw_graphs.raw_graph instance at 0x15DE6558>, <raw_graphs.raw_graph instance at 0x15DE67D8>, <raw_graphs.raw_graph instance at 0x15DE6A08>, <raw_graphs.raw_graph instance at 0x15DE6C88>, <raw_graphs.raw_graph instance at 0x15DE6EE0>, <raw_graphs.raw_graph instance at 0x15DF2170>, <raw_graphs.raw_graph instance at 0x15DF23A0>, <raw_graphs.raw_graph instance at 0x15DF25F8>, <raw_graphs.raw_graph instance at 0x15DF2850>, <raw_graphs.raw_graph instance at 0x15DF2A80>, <raw_graphs.raw_graph instance at 0x15DF2D00>, <raw_graphs.raw_graph instance at 0x15DF2F80>, <raw_graphs.raw_graph instance at 0x15DFD210>, <raw_graphs.raw_graph instance at 0x15DFD468>, <raw_graphs.raw_graph instance at 0x15DFD698>, <raw_graphs.raw_graph instance at 0x15DFD8F0>, <raw_graphs.raw_graph instance at 0x15DFDB70>, <raw_graphs.raw_graph instance at 0x15DFDDA0>, <raw_graphs.raw_graph instance at 0x15DFDFD0>, <raw_graphs.raw_graph instance at 0x15E09238>, <raw_graphs.raw_graph instance at 0x15E09468>, <raw_graphs.raw_graph instance at 0x15E096E8>, <raw_graphs.raw_graph instance at 0x15E09940>, <raw_graphs.raw_graph instance at 0x15E09B98>, <raw_graphs.raw_graph instance at 0x15E09DF0>, <raw_graphs.raw_graph instance at 0x15E14058>, <raw_graphs.raw_graph instance at 0x15E142B0>, <raw_graphs.raw_graph instance at 0x15E14508>, <raw_graphs.raw_graph instance at 0x15E14760>, <raw_graphs.raw_graph instance at 0x15E14990>, <raw_graphs.raw_graph instance at 0x15E14BE8>, <raw_graphs.raw_graph instance at 0x15E14E68>, <raw_graphs.raw_graph instance at 0x15E1F0F8>, <raw_graphs.raw_graph instance at 0x15E1F378>, <raw_graphs.raw_graph instance at 0x15E1F5D0>, <raw_graphs.raw_graph instance at 0x15E1F850>, <raw_graphs.raw_graph instance at 0x15E1FAA8>, <raw_graphs.raw_graph instance at 0x15E1FCD8>, <raw_graphs.raw_graph instance at 0x15E1FF30>, <raw_graphs.raw_graph instance at 0x15E641C0>, <raw_graphs.raw_graph instance at 0x15E643F0>, <raw_graphs.raw_graph instance at 0x15E64670>, <raw_graphs.raw_graph instance at 0x15E648C8>, <raw_graphs.raw_graph instance at 0x15E64B48>, <raw_graphs.raw_graph instance at 0x15E64DC8>, <raw_graphs.raw_graph instance at 0x15E6F030>, <raw_graphs.raw_graph instance at 0x15E6F260>, <raw_graphs.raw_graph instance at 0x15E6F4B8>, <raw_graphs.raw_graph instance at 0x15E6F738>, <raw_graphs.raw_graph instance at 0x15E6F990>, <raw_graphs.raw_graph instance at 0x15E6FBC0>, <raw_graphs.raw_graph instance at 0x15E6FE18>, <raw_graphs.raw_graph instance at 0x15E7A080>, <raw_graphs.raw_graph instance at 0x15E7A2D8>, <raw_graphs.raw_graph instance at 0x15E7A508>, <raw_graphs.raw_graph instance at 0x15E7A760>, <raw_graphs.raw_graph instance at 0x15E7A9B8>, <raw_graphs.raw_graph instance at 0x15E7AC38>, <raw_graphs.raw_graph instance at 0x15E7AE68>, <raw_graphs.raw_graph instance at 0x15E850F8>, <raw_graphs.raw_graph instance at 0x15E85378>, <raw_graphs.raw_graph instance at 0x15E855A8>, <raw_graphs.raw_graph instance at 0x15E85800>, <raw_graphs.raw_graph instance at 0x15E85A80>, <raw_graphs.raw_graph instance at 0x15E85CB0>, <raw_graphs.raw_graph instance at 0x15E85F30>, <raw_graphs.raw_graph instance at 0x15E901C0>, <raw_graphs.raw_graph instance at 0x15E90418>, <raw_graphs.raw_graph instance at 0x15E90670>, <raw_graphs.raw_graph instance at 0x15E908C8>, <raw_graphs.raw_graph instance at 0x15E90B20>, <raw_graphs.raw_graph instance at 0x15E90D50>, <raw_graphs.raw_graph instance at 0x15E90FA8>, <raw_graphs.raw_graph instance at 0x15E9B288>, <raw_graphs.raw_graph instance at 0x15E9B508>, <raw_graphs.raw_graph instance at 0x15E9B760>, <raw_graphs.raw_graph instance at 0x15E9B990>, <raw_graphs.raw_graph instance at 0x15E9BC10>, <raw_graphs.raw_graph instance at 0x15E9BE40>, <raw_graphs.raw_graph instance at 0x15EA90D0>, <raw_graphs.raw_graph instance at 0x15EA9350>, <raw_graphs.raw_graph instance at 0x15EA95A8>, <raw_graphs.raw_graph instance at 0x15EA9828>, <raw_graphs.raw_graph instance at 0x15EA9A80>, <raw_graphs.raw_graph instance at 0x15EA9C88>, <raw_graphs.raw_graph instance at 0x15EA9EE0>, <raw_graphs.raw_graph instance at 0x15EB4170>, <raw_graphs.raw_graph instance at 0x15EB43F0>, <raw_graphs.raw_graph instance at 0x15EB4620>, <raw_graphs.raw_graph instance at 0x15EB4878>, <raw_graphs.raw_graph instance at 0x15EB4AD0>, <raw_graphs.raw_graph instance at 0x15EB4D50>, <raw_graphs.raw_graph instance at 0x15EB4FD0>, <raw_graphs.raw_graph instance at 0x15EBF260>, <raw_graphs.raw_graph instance at 0x15EBF5F8>, <raw_graphs.raw_graph instance at 0x15EBF968>, <raw_graphs.raw_graph instance at 0x15EBFCD8>, <raw_graphs.raw_graph instance at 0x15EBFFA8>, <raw_graphs.raw_graph instance at 0x15ECB3F0>, <raw_graphs.raw_graph instance at 0x15ECB8A0>, <raw_graphs.raw_graph instance at 0x15ECBA30>, <raw_graphs.raw_graph instance at 0x15ECBD00>, <raw_graphs.raw_graph instance at 0x15ED6328>, <raw_graphs.raw_graph instance at 0x15ED6EB8>, <raw_graphs.raw_graph instance at 0x15F651C0>, <raw_graphs.raw_graph instance at 0x15F65530>, <raw_graphs.raw_graph instance at 0x15F658A0>, <raw_graphs.raw_graph instance at 0x15F65A30>, <raw_graphs.raw_graph instance at 0x15F65E68>, <raw_graphs.raw_graph instance at 0x15F702D8>, <raw_graphs.raw_graph instance at 0x15F70828>, <raw_graphs.raw_graph instance at 0x15F70AF8>, <raw_graphs.raw_graph instance at 0x15F855F8>, <raw_graphs.raw_graph instance at 0x15F921C0>, <raw_graphs.raw_graph instance at 0x15F92AD0>, <raw_graphs.raw_graph instance at 0x15F92EE0>, <raw_graphs.raw_graph instance at 0x15FA00D0>, <raw_graphs.raw_graph instance at 0x15FA0288>, <raw_graphs.raw_graph instance at 0x15FA0440>, <raw_graphs.raw_graph instance at 0x15FA05F8>, <raw_graphs.raw_graph instance at 0x15FA07B0>, <raw_graphs.raw_graph instance at 0x15FA0968>, <raw_graphs.raw_graph instance at 0x15FA0E40>, <raw_graphs.raw_graph instance at 0x15FCCBE8>, <raw_graphs.raw_graph instance at 0x15FCCDC8>, <raw_graphs.raw_graph instance at 0x15FCCF80>, <raw_graphs.raw_graph instance at 0x15FD7170>, <raw_graphs.raw_graph instance at 0x15FD7328>, <raw_graphs.raw_graph instance at 0x15FD74E0>, <raw_graphs.raw_graph instance at 0x15FD7698>, <raw_graphs.raw_graph instance at 0x15FD7850>, <raw_graphs.raw_graph instance at 0x15FD7D78>, <raw_graphs.raw_graph instance at 0x15FE1418>, <raw_graphs.raw_graph instance at 0x15FE1A80>, <raw_graphs.raw_graph instance at 0x15FEB120>, <raw_graphs.raw_graph instance at 0x15FEB788>, <raw_graphs.raw_graph instance at 0x15FF5148>, <raw_graphs.raw_graph instance at 0x15FF57B0>, <raw_graphs.raw_graph instance at 0x15FF5FA8>, <raw_graphs.raw_graph instance at 0x16027198>, <raw_graphs.raw_graph instance at 0x16027738>, <raw_graphs.raw_graph instance at 0x16027CD8>, <raw_graphs.raw_graph instance at 0x167F42B0>, <raw_graphs.raw_graph instance at 0x167F4850>, <raw_graphs.raw_graph instance at 0x167F4DF0>, <raw_graphs.raw_graph instance at 0x167FE3C8>, <raw_graphs.raw_graph instance at 0x167FE968>, <raw_graphs.raw_graph instance at 0x167FEF08>, <raw_graphs.raw_graph instance at 0x1680A4E0>, <raw_graphs.raw_graph instance at 0x1680AA80>, <raw_graphs.raw_graph instance at 0x16814058>, <raw_graphs.raw_graph instance at 0x16814788>, <raw_graphs.raw_graph instance at 0x16814940>, <raw_graphs.raw_graph instance at 0x16814AF8>, <raw_graphs.raw_graph instance at 0x16814CB0>, <raw_graphs.raw_graph instance at 0x16814E68>, <raw_graphs.raw_graph instance at 0x1681F058>, <raw_graphs.raw_graph instance at 0x1681F210>, <raw_graphs.raw_graph instance at 0x1681F3C8>, <raw_graphs.raw_graph instance at 0x1681F8A0>, <raw_graphs.raw_graph instance at 0x1681FD78>, <raw_graphs.raw_graph instance at 0x16828288>, <raw_graphs.raw_graph instance at 0x16828760>, <raw_graphs.raw_graph instance at 0x16828C38>, <raw_graphs.raw_graph instance at 0x16832148>, <raw_graphs.raw_graph instance at 0x16832620>, <raw_graphs.raw_graph instance at 0x16832AF8>, <raw_graphs.raw_graph instance at 0x16832CB0>, <raw_graphs.raw_graph instance at 0x16832E68>, <raw_graphs.raw_graph instance at 0x1683F058>, <raw_graphs.raw_graph instance at 0x1683F210>, <raw_graphs.raw_graph instance at 0x1683F3C8>, <raw_graphs.raw_graph instance at 0x1683F580>, <raw_graphs.raw_graph instance at 0x1683F738>, <raw_graphs.raw_graph instance at 0x1683F8F0>, <raw_graphs.raw_graph instance at 0x1683FAA8>, <raw_graphs.raw_graph instance at 0x1683FC60>, <raw_graphs.raw_graph instance at 0x1683FE18>, <raw_graphs.raw_graph instance at 0x1683FFD0>, <raw_graphs.raw_graph instance at 0x1684B4E0>, <raw_graphs.raw_graph instance at 0x1684B9B8>, <raw_graphs.raw_graph instance at 0x16855058>, <raw_graphs.raw_graph instance at 0x168553A0>, <raw_graphs.raw_graph instance at 0x168556E8>, <raw_graphs.raw_graph instance at 0x1685B558>, <raw_graphs.raw_graph instance at 0x168670A8>, <raw_graphs.raw_graph instance at 0x16867580>, <raw_graphs.raw_graph instance at 0x16867738>, <raw_graphs.raw_graph instance at 0x168678F0>, <raw_graphs.raw_graph instance at 0x16867AA8>, <raw_graphs.raw_graph instance at 0x16867F80>, <raw_graphs.raw_graph instance at 0x16875490>, <raw_graphs.raw_graph instance at 0x16875AF8>, <raw_graphs.raw_graph instance at 0x16875E40>, <raw_graphs.raw_graph instance at 0x1687E1C0>, <raw_graphs.raw_graph instance at 0x16888030>, <raw_graphs.raw_graph instance at 0x16888B48>, <raw_graphs.raw_graph instance at 0x16893058>, <raw_graphs.raw_graph instance at 0x16893210>, <raw_graphs.raw_graph instance at 0x168936E8>, <raw_graphs.raw_graph instance at 0x16893BC0>, <raw_graphs.raw_graph instance at 0x1689D260>, <raw_graphs.raw_graph instance at 0x1689D5A8>, <raw_graphs.raw_graph instance at 0x1689D8F0>, <raw_graphs.raw_graph instance at 0x168A6760>, <raw_graphs.raw_graph instance at 0x168AF2B0>, <raw_graphs.raw_graph instance at 0x168AF788>, <raw_graphs.raw_graph instance at 0x168AF940>, <raw_graphs.raw_graph instance at 0x168AFC88>, <raw_graphs.raw_graph instance at 0x16900198>, <raw_graphs.raw_graph instance at 0x16900670>, <raw_graphs.raw_graph instance at 0x16900CD8>, <raw_graphs.raw_graph instance at 0x1690B058>, <raw_graphs.raw_graph instance at 0x1690B3A0>, <raw_graphs.raw_graph instance at 0x16913210>, <raw_graphs.raw_graph instance at 0x16913D28>, <raw_graphs.raw_graph instance at 0x1691F238>, <raw_graphs.raw_graph instance at 0x1691F3F0>, <raw_graphs.raw_graph instance at 0x1691F738>, <raw_graphs.raw_graph instance at 0x1691FC10>, <raw_graphs.raw_graph instance at 0x1692A120>, <raw_graphs.raw_graph instance at 0x1692A788>, <raw_graphs.raw_graph instance at 0x1692AAD0>, <raw_graphs.raw_graph instance at 0x1692AE18>, <raw_graphs.raw_graph instance at 0x16935C88>, <raw_graphs.raw_graph instance at 0x169417D8>, <raw_graphs.raw_graph instance at 0x16941CB0>, <raw_graphs.raw_graph instance at 0x16941E68>, <raw_graphs.raw_graph instance at 0x1694B1E8>, <raw_graphs.raw_graph instance at 0x1694B6C0>, <raw_graphs.raw_graph instance at 0x1694BB98>, <raw_graphs.raw_graph instance at 0x16954238>, <raw_graphs.raw_graph instance at 0x16954580>, <raw_graphs.raw_graph instance at 0x169548C8>, <raw_graphs.raw_graph instance at 0x1695E738>, <raw_graphs.raw_graph instance at 0x16969288>, <raw_graphs.raw_graph instance at 0x16969760>, <raw_graphs.raw_graph instance at 0x16969918>, <raw_graphs.raw_graph instance at 0x16969C60>, <raw_graphs.raw_graph instance at 0x16969E18>, <raw_graphs.raw_graph instance at 0x16969FD0>, <raw_graphs.raw_graph instance at 0x169761C0>, <raw_graphs.raw_graph instance at 0x16976378>, <raw_graphs.raw_graph instance at 0x16976530>, <raw_graphs.raw_graph instance at 0x169766E8>, <raw_graphs.raw_graph instance at 0x169768A0>, <raw_graphs.raw_graph instance at 0x16976A58>, <raw_graphs.raw_graph instance at 0x16976C10>, <raw_graphs.raw_graph instance at 0x16976DC8>, <raw_graphs.raw_graph instance at 0x16976F80>, <raw_graphs.raw_graph instance at 0x16982170>, <raw_graphs.raw_graph instance at 0x16982328>, <raw_graphs.raw_graph instance at 0x16982B20>, <raw_graphs.raw_graph instance at 0x16982CD8>, <raw_graphs.raw_graph instance at 0x1698B8F0>, <raw_graphs.raw_graph instance at 0x1698BDC8>, <raw_graphs.raw_graph instance at 0x16996148>, <raw_graphs.raw_graph instance at 0x16996300>, <raw_graphs.raw_graph instance at 0x169964B8>, <raw_graphs.raw_graph instance at 0x16996670>, <raw_graphs.raw_graph instance at 0x16996828>, <raw_graphs.raw_graph instance at 0x169A0058>, <raw_graphs.raw_graph instance at 0x169A0530>, <raw_graphs.raw_graph instance at 0x169A0878>, <raw_graphs.raw_graph instance at 0x169A0E18>, <raw_graphs.raw_graph instance at 0x169A0FD0>, <raw_graphs.raw_graph instance at 0x169AC1C0>, <raw_graphs.raw_graph instance at 0x169B6030>, <raw_graphs.raw_graph instance at 0x169B6A80>, <raw_graphs.raw_graph instance at 0x169B6DC8>, <raw_graphs.raw_graph instance at 0x169B6F80>, <raw_graphs.raw_graph instance at 0x169C3878>, <raw_graphs.raw_graph instance at 0x169CA7B0>, <raw_graphs.raw_graph instance at 0x169CABC0>, <raw_graphs.raw_graph instance at 0x169D9DF0>, <raw_graphs.raw_graph instance at 0x169EF9E0>, <raw_graphs.raw_graph instance at 0x16A02C10>, <raw_graphs.raw_graph instance at 0x16A17E40>, <raw_graphs.raw_graph instance at 0x16A2B580>, <raw_graphs.raw_graph instance at 0x16A2BCB0>, <raw_graphs.raw_graph instance at 0x16A84D78>, <raw_graphs.raw_graph instance at 0x16A84F30>, <raw_graphs.raw_graph instance at 0x16A8E698>, <raw_graphs.raw_graph instance at 0x16A8EB98>, <raw_graphs.raw_graph instance at 0x16A97490>, <raw_graphs.raw_graph instance at 0x16AA1170>, <raw_graphs.raw_graph instance at 0x16AA7F80>, <raw_graphs.raw_graph instance at 0x16AB6558>, <raw_graphs.raw_graph instance at 0x16AB6D50>, <raw_graphs.raw_graph instance at 0x16ABF260>, <raw_graphs.raw_graph instance at 0x16ABF990>, <raw_graphs.raw_graph instance at 0x16ABFCD8>, <raw_graphs.raw_graph instance at 0x16ACDFD0>, <raw_graphs.raw_graph instance at 0x16AE0E40>, <raw_graphs.raw_graph instance at 0x16AEA990>, <raw_graphs.raw_graph instance at 0x16AEAE68>, <raw_graphs.raw_graph instance at 0x16AF5058>, <raw_graphs.raw_graph instance at 0x16AF55F8>, <raw_graphs.raw_graph instance at 0x16AF57B0>, <raw_graphs.raw_graph instance at 0x16AF5968>, <raw_graphs.raw_graph instance at 0x16AFC260>, <raw_graphs.raw_graph instance at 0x16AFC418>, <raw_graphs.raw_graph instance at 0x16AFC760>, <raw_graphs.raw_graph instance at 0x16AFCD00>, <raw_graphs.raw_graph instance at 0x16AFCEB8>, <raw_graphs.raw_graph instance at 0x16B4C3C8>, <raw_graphs.raw_graph instance at 0x16B4C8A0>, <raw_graphs.raw_graph instance at 0x16B53328>, <raw_graphs.raw_graph instance at 0x16B53800>, <raw_graphs.raw_graph instance at 0x16B5E738>, <raw_graphs.raw_graph instance at 0x16B5E8F0>, <raw_graphs.raw_graph instance at 0x16B68508>, <raw_graphs.raw_graph instance at 0x16B68AA8>, <raw_graphs.raw_graph instance at 0x16B68C60>, <raw_graphs.raw_graph instance at 0x16B68E18>, <raw_graphs.raw_graph instance at 0x16B68FD0>, <raw_graphs.raw_graph instance at 0x16B75350>, <raw_graphs.raw_graph instance at 0x16B75698>, <raw_graphs.raw_graph instance at 0x16B7C5D0>, <raw_graphs.raw_graph instance at 0x16B7C788>, <raw_graphs.raw_graph instance at 0x16B7CD28>, <raw_graphs.raw_graph instance at 0x16B7CEE0>, <raw_graphs.raw_graph instance at 0x16B8F4B8>, <raw_graphs.raw_graph instance at 0x16B8FA58>, <raw_graphs.raw_graph instance at 0x16B990F8>, <raw_graphs.raw_graph instance at 0x16B99508>, <raw_graphs.raw_graph instance at 0x16B99850>, <raw_graphs.raw_graph instance at 0x16B99EB8>, <raw_graphs.raw_graph instance at 0x16BA30A8>, <raw_graphs.raw_graph instance at 0x16BA3260>, <raw_graphs.raw_graph instance at 0x16BA3800>, <raw_graphs.raw_graph instance at 0x16BAE030>, <raw_graphs.raw_graph instance at 0x16BAE508>, <raw_graphs.raw_graph instance at 0x16BAE850>, <raw_graphs.raw_graph instance at 0x16BAEF80>, <raw_graphs.raw_graph instance at 0x16BB8300>, <raw_graphs.raw_graph instance at 0x16BC85F8>, <raw_graphs.raw_graph instance at 0x16BD3468>, <raw_graphs.raw_graph instance at 0x16BD3F80>, <raw_graphs.raw_graph instance at 0x16BE2490>, <raw_graphs.raw_graph instance at 0x16BE2648>, <raw_graphs.raw_graph instance at 0x16BE2BE8>, <raw_graphs.raw_graph instance at 0x16BEA288>, <raw_graphs.raw_graph instance at 0x16BEA828>, <raw_graphs.raw_graph instance at 0x16BF5788>, <raw_graphs.raw_graph instance at 0x16BF5B98>, <raw_graphs.raw_graph instance at 0x16C0CAA8>, <raw_graphs.raw_graph instance at 0x16C0CC60>, <raw_graphs.raw_graph instance at 0x16C0CE18>, <raw_graphs.raw_graph instance at 0x16C1F580>, <raw_graphs.raw_graph instance at 0x16C1F8C8>, <raw_graphs.raw_graph instance at 0x16C1FE68>, <raw_graphs.raw_graph instance at 0x16C29378>, <raw_graphs.raw_graph instance at 0x16C29850>, <raw_graphs.raw_graph instance at 0x16C391E8>, <raw_graphs.raw_graph instance at 0x16C39850>, <raw_graphs.raw_graph instance at 0x16C445F8>, <raw_graphs.raw_graph instance at 0x16C93C38>, <raw_graphs.raw_graph instance at 0x16CA7468>, <raw_graphs.raw_graph instance at 0x16CA7A08>, <raw_graphs.raw_graph instance at 0x16CA7BC0>, <raw_graphs.raw_graph instance at 0x16CA7D78>, <raw_graphs.raw_graph instance at 0x16CB38C8>, <raw_graphs.raw_graph instance at 0x16CB3F30>, <raw_graphs.raw_graph instance at 0x16CBD120>, <raw_graphs.raw_graph instance at 0x16CBD788>, <raw_graphs.raw_graph instance at 0x16CBD940>, <raw_graphs.raw_graph instance at 0x16CBDAF8>, <raw_graphs.raw_graph instance at 0x16CC5260>, <raw_graphs.raw_graph instance at 0x16CC5418>, <raw_graphs.raw_graph instance at 0x16CD6030>, <raw_graphs.raw_graph instance at 0x16CD9CB0>, <raw_graphs.raw_graph instance at 0x16CD9E68>, <raw_graphs.raw_graph instance at 0x16CEA440>, <raw_graphs.raw_graph instance at 0x16CEAE90>, <raw_graphs.raw_graph instance at 0x16CF6918>, <raw_graphs.raw_graph instance at 0x16CF6AD0>, <raw_graphs.raw_graph instance at 0x16CF6C88>, <raw_graphs.raw_graph instance at 0x16CF6E40>, <raw_graphs.raw_graph instance at 0x16D00030>, <raw_graphs.raw_graph instance at 0x16D001E8>, <raw_graphs.raw_graph instance at 0x16D00850>, <raw_graphs.raw_graph instance at 0x16D00A08>, <raw_graphs.raw_graph instance at 0x16D00BC0>, <raw_graphs.raw_graph instance at 0x16D00D78>, <raw_graphs.raw_graph instance at 0x16D00F30>, <raw_graphs.raw_graph instance at 0x16D0B120>, <raw_graphs.raw_graph instance at 0x16D0B2D8>, <raw_graphs.raw_graph instance at 0x16D0B490>, <raw_graphs.raw_graph instance at 0x16D0B648>, <raw_graphs.raw_graph instance at 0x16D0B800>, <raw_graphs.raw_graph instance at 0x16D0B9B8>, <raw_graphs.raw_graph instance at 0x16D0BB70>, <raw_graphs.raw_graph instance at 0x16D0BD28>, <raw_graphs.raw_graph instance at 0x16D160A8>, <raw_graphs.raw_graph instance at 0x16D16260>, <raw_graphs.raw_graph instance at 0x16D16CB0>, <raw_graphs.raw_graph instance at 0x16D20738>, <raw_graphs.raw_graph instance at 0x16D27800>, <raw_graphs.raw_graph instance at 0x16D33CB0>, <raw_graphs.raw_graph instance at 0x16D3F288>, <raw_graphs.raw_graph instance at 0x16D3F440>, <raw_graphs.raw_graph instance at 0x16D3F918>, <raw_graphs.raw_graph instance at 0x16D3FDF0>, <raw_graphs.raw_graph instance at 0x16D3FFA8>, <raw_graphs.raw_graph instance at 0x16D4B198>, <raw_graphs.raw_graph instance at 0x16D4B350>, <raw_graphs.raw_graph instance at 0x16D4BB48>, <raw_graphs.raw_graph instance at 0x16D4BE90>, <raw_graphs.raw_graph instance at 0x16D973A0>, <raw_graphs.raw_graph instance at 0x16D97878>, <raw_graphs.raw_graph instance at 0x16D97A30>, <raw_graphs.raw_graph instance at 0x16D9F260>, <raw_graphs.raw_graph instance at 0x16D9F418>, <raw_graphs.raw_graph instance at 0x16D9FB48>, <raw_graphs.raw_graph instance at 0x16DAB120>, <raw_graphs.raw_graph instance at 0x16DB3058>, <raw_graphs.raw_graph instance at 0x16DBD1E8>, <raw_graphs.raw_graph instance at 0x16DBD3A0>, <raw_graphs.raw_graph instance at 0x16DBD7B0>, <raw_graphs.raw_graph instance at 0x16DBDBC0>, <raw_graphs.raw_graph instance at 0x16DBDF08>, <raw_graphs.raw_graph instance at 0x16DCA288>, <raw_graphs.raw_graph instance at 0x16DCA440>, <raw_graphs.raw_graph instance at 0x16DCA5F8>, <raw_graphs.raw_graph instance at 0x16DCA940>, <raw_graphs.raw_graph instance at 0x16DCAE18>, <raw_graphs.raw_graph instance at 0x16DCAFD0>, <raw_graphs.raw_graph instance at 0x16DD61C0>, <raw_graphs.raw_graph instance at 0x16DD6378>, <raw_graphs.raw_graph instance at 0x16DD6530>, <raw_graphs.raw_graph instance at 0x16DD66E8>, <raw_graphs.raw_graph instance at 0x16DD68A0>, <raw_graphs.raw_graph instance at 0x16DD6A58>, <raw_graphs.raw_graph instance at 0x16DD6C10>, <raw_graphs.raw_graph instance at 0x16DD6F58>, <raw_graphs.raw_graph instance at 0x16DE1468>, <raw_graphs.raw_graph instance at 0x16DE17B0>, <raw_graphs.raw_graph instance at 0x16DE1968>, <raw_graphs.raw_graph instance at 0x16DE1B20>, <raw_graphs.raw_graph instance at 0x16DE1CD8>, <raw_graphs.raw_graph instance at 0x16DE1E90>, <raw_graphs.raw_graph instance at 0x16DEB080>, <raw_graphs.raw_graph instance at 0x16DEB238>, <raw_graphs.raw_graph instance at 0x16DEB3F0>, <raw_graphs.raw_graph instance at 0x16DEB5A8>, <raw_graphs.raw_graph instance at 0x16DEB760>, <raw_graphs.raw_graph instance at 0x16DEB918>, <raw_graphs.raw_graph instance at 0x16DEBAD0>, <raw_graphs.raw_graph instance at 0x16DEBFA8>, <raw_graphs.raw_graph instance at 0x16DF64B8>, <raw_graphs.raw_graph instance at 0x16DF6670>, <raw_graphs.raw_graph instance at 0x16DF6828>, <raw_graphs.raw_graph instance at 0x16DF69E0>, <raw_graphs.raw_graph instance at 0x16DF6B98>, <raw_graphs.raw_graph instance at 0x16DF6D50>, <raw_graphs.raw_graph instance at 0x16DF6F08>, <raw_graphs.raw_graph instance at 0x16E010F8>, <raw_graphs.raw_graph instance at 0x16E012B0>, <raw_graphs.raw_graph instance at 0x16E01468>, <raw_graphs.raw_graph instance at 0x16E01620>, <raw_graphs.raw_graph instance at 0x16E017D8>, <raw_graphs.raw_graph instance at 0x16E01990>, <raw_graphs.raw_graph instance at 0x16E01B48>, <raw_graphs.raw_graph instance at 0x16E01D00>, <raw_graphs.raw_graph instance at 0x16E01EB8>, <raw_graphs.raw_graph instance at 0x16E0C0A8>, <raw_graphs.raw_graph instance at 0x16E0C260>, <raw_graphs.raw_graph instance at 0x16E0C418>, <raw_graphs.raw_graph instance at 0x16E0C5D0>, <raw_graphs.raw_graph instance at 0x16E0C788>, <raw_graphs.raw_graph instance at 0x16E0C940>, <raw_graphs.raw_graph instance at 0x16E0CAF8>, <raw_graphs.raw_graph instance at 0x16E0CCB0>, <raw_graphs.raw_graph instance at 0x16E0CE68>, <raw_graphs.raw_graph instance at 0x16E171E8>, <raw_graphs.raw_graph instance at 0x16E175F8>, <raw_graphs.raw_graph instance at 0x16E17940>, <raw_graphs.raw_graph instance at 0x16E17C88>, <raw_graphs.raw_graph instance at 0x16E17E40>, <raw_graphs.raw_graph instance at 0x16E221C0>, <raw_graphs.raw_graph instance at 0x16E22378>, <raw_graphs.raw_graph instance at 0x16E2A120>, <raw_graphs.raw_graph instance at 0x16E2A2D8>, <raw_graphs.raw_graph instance at 0x16E2A490>, <raw_graphs.raw_graph instance at 0x16E2A648>, <raw_graphs.raw_graph instance at 0x16E2A800>, <raw_graphs.raw_graph instance at 0x16E2A9B8>, <raw_graphs.raw_graph instance at 0x16E2AB70>, <raw_graphs.raw_graph instance at 0x16E2AEB8>, <raw_graphs.raw_graph instance at 0x16E370A8>, <raw_graphs.raw_graph instance at 0x16E37260>, <raw_graphs.raw_graph instance at 0x16E375A8>, <raw_graphs.raw_graph instance at 0x16E378F0>, <raw_graphs.raw_graph instance at 0x16E37AA8>, <raw_graphs.raw_graph instance at 0x16E43148>, <raw_graphs.raw_graph instance at 0x16E436E8>, <raw_graphs.raw_graph instance at 0x16E4A558>, <raw_graphs.raw_graph instance at 0x16E4A710>, <raw_graphs.raw_graph instance at 0x16E4A8C8>, <raw_graphs.raw_graph instance at 0x16E4AA80>, <raw_graphs.raw_graph instance at 0x16E4ADC8>, <raw_graphs.raw_graph instance at 0x16E9A3F0>, <raw_graphs.raw_graph instance at 0x16E9A5A8>, <raw_graphs.raw_graph instance at 0x16E9A788>, <raw_graphs.raw_graph instance at 0x16E9A968>, <raw_graphs.raw_graph instance at 0x16E9AB48>, <raw_graphs.raw_graph instance at 0x16E9AD00>, <raw_graphs.raw_graph instance at 0x16E9AEB8>, <raw_graphs.raw_graph instance at 0x16EA5620>, <raw_graphs.raw_graph instance at 0x16EA57D8>, <raw_graphs.raw_graph instance at 0x16EA5B20>, <raw_graphs.raw_graph instance at 0x16EA5F30>, <raw_graphs.raw_graph instance at 0x16EAF120>, <raw_graphs.raw_graph instance at 0x16EAF2D8>, <raw_graphs.raw_graph instance at 0x16EAF4B8>, <raw_graphs.raw_graph instance at 0x16EAFA80>, <raw_graphs.raw_graph instance at 0x16EAFC60>, <raw_graphs.raw_graph instance at 0x16EB8198>, <raw_graphs.raw_graph instance at 0x16EB8670>, <raw_graphs.raw_graph instance at 0x16EB8D00>, <raw_graphs.raw_graph instance at 0x16EC4148>, <raw_graphs.raw_graph instance at 0x16EC4328>, <raw_graphs.raw_graph instance at 0x16EC44B8>, <raw_graphs.raw_graph instance at 0x16EC46C0>, <raw_graphs.raw_graph instance at 0x16EC4850>, <raw_graphs.raw_graph instance at 0x16EC4A30>, <raw_graphs.raw_graph instance at 0x16EC4C10>, <raw_graphs.raw_graph instance at 0x16EC4DF0>, <raw_graphs.raw_graph instance at 0x16EC4FD0>, <raw_graphs.raw_graph instance at 0x16ECF1E8>, <raw_graphs.raw_graph instance at 0x16ECF3C8>, <raw_graphs.raw_graph instance at 0x16ECF580>, <raw_graphs.raw_graph instance at 0x16ECF738>, <raw_graphs.raw_graph instance at 0x16ECF918>, <raw_graphs.raw_graph instance at 0x16ECFAF8>, <raw_graphs.raw_graph instance at 0x16ECFCB0>, <raw_graphs.raw_graph instance at 0x16ECFE90>, <raw_graphs.raw_graph instance at 0x16EDA0A8>, <raw_graphs.raw_graph instance at 0x16EDA2B0>, <raw_graphs.raw_graph instance at 0x16EDA440>, <raw_graphs.raw_graph instance at 0x16EDA620>, <raw_graphs.raw_graph instance at 0x16EDA828>, <raw_graphs.raw_graph instance at 0x16EDA9B8>, <raw_graphs.raw_graph instance at 0x16EDAB98>, <raw_graphs.raw_graph instance at 0x16EDAD78>, <raw_graphs.raw_graph instance at 0x16EDAF30>, <raw_graphs.raw_graph instance at 0x16EE4148>, <raw_graphs.raw_graph instance at 0x16EE4350>, <raw_graphs.raw_graph instance at 0x16EE44E0>, <raw_graphs.raw_graph instance at 0x16EE46C0>, <raw_graphs.raw_graph instance at 0x16EE48A0>, <raw_graphs.raw_graph instance at 0x16EE4A58>, <raw_graphs.raw_graph instance at 0x16EE4C10>, <raw_graphs.raw_graph instance at 0x16EE4DF0>, <raw_graphs.raw_graph instance at 0x16EE4FA8>, <raw_graphs.raw_graph instance at 0x16EEF1C0>, <raw_graphs.raw_graph instance at 0x16EEF378>, <raw_graphs.raw_graph instance at 0x16EEF530>, <raw_graphs.raw_graph instance at 0x16EEF738>, <raw_graphs.raw_graph instance at 0x16EEF8F0>, <raw_graphs.raw_graph instance at 0x16EEFAA8>, <raw_graphs.raw_graph instance at 0x16EEFC38>, <raw_graphs.raw_graph instance at 0x16EEFDF0>, <raw_graphs.raw_graph instance at 0x16EEFFD0>, <raw_graphs.raw_graph instance at 0x16EFA1C0>, <raw_graphs.raw_graph instance at 0x16EFA3A0>, <raw_graphs.raw_graph instance at 0x16EFA580>, <raw_graphs.raw_graph instance at 0x16EFA738>, <raw_graphs.raw_graph instance at 0x16EFA918>, <raw_graphs.raw_graph instance at 0x16EFAAF8>, <raw_graphs.raw_graph instance at 0x16EFAD00>, <raw_graphs.raw_graph instance at 0x16EFAE90>, <raw_graphs.raw_graph instance at 0x16F05080>, <raw_graphs.raw_graph instance at 0x16F05260>, <raw_graphs.raw_graph instance at 0x16F05418>, <raw_graphs.raw_graph instance at 0x16F055F8>, <raw_graphs.raw_graph instance at 0x16F057B0>, <raw_graphs.raw_graph instance at 0x16F05990>, <raw_graphs.raw_graph instance at 0x16F05B48>, <raw_graphs.raw_graph instance at 0x16F05CD8>, <raw_graphs.raw_graph instance at 0x16F05EB8>, <raw_graphs.raw_graph instance at 0x16F100D0>, <raw_graphs.raw_graph instance at 0x16F10288>, <raw_graphs.raw_graph instance at 0x16F10468>, <raw_graphs.raw_graph instance at 0x16F10620>, <raw_graphs.raw_graph instance at 0x16F10800>, <raw_graphs.raw_graph instance at 0x16F10A08>, <raw_graphs.raw_graph instance at 0x16F10B98>, <raw_graphs.raw_graph instance at 0x16F10D50>, <raw_graphs.raw_graph instance at 0x16F10F08>, <raw_graphs.raw_graph instance at 0x16F1B120>, <raw_graphs.raw_graph instance at 0x16F1B2D8>, <raw_graphs.raw_graph instance at 0x16F1B468>, <raw_graphs.raw_graph instance at 0x16F1B670>, <raw_graphs.raw_graph instance at 0x16F1B800>, <raw_graphs.raw_graph instance at 0x16F1BA08>, <raw_graphs.raw_graph instance at 0x16F1BB98>, <raw_graphs.raw_graph instance at 0x16F1BD78>, <raw_graphs.raw_graph instance at 0x16F1BF30>, <raw_graphs.raw_graph instance at 0x16F26170>, <raw_graphs.raw_graph instance at 0x16F26300>, <raw_graphs.raw_graph instance at 0x16F26508>, <raw_graphs.raw_graph instance at 0x16F266C0>, <raw_graphs.raw_graph instance at 0x16F268A0>, <raw_graphs.raw_graph instance at 0x16F26A80>, <raw_graphs.raw_graph instance at 0x16F26C60>, <raw_graphs.raw_graph instance at 0x16F26DF0>, <raw_graphs.raw_graph instance at 0x16F26FA8>, <raw_graphs.raw_graph instance at 0x16F301C0>, <raw_graphs.raw_graph instance at 0x16F303A0>, <raw_graphs.raw_graph instance at 0x16F30580>, <raw_graphs.raw_graph instance at 0x16F30760>, <raw_graphs.raw_graph instance at 0x16F30968>, <raw_graphs.raw_graph instance at 0x16F30AF8>, <raw_graphs.raw_graph instance at 0x16F30CB0>, <raw_graphs.raw_graph instance at 0x16F30E68>, <raw_graphs.raw_graph instance at 0x16F3B058>, <raw_graphs.raw_graph instance at 0x16F3B260>, <raw_graphs.raw_graph instance at 0x16F3B3F0>, <raw_graphs.raw_graph instance at 0x16F3B5A8>, <raw_graphs.raw_graph instance at 0x16F3B760>, <raw_graphs.raw_graph instance at 0x16F3B918>, <raw_graphs.raw_graph instance at 0x16F3BAF8>, <raw_graphs.raw_graph instance at 0x16F3BCD8>, <raw_graphs.raw_graph instance at 0x16F3BEB8>, <raw_graphs.raw_graph instance at 0x16F450D0>, <raw_graphs.raw_graph instance at 0x16F45288>, <raw_graphs.raw_graph instance at 0x16F45468>, <raw_graphs.raw_graph instance at 0x16F45620>, <raw_graphs.raw_graph instance at 0x16F45828>, <raw_graphs.raw_graph instance at 0x16F459E0>, <raw_graphs.raw_graph instance at 0x16F45B98>, <raw_graphs.raw_graph instance at 0x16F45DA0>, <raw_graphs.raw_graph instance at 0x16F45F30>, <raw_graphs.raw_graph instance at 0x16F50148>, <raw_graphs.raw_graph instance at 0x16F50328>, <raw_graphs.raw_graph instance at 0x16F50508>], 'binary_name': 'hpcenter'}


一个函数的原始特征,由old_g(discovRe方法的ACFG),g(Genius方法的ACFG),fun_feature(表示函数级别的特征的向量)三部分构成
{'entry': 0, 'fun_features': [0, 0, 0, 0, 35, 53, 0, 183, 0.0601, [], [12, 1, 1, 0, 223, 76, 1, 48, 9, 0, 4294967295L, 4294967295L, 1, 1, 1, 1, 0, 0, 4294967294L, 0, 1, 0, 10, 3, 12]], 'old_g': <networkx.classes.digraph.DiGraph object at 0x16CC7BD0>, 'g': <networkx.classes.digraph.DiGraph object at 0x16CD8F90>, 'funcname': 'sub_166C4'}


函数级别特征: # 1 function calls # 2 logic instructions # 3 TransferIns # 4 LocalVariables # 5 BB basicblocks# 6 Edges # 7 IncommingCalls# 8 Intrs# 9 between # 10 strings # 11 consts
[0, 0, 0, 0, 35, 53, 0, 183, 0.0601, [], [12, 1, 1, 0, 223, 76, 1, 48, 9, 0, 4294967295L, 4294967295L, 1, 1, 1, 1, 0, 0, 4294967294L, 0, 1, 0, 10, 3, 12]]


# 一个基本块的特征 #1'consts' 数字常量 #2'strings'字符串常量 #3'offs' offspring 字节点数量? #4'numAs' 算数指令如INC  #5'numCalls' 调用指令 #6'numIns' 指令数量 #7'numLIs' LogicInstructions 如AND #8'numTIs' 转移指令数量
{'v': [[1], [], 10, 0, 0, 2, 0, 0]}

 

 

 

posted @ 2021-11-19 16:24  Erio  阅读(1777)  评论(2编辑  收藏  举报