首页 > 代码库 > 遍历一个函数在程序中的所有交叉引用
遍历一个函数在程序中的所有交叉引用
//遍历一个函数在程序中的所有交叉引用//#include <idc.idc>static main(){ list_callers("_memset"); list_callers("_sprintf");}static list_callers(bad_func){ auto func,addr,xref,source; func = LocByName(bad_func); //通过函数名查找函数的地址 Message("func addr is : 0x%x ",func); if(func == BADADDR) { Warning("Sorry,%s not found in database",bad_func); } else { //RfirstB是获取第一个从它开始的代码引用(就是调用了这个函数的地址) for(addr = RfirstB(func); addr != BADADDR ; addr = RnextB(func,addr)) { xref = XrefType(); //获取交叉类型 if(xref == fl_CN || xref == fl_CF) { source = GetFunctionName(addr); //获取这个地址所在的是那一个函数里 Message("%s is called from 0x%x in %s\n",bad_func,addr,source); } } }}
结果如下:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。