miasm
Reverse engineering framework
depgraph.py File Reference

Classes

class  depgraph.Regs
 
class  depgraph.Arch
 
class  depgraph.IRATest
 

Namespaces

 depgraph
 

Functions

def depgraph.gen_irblock (label, exprs_list)
 
def depgraph.bloc2graph (irgraph, label=False, lines=True)
 
def depgraph.dg2graph (graph, label=False, lines=True)
 
def depgraph.flatNode (node)
 
def depgraph.flatGraph (graph)
 
def depgraph.unflatGraph (flat_graph)
 
def depgraph.get_node_noidx (node)
 
def depgraph.test_result (graphA, graphB, leaves)
 
def depgraph.match_results (resultsA, resultsB, nodes)
 
def depgraph.get_flat_init_depnodes (depnodes)
 

Variables

bool depgraph.EMULATION = True
 
 depgraph.STEP_COUNTER = count()
 
 depgraph.A = ExprId("a", 32)
 
 depgraph.B = ExprId("b", 32)
 
 depgraph.C = ExprId("c", 32)
 
 depgraph.D = ExprId("d", 32)
 
 depgraph.R = ExprId("r", 32)
 
 depgraph.COND = ExprId("cond", 32)
 
 depgraph.A_INIT = ExprId("a_init", 32)
 
 depgraph.B_INIT = ExprId("b_init", 32)
 
 depgraph.C_INIT = ExprId("c_init", 32)
 
 depgraph.D_INIT = ExprId("d_init", 32)
 
 depgraph.PC = ExprId("pc", 32)
 
 depgraph.SP = ExprId("sp", 32)
 
 depgraph.CST0 = ExprInt(0x0, 32)
 
 depgraph.CST1 = ExprInt(0x1, 32)
 
 depgraph.CST2 = ExprInt(0x2, 32)
 
 depgraph.CST3 = ExprInt(0x3, 32)
 
 depgraph.CST22 = ExprInt(0x22, 32)
 
 depgraph.CST23 = ExprInt(0x23, 32)
 
 depgraph.CST24 = ExprInt(0x24, 32)
 
 depgraph.CST33 = ExprInt(0x33, 32)
 
 depgraph.CST35 = ExprInt(0x35, 32)
 
 depgraph.CST37 = ExprInt(0x37, 32)
 
 depgraph.LBL0 = loc_db.add_location("lbl0", 0)
 
 depgraph.LBL1 = loc_db.add_location("lbl1", 1)
 
 depgraph.LBL2 = loc_db.add_location("lbl2", 2)
 
 depgraph.LBL3 = loc_db.add_location("lbl3", 3)
 
 depgraph.LBL4 = loc_db.add_location("lbl4", 4)
 
 depgraph.LBL5 = loc_db.add_location("lbl5", 5)
 
 depgraph.LBL6 = loc_db.add_location("lbl6", 6)
 
 depgraph.DNA = DependencyNode(LBL2, A, 0)
 
 depgraph.DNB = DependencyNode(LBL1, B, 1)
 
 depgraph.DNC = DependencyNode(LBL1, C, 0)
 
 depgraph.DNB2 = DependencyNode(LBL1, B, 1)
 
 depgraph.DNC2 = DependencyNode(LBL1, C, 0)
 
 depgraph.DNB3 = DependencyNode(LBL1, B, 1)
 
 depgraph.DNC3 = DependencyNode(LBL1, C, 0)
 
 depgraph.IRA = IRATest(loc_db)
 
 depgraph.IRDst = IRA.IRDst
 
 depgraph.END = ExprId("END", IRDst.size)
 
 depgraph.G1_IRA = IRA.new_ircfg()
 
def depgraph.G1_IRB0 = gen_irblock(LBL0, [[ExprAssign(C, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G1_IRB1 = gen_irblock(LBL1, [[ExprAssign(B, C), ExprAssign(IRDst, ExprLoc(LBL2, 32))]])
 
def depgraph.G1_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, B), ExprAssign(IRDst, END)]])
 
 depgraph.G2_IRA = IRA.new_ircfg()
 
def depgraph.G2_IRB0 = gen_irblock(LBL0, [[ExprAssign(C, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G2_IRB1 = gen_irblock(LBL1, [[ExprAssign(B, CST2), ExprAssign(IRDst, ExprLoc(LBL2, 32))]])
 
def depgraph.G2_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, B + C), ExprAssign(IRDst, END)]])
 
 depgraph.G3_IRA = IRA.new_ircfg()
 
