コード例 #1
0
cont = Container.fallback_container(data, None, addr=0)

machine = Machine("x86_64")
dis_engine, ira = machine.dis_engine, machine.ira

mdis = dis_engine(cont.bin_stream, symbol_pool=cont.symbol_pool)
addr_head = 0
blocks = mdis.dis_multiblock(addr_head)
lbl_head = mdis.symbol_pool.getby_offset(addr_head)

ir_arch_a = ira(mdis.symbol_pool)
for block in blocks:
    ir_arch_a.add_block(block)

open('graph_irflow.dot', 'w').write(ir_arch_a.graph.dot())

# Main function's first argument's type is "struct ll_human*"
ptr_llhuman = types_mngr.get_objc(CTypePtr(CTypeStruct('ll_human')))
arg0 = ExprId('ptr', 64)
ctx = {ir_arch_a.arch.regs.RDI: arg0}
expr_types = {arg0: (ptr_llhuman,),
              ExprInt(0x8A, 64): (ptr_llhuman,)}

mychandler = MyCHandler(types_mngr, expr_types)

for expr in get_funcs_arg0(ctx, ir_arch_a, lbl_head):
    print "Access:", expr
    for c_str, ctype in mychandler.expr_to_c_and_types(expr):
        print '\taccess:', c_str
        print '\tc type:', ctype
コード例 #2
0
        unsigned int length;
        struct line* line;
};
"""

# Type manager for x86 64: structures not packed
base_types = CTypeAMD64_unk()
types_ast = CAstTypes()

# Add C types definition
types_ast.add_c_decl(text)

types_mngr = CTypesManagerNotPacked(types_ast, base_types)

# Create the ptr variable with type "struct rectangle*"
ptr_rectangle = types_mngr.get_objc(CTypePtr(CTypeStruct('rectangle')))

ptr = ExprId('ptr', 64)
c_context = {ptr.name: ptr_rectangle}
mychandler = CHandler(types_mngr, {})

# Parse some C accesses
c_acceses = [
    "ptr->width", "ptr->length", "ptr->line", "ptr->line->color",
    "ptr->line->color[3]", "ptr->line->size"
]

for c_str in c_acceses:
    expr = mychandler.c_to_expr(c_str, c_context)
    c_type = mychandler.c_to_type(c_str, c_context)
    print 'C access:', c_str
コード例 #3
0
ファイル: access_c.py プロジェクト: guedou/miasm
cont = Container.fallback_container(data, None, addr=0)

machine = Machine("x86_64")
dis_engine, ira = machine.dis_engine, machine.ira

mdis = dis_engine(cont.bin_stream, symbol_pool=cont.symbol_pool)
addr_head = 0
asmcfg = mdis.dis_multiblock(addr_head)
lbl_head = mdis.symbol_pool.getby_offset(addr_head)

ir_arch_a = ira(mdis.symbol_pool)
for block in asmcfg.blocks:
    ir_arch_a.add_block(block)

open('graph_irflow.dot', 'w').write(ir_arch_a.graph.dot())

# Main function's first argument's type is "struct ll_human*"
ptr_llhuman = types_mngr.get_objc(CTypePtr(CTypeStruct('ll_human')))
arg0 = ExprId('ptr', 64)
ctx = {ir_arch_a.arch.regs.RDI: arg0}
expr_types = {arg0: (ptr_llhuman,),
              ExprInt(0x8A, 64): (ptr_llhuman,)}

mychandler = MyCHandler(types_mngr, expr_types)

for expr in get_funcs_arg0(ctx, ir_arch_a, lbl_head):
    print "Access:", expr
    for c_str, ctype in mychandler.expr_to_c_and_types(expr):
        print '\taccess:', c_str
        print '\tc type:', ctype
コード例 #4
0
        int b;
};

"""
base_types = CTypeAMD64_unk()
types_ast = CAstTypes()

# Add C types definition
types_ast.add_c_decl(text_1)
types_ast.add_c_decl(text_2)

types_mngr = CTypesManagerNotPacked(types_ast, base_types)

for type_id, type_desc in types_mngr.types_ast._types.iteritems():
    print type_id
    obj = types_mngr.get_objc(type_id)
    print obj
    print repr(obj)
    types_mngr.check_objc(obj)

for type_id, type_desc in types_mngr.types_ast._typedefs.iteritems():
    print type_id
    obj = types_mngr.get_objc(type_id)
    print obj
    print repr(obj)
    types_mngr.check_objc(obj)

void_ptr = types_mngr.void_ptr

obj_dummy = types_mngr.get_objc(CTypeId("dummy"))
obj_int = types_mngr.get_objc(CTypeId("int"))
コード例 #5
0
ファイル: test_chandler.py プロジェクト: commial/miasm
};

"""
base_types = CTypeAMD64_unk()
types_ast = CAstTypes()

# Add C types definition
types_ast.add_c_decl(text_1)
types_ast.add_c_decl(text_2)


types_mngr = CTypesManagerNotPacked(types_ast, base_types)

for type_id, type_desc in types_mngr.types_ast._types.iteritems():
    print type_id
    obj = types_mngr.get_objc(type_id)
    print obj
    print repr(obj)
    types_mngr.check_objc(obj)

for type_id, type_desc in types_mngr.types_ast._typedefs.iteritems():
    print type_id
    obj = types_mngr.get_objc(type_id)
    print obj
    print repr(obj)
    types_mngr.check_objc(obj)

void_ptr = types_mngr.void_ptr

obj_dummy = types_mngr.get_objc(CTypeId("dummy"))
obj_int = types_mngr.get_objc(CTypeId("int"))
コード例 #6
0
ファイル: expr_c.py プロジェクト: commial/miasm
        unsigned int length;
        struct line* line;
};
"""

# Type manager for x86 64: structures not packed
base_types = CTypeAMD64_unk()
types_ast = CAstTypes()

# Add C types definition
types_ast.add_c_decl(text)

types_mngr = CTypesManagerNotPacked(types_ast, base_types)

# Create the ptr variable with type "struct rectangle*"
ptr_rectangle = types_mngr.get_objc(CTypePtr(CTypeStruct('rectangle')))

ptr = ExprId('ptr', 64)
c_context = {ptr.name: ptr_rectangle}
mychandler = CHandler(types_mngr, {})

# Parse some C accesses
c_acceses = ["ptr->width",
             "ptr->length",
             "ptr->line",
             "ptr->line->color",
             "ptr->line->color[3]",
             "ptr->line->size"
            ]

for c_str in c_acceses: