def down(func):
'''Return all the functions that are called by the function ``func``.'''
def codeRefs(fn):
resultData,resultCode = [],[]
for ea in iterate(fn):
if len(database.down(ea)) == 0:
if database.type.is_code(ea) and _instruction.is_call(ea):
logging.warn('{:s}.down({:x}) : Discovered a dynamically resolved call that is unable to be resolved. : {:s}'.format(__name__, fn.startEA, database.disasm(ea)))
#resultCode.append((ea, 0))
continue
resultData.extend( (ea,x) for x in database.dxdown(ea) )
resultCode.extend( (ea,x) for x in database.cxdown(ea) if fn.startEA == x or not contains(fn,x) )
return resultData,resultCode
fn = by(func)
return sorted(set(d for x,d in codeRefs(fn)[1]))
评论列表
文章目录