import idaapi # ----------------------------------------------------------------------- # Using raw IDAAPI def raw_main(p=True): f = idaapi.get_func(here()) if not f: return q = idaapi.qflow_chart_t("The title", f, 0, 0, idaapi.FC_PREDS) for n in xrange(0, q.size()): b = q[n] if p: print "%x - %x [%d]:" % (b.startEA, b.endEA, n) for ns in xrange(0, q.nsucc(n)): if p: print " %d->%d" % (n, q.succ(n, ns)) for ns in xrange(0, q.npred(n)): if p: print " %d->%d" % (n, q.pred(n, ns)) # ----------------------------------------------------------------------- # Using the class def cls_main(p=True): f = idaapi.FlowChart(idaapi.get_func(here())) for block in f: if p: print "%x - %x [%d]:" % (block.startEA, block.endEA, block.id) for succ_block in block.succs(): if p: print " %x - %x [%d]:" % (succ_block.startEA, succ_block.endEA, succ_block.id) for pred_block in block.preds(): if p: print " %x - %x [%d]:" % (pred_block.startEA, pred_block.endEA, pred_block.id) q = None f = None raw_main(False) cls_main(True)