def depgraph.G3_IRB0
 
def depgraph.G3_IRB1 = gen_irblock(LBL1, [[ExprAssign(B, CST2), ExprAssign(IRDst, ExprLoc(LBL3, 32))]])
 
def depgraph.G3_IRB2 = gen_irblock(LBL2, [[ExprAssign(B, CST3), ExprAssign(IRDst, ExprLoc(LBL3, 32))]])
 
def depgraph.G3_IRB3 = gen_irblock(LBL3, [[ExprAssign(A, B + C), ExprAssign(IRDst, END)]])
 
 depgraph.G4_IRA = IRA.new_ircfg()
 
def depgraph.G4_IRB0 = gen_irblock(LBL0, [[ExprAssign(C, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G4_IRB1
 
def depgraph.G4_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, B), ExprAssign(IRDst, END)]])
 
 depgraph.G5_IRA = IRA.new_ircfg()
 
def depgraph.G5_IRB0 = gen_irblock(LBL0, [[ExprAssign(B, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G5_IRB1
 
def depgraph.G5_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, B), ExprAssign(IRDst, END)]])
 
 depgraph.G6_IRA = IRA.new_ircfg()
 
def depgraph.G6_IRB0 = gen_irblock(LBL0, [[ExprAssign(B, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G6_IRB1 = gen_irblock(LBL1, [[ExprAssign(A, B), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
 depgraph.G7_IRA = IRA.new_ircfg()
 
def depgraph.G7_IRB0 = gen_irblock(LBL0, [[ExprAssign(C, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G7_IRB1
 
def depgraph.G7_IRB2 = gen_irblock(LBL2, [[ExprAssign(D, A), ExprAssign(IRDst, END)]])
 
 depgraph.G8_IRA = IRA.new_ircfg()
 
def depgraph.G8_IRB0 = gen_irblock(LBL0, [[ExprAssign(C, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G8_IRB1
 
def depgraph.G8_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, B), ExprAssign(IRDst, END)]])
 
 depgraph.G10_IRA = IRA.new_ircfg()
 
def depgraph.G10_IRB1
 
def depgraph.G10_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, B), ExprAssign(IRDst, END)]])
 
 depgraph.G11_IRA = IRA.new_ircfg()
 
def depgraph.G11_IRB0
 
def depgraph.G11_IRB1
 
def depgraph.G11_IRB2 = gen_irblock(LBL2, [[ExprAssign(A, A - B), ExprAssign(IRDst, END)]])
 
 depgraph.G12_IRA = IRA.new_ircfg()
 
def depgraph.G12_IRB0 = gen_irblock(LBL0, [[ExprAssign(B, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G12_IRB1
 
def depgraph.G12_IRB2 = gen_irblock(LBL2, [[ExprAssign(B, A), ExprAssign(IRDst, END)]])
 
 depgraph.G13_IRA = IRA.new_ircfg()
 
def depgraph.G13_IRB0
 
def depgraph.G13_IRB1
 
def depgraph.G13_IRB2
 
def depgraph.G13_IRB3 = gen_irblock(LBL3, [[ExprAssign(R, C), ExprAssign(IRDst, END)]])
 
 depgraph.G14_IRA = IRA.new_ircfg()
 
def depgraph.G14_IRB0
 
def depgraph.G14_IRB1
 
def depgraph.G14_IRB2
 
def depgraph.G14_IRB3 = gen_irblock(LBL3, [[ExprAssign(R, D + B), ExprAssign(IRDst, END)]])
 
 depgraph.G15_IRA = IRA.new_ircfg()
 
def depgraph.G15_IRB0 = gen_irblock(LBL0, [[ExprAssign(A, CST1), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G15_IRB1
 
def depgraph.G15_IRB2 = gen_irblock(LBL2, [[ExprAssign(R, B), ExprAssign(IRDst, END)]])
 
 depgraph.G16_IRA = IRA.new_ircfg()
 
def depgraph.G16_IRB0
 
def depgraph.G16_IRB1
 
def depgraph.G16_IRB2 = gen_irblock(LBL2, [[ExprAssign(D, A), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G16_IRB3 = gen_irblock(LBL3, [[ExprAssign(R, D), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G16_IRB4 = gen_irblock(LBL4, [[ExprAssign(R, A), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
def depgraph.G16_IRB5 = gen_irblock(LBL5, [[ExprAssign(R, A), ExprAssign(IRDst, ExprLoc(LBL1, 32))]])
 
 depgraph.G17_IRA = IRA.new_ircfg()
 
def depgraph.G17_IRB0
 
def depgraph.G17_IRB1
 
def depgraph.G17_IRB2
 
 depgraph.G1_TEST1_DN1
 
tuple depgraph.G1_INPUT = (set([G1_TEST1_DN1]), set([G1_IRB0.loc_key]))
 
 depgraph.G2_TEST1_DN1
 
tuple depgraph.G2_INPUT = (set([G2_TEST1_DN1]), set([G2_IRB0.loc_key]))
 
 depgraph.G3_TEST1_0_DN1
 
tuple depgraph.G3_INPUT = (set([G3_TEST1_0_DN1]), set([G3_IRB0.loc_key]))
 
 depgraph.G4_TEST1_DN1
 
tuple depgraph.G4_INPUT = (set([G4_TEST1_DN1]), set([G4_IRB0.loc_key]))
 
 depgraph.G5_TEST1_0_DN1
 
tuple depgraph.G5_INPUT = (set([G5_TEST1_0_DN1]), set([G5_IRB0.loc_key]))
 
 depgraph.G6_TEST1_0_DN1
 
tuple depgraph.G6_INPUT = (set([G6_TEST1_0_DN1]), set([G6_IRB0.loc_key]))
 
 depgraph.G7_TEST1_0_DN1
 
tuple depgraph.G7_INPUT = (set([G7_TEST1_0_DN1]), set([G7_IRB0.loc_key]))
 
 depgraph.G8_TEST1_0_DN1
 
tuple depgraph.G8_INPUT = (set([G8_TEST1_0_DN1]), set([G3_IRB0.loc_key]))
 
 depgraph.G9_TEST1_0_DN1
 
 depgraph.G9_TEST1_0_DN5
 
tuple depgraph.G9_INPUT = (set([G9_TEST1_0_DN1, G9_TEST1_0_DN5]), set([G8_IRB0.loc_key]))
 
 depgraph.G10_TEST1_0_DN1
 
tuple depgraph.G10_INPUT = (set([G10_TEST1_0_DN1]), set([G10_IRB1.loc_key]))
 
 depgraph.G11_TEST1_DN1
 
tuple depgraph.G11_INPUT = (set([G11_TEST1_DN1]), set([G11_IRB0.loc_key]))
 
 depgraph.G12_TEST1_0_DN1 = DependencyNode(G12_IRB2.loc_key, B, 1)
 
tuple depgraph.G12_INPUT = (set([G12_TEST1_0_DN1]), set([]))
 
 depgraph.G13_TEST1_0_DN4 = DependencyNode(G13_IRB3.loc_key, R, 1)
 
tuple depgraph.G13_INPUT = (set([G13_TEST1_0_DN4]), set([]))
 
 depgraph.G14_TEST1_0_DN1 = DependencyNode(G14_IRB3.loc_key, R, 1)
 
tuple depgraph.G14_INPUT = (set([G14_TEST1_0_DN1]), set([]))
 
 depgraph.G15_TEST1_0_DN1 = DependencyNode(G15_IRB2.loc_key, R, 1)
 
tuple depgraph.G15_INPUT = (set([G15_TEST1_0_DN1]), set([]))
 
 depgraph.G16_TEST1_0_DN1 = DependencyNode(G16_IRB5.loc_key, R, 1)
 
tuple depgraph.G16_INPUT = (set([G16_TEST1_0_DN1]), set([]))
 
 depgraph.G17_TEST1_DN1 = DependencyNode(G17_IRB2.loc_key, A, 1)
 
tuple depgraph.G17_INPUT = (set([G17_TEST1_DN1]), set([]))
 
 depgraph.FAILED = set()
 
list depgraph.flat_test_results
 
list depgraph.test_results
 
list depgraph.all_flats = []
 
 depgraph.depnodes
 
 depgraph.heads
 
list depgraph.suffix_key_list
 
list depgraph.mode_suffix = suffix_key_list[g_ind]
 
string depgraph.graph_test_key = "graph" + mode_suffix
 
 depgraph.all_results = set()
 
 depgraph.all_flat = set()
 
def depgraph.flat_depnodes = get_flat_init_depnodes(depnodes)
 
 depgraph.test_num
 
 depgraph.end