callgraph.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:ctf-writeups 作者: SPRITZ-Research-Group 项目源码 文件源码
def draw_cfg(funks):
    fgs = {}
    for b in funks.values():
        fg = nx.DiGraph()
        for i in b.instrs.values():
            fg.add_node(i.addr, { 'label': '{}: {}'.format(i.addr, pretty(i)) })
        for i in b.instrs.values():
            if i.opcode == INSTR_INC:
                fg.add_edge(i.addr, i.next1)
            elif i.opcode == INSTR_DEC:
                fg.add_edge(i.addr, i.next1)
                fg.add_edge(i.addr, i.next2)
            elif i.opcode == INSTR_FRK:
                fg.add_edge(i.addr, i.next2)
            elif i.opcode == INSTR_JMP:
                fg.add_edge(i.addr, i.next1)
            else:
                assert i.opcode == INSTR_RET
        fgs[b.addr] = fg

        a = nx.nx_agraph.to_agraph(fg)
        a.layout(prog='dot')
        a.draw('function_{}.png'.format(b.addr))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